6.4. 创建自定义策略


除了使用默认策略外,您还可以在 Red Hat Advanced Cluster Security for Kubernetes 中创建自定义策略。

要构建新策略,您可以克隆现有策略或从头开始创建一个新策略。

  • 您还可以根据 RHACS 门户中的 Risk 视图中的过滤器标准创建策略。
  • 您还可以在策略条件中使用 AND, OR, 和 NOT 逻辑运算符来创建高级策略。

6.4.1. 从系统策略视图创建安全策略

您可以从系统策略视图创建新的安全策略。

流程

  1. 在 RHACS 门户网站中,进入到 Platform Configuration Policies
  2. 点击 Create policy
  3. Policy details 部分中,输入以下有关您的策略的详细信息:

    • 输入策略的 Name
    • 可选:通过从 Attach notifiers 部分下的可用 Notifiers 选择,将通知程序附加到策略。

      注意

      在转发警报前,您必须将 Red Hat Advanced Cluster Security for Kubernetes 与通知供应商集成,如 Webhook、JIRA、Pageruty、PagerDuty、Spluty、Splunk 等。

    • 选择 此策略的严重性级别,可以是 CriticalHighMediumLow
    • 选择您要 应用到 此策略的策略类别。
    • Description 框中输入策略详情。
    • 输入有关在 Rationale 框中存在策略的原因的说明。
    • Guidance 框中输入步骤来解决此策略的违反情况。
    • 可选:在 MITRE ATT&CK 部分中,选择您需要为策略指定的 tactics and the techniques

      1. 单击 Add tactic,然后从下拉列表中选择 tactic。
      2. Add Technology,为所选 tactic 添加技术。您可以为 tactic 指定多种技术。
  4. 点击 Next
  5. Policy behavior 部分,为策略选择 Lifecycle stagesEvent sources (Runtime lifecycle only)

    • 选择适用于策略的生命周期阶段Build, Deploy, 或 Runtime。您可以选择多个阶段。

      • 构建时策略适用于镜像字段,如 CVE 和 Dockerfile 指令。
      • deploy-time 策略可包括所有构建时策略标准,但它们也可以包含集群配置中的数据,如以特权模式运行或挂载 Docker 套接字。
      • 运行时策略可以包含所有构建时间和部署时间策略标准,但它们也可以包含运行时进程执行的数据。
  6. 对于 Response 方法,可以选择:

    1. inform 在违反情况列表中包括违反情况。
    2. 或者选择 Inform and enforce to enforce 操作。

      • 选择策略的强制行为。它仅适用于您在配置 Lifecycle Stages 时选择的阶段。选择 ON (enable)来强制执行策略并报告违反情况,OFF (disable)仅报告违反情况。每个生命周期阶段的强制行为都有所不同。

        • Build - 当镜像与策略条件匹配时,Red Hat Advanced Cluster Security for Kubernetes 无法构建您的持续集成(CI)。
        • Deploy - Red Hat Advanced Cluster Security for Kubernetes 会阻止创建与策略条件匹配的部署。在带有准入控制器强制的集群中,Kubernetes 或 OpenShift Container Platform API 服务器会阻止所有不合规的部署。在其他集群中,Red Hat Advanced Cluster Security for Kubernetes 编辑不合规的部署,以防止调度 pod。
        • Runtime - Red Hat Advanced Cluster Security for Kubernetes 会终止与策略条件匹配的所有 pod,或阻止 pod 上执行的操作。

          警告

          策略实施可能会影响运行应用程序或开发流程。在启用强制选项前,请通知所有利益相关者,并计划如何响应自动执行操作。

  7. 点击 Next
  8. Policy Criteria 部分中,配置您要触发该策略的属性。
  9. 点击 Next
  10. Policy scope 部分中,配置以下内容:

    • Add inclusion scope 使用 Restrict to Scope 仅对特定集群、命名空间或标签启用此策略。您可以添加多个范围,还可在 RE2 语法中使用正则表达式进行命名空间和标签。
    • Add excluded scope 来使用 Exclude by Scope 来排除您指定的部署、集群、命名空间和标签,这意味着策略不会应用到您选择的实体。您可以添加多个范围,还可在 RE2 语法中使用正则表达式进行命名空间和标签。但是,您无法使用正则表达式来选择部署。
    • 对于 Excluded Images (仅限构建生命周期), 请选择您不想触发违反的所有镜像。

      注意

      Excluded Images 设置仅在使用 Build 生命周期阶段检查持续集成系统中的镜像时适用。如果您使用此策略检查 Deploy 生命周期阶段中运行的部署,或检查在 Runtime 生命周期阶段中的运行时活动时,则不会生效。

  11. 点击 Next
  12. Review policy 部分中,预览策略违反情况。
  13. 点击 Save

6.4.2. 从 risk 视图创建安全策略

风险视图中评估部署的风险时,当您应用本地页面过滤时,您可以根据您使用的过滤标准创建新的安全策略。

流程

  1. 进入 RHACS 门户并从导航菜单中选择 Risk
  2. 应用您要为其创建策略的本地页面过滤条件。
  3. 选择 New Policy 并填写所需字段以创建新策略。

6.4.3. 策略标准

Policy Criteria 部分中,您可以配置要触发策略的数据。

您可以根据下表中列出的属性来配置策略。

在这个表中:

  • Regular expressions, AND, OR, 和 NOT 列指示您可以使用正则表达式和其他逻辑运算符以及特定的属性。

    • !正则表达式 列中表示您只能对列出的字段使用正则表达式。
    • !AND, OR 列中表示您只能将上述逻辑运算符用于属性。
  • RHACS 版本 列指示必须使用该属性的 Red Hat Advanced Cluster Security for Kubernetes 版本。
  • 对于满足以下条件的属性,不能使用运算符 ANDOR 的组合:

    • 布尔值 truefalse
    • 最低值语义,例如:

      • 最低 RBAC 权限
      • 自镜像创建以来的天数
  • 您不能将 NOT 逻辑运算符用于具有以下属性:

    • 布尔值 truefalse
    • 已使用进行比较(如 <, >, <=, >= 操作符)的数字值。
    • compound 条件可以有多个值,例如:

      • Dockerfile 行,其中包含指令和参数。
      • 环境变量,由名称和值组成。
    • 其他含义,包括 Add CapabilitiesDrop Capabilities自镜像创建后的第一天,以及 自镜像上次扫描以来的日期
注意

要使用逻辑运算符 AND 不用于 创建安全策略,您需要 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.45 或更新版本。但是,在早期版本中,您仍然可以对 Regular 表达式 列中列出的字段使用正则表达式。

Expand
属性DescriptionRHACS 版本正则表达式AND, OR阶段

命名空间

命名空间的名称。

3.0.51 及更新版本

部署

镜像 Registry

镜像 registry 的名称。

All

部署

镜像远程

registry 中镜像的全名,如 library/nginx

All

部署

镜像标签

镜像的标识符。

All

部署

自镜像创建以来的天数

镜像创建日期的天数。

All

Build

自镜像上次扫描以来的天数

最后一次镜像扫描以来的天数。

All

Build

Dockerfile 行

Dockerfile 中的特定行,包括指令和参数。

All

! 只适用于值

Build

镜像没有扫描

镜像没有可用的扫描数据。

All

Build

CVSS

通用漏洞评分系统,使用它来匹配分数大于 >、小于 < , 或等于 = 指定的 CVSS 的漏洞的镜像。

All

Build

修复人

修复镜像中标记的漏洞的软件包版本字符串。

All

Build

CVE

常见的漏洞和风险,将其与特定 CVE 编号一起使用。

All

Build

镜像组件

镜像中存在的特定软件组件的名称和版本号。

All

Build

镜像操作系统

镜像基础操作系统的名称和版本号。

3.0.47 及更新版本

Build

环境变量

根据名称或值检查环境变量。

All

! 只用于键和值

部署

不允许注解

不允许在指定环境中的 Kubernetes 资源中存在的注解。

All

部署

不允许的镜像标签

检查是否存在不应在使用中的 Docker 镜像标签。如果部署中的任何镜像具有指定标签,则策略会触发。您可以对 keyvalue 字段使用正则表达式来匹配标签。Disallowed Image Label 策略条件仅在与 Docker registry 集成时才有效。

3.0.40 及更新版本

部署

所需的镜像标签

检查是否存在所需的 Docker 镜像标签。如果部署中的任何镜像没有指定标签,则策略会触发。您可以对 keyvalue 字段使用正则表达式来匹配标签。只有在与 Docker registry 集成时,所需的 Image Label 策略条件才可以正常工作。

3.0.40 及更新版本

部署

所需的标签

检查 Kubernetes 中是否存在所需的标签。

All

部署

必需注解

检查 Kubernetes 中是否存在所需的注解。

All

部署

卷名称

存储的名称。

All

部署

卷源

指明置备卷的表单。例如: persistentVolumeClaimhostPath

All

部署

卷目的地

挂载卷的路径。

All

部署

卷类型

卷的类型。

All

部署

可写卷

挂载为可写的卷。

All

部署

协议

公开端口使用的协议,如 TCP 或 UDP。

All

部署

端口

部署公开的端口号。

All

部署

Privileged

特权运行部署。

All

部署

只读 Root 文件系统

使用 root 文件系统运行的容器配置为只读。

All

部署

drop Capabilities

必须从容器中丢弃的 Linux 功能。例如 CAP_SETUIDCAP_NET_RAW

All

部署

添加功能

不得添加到容器中的 Linux 功能,例如能够发送原始数据包或覆盖文件权限。

All

部署

进程名称

部署中执行的进程的名称。

All

Runtime

Process Ancestor

部署中执行进程的任何父进程的名称。

All

Runtime

进程参数

部署中执行进程的命令参数。

All

Runtime

进程 UID

部署期间执行的进程的 UNIX 用户 ID。

All

Runtime

端口公开

服务的暴露方法,如负载均衡器或节点端口。

All

部署

服务帐户

服务帐户的名称。

All

部署

可写主机挂载

资源已在主机上挂载了具有写入权限的路径。

All

部署

执行意外的进程

检查进程执行没有在部署锁定的进程基准中列出的部署。

All

Runtime

最低 RBAC 权限

如果部署的 Kubernetes 服务帐户等于 = 或高于>指定的级别,则匹配。

All

部署

容器名称

容器的名称。

3.0.52 及更新版本

部署

容器 CPU 请求

检查为给定资源保留的内核数。

All

部署

容器 CPU 限制

检查允许资源使用的最大内核数。

All

部署

容器内存请求

检查为给定资源保留的内存量。

All

部署

容器内存限制

检查允许资源使用的最大内存量。

All

部署

Kubernetes 操作

Kubernetes 操作的名称,如 Pod Exec

3.0.55 及更新版本

!仅限 or only

Runtime

Kubernetes 资源

访问的 Kubernetes 资源的名称,如 configmapssecret

3.63 及更新版本

!仅限 or only

Runtime

Kubernetes 资源名称

访问的 Kubernetes 资源的名称。

3.63 及更新版本

!仅限 or only

Runtime

Kubernetes API Verb

用于访问资源的 Kubernetes API 动词,如 GETPOST

3.63 及更新版本

!仅限 or only

Runtime

Kubernetes 用户名

访问资源的用户的名称。

3.63 及更新版本

!仅限 or only

Runtime

Kubernetes 用户组

访问资源所属用户的组名称。

3.63 及更新版本

!仅限 or only

Runtime

用户代理

用于访问资源的用户代理。例如,oc,或 kubectl

3.63 及更新版本

!仅限 or only

Runtime

源 IP 地址

用户从中访问资源的 IP 地址。

3.63 及更新版本

!仅限 or only

Runtime

是 Impersonated User

检查请求是否由服务帐户或某些其他帐户模拟。

3.63 及更新版本

Runtime

运行时类

部署的 RuntimeClass。

3.67 及更新版本

部署

自动挂载服务帐户令牌

检查部署配置是否自动挂载服务帐户令牌。

3.68 及更新版本

部署

存活度(Liveness)探测

容器是否定义了存活度探测。

3.69 及更新版本

部署

就绪度(Readiness)探测

容器是否定义了就绪度探测。

3.69 及更新版本

部署

Replicas

部署副本数量。

3.69 及更新版本

部署

权限升级

在配置了开发时提供警报,以允许容器进程获得比父进程更多的特权。

3.70 及更新的版本

部署

Ingress 网络策略

检查入口 Kubernetes 网络策略是否存在。

3.70 及更新的版本

部署

出口网络策略

检查出口 Kubernetes 网络策略是否存在。

3.70 及更新的版本

部署

未由可信镜像签名者验证

可用于验证镜像签名的签名集成列表。在没有签名或其签名的镜像上创建警报,至少可以由其中一个提供的签名集成来验证。

3.70 及更新的版本

!仅限 or only

部署

注意

如果您使用 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.44 或更早版本,则您在 Policy criteria 部分指定的策略条件会被"AND"。这意味着,如果所有指定的策略条件都匹配,则违反仅触发。

6.4.3.1. 为策略条件添加逻辑条件

您可以使用 drag-and-drop 策略字段面板指定策略标准的逻辑条件。

先决条件

  • 您必须使用 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.45 或更新版本。

流程

  1. Policy Criteria 部分中,选择 Add a new condition 来添加新策略部分。

    • 您可以点 Edit 图标重命名 policy 部分。
    • Drag out a policy 字段 部分列出了多个类别中的可用策略标准。您可以扩展和折叠这些类别,以查看策略标准属性。
  2. 将属性拖到 Drop a policy 字段 到 policy 部分的区域。
  3. 根据您选择的属性的类型,您可以获得不同的选项来配置所选属性的条件。例如:

    • 如果您选择了带有布尔值 Read-Only Root Filesystem 的属性,您会看到 READ-ONLYWRITABLE 选项。
    • 如果您选择了带有复合值 环境变量的属性,您会看到输入 KeyValueValue From 字段的值的选项,以及一个图标,以为可用选项添加更多值。

      1. 要组合一个属性的多个值,请点 Add 图标。
      2. 您也可以点策略部分中列出的逻辑运算符 ANDOR,以在 ANDOR 运算符之间进行切换。在 Operator 间的切换只在策略部分内工作,而不是在两个不同的策略部分之间工作。
  4. 您可以通过重复这些步骤来指定多个 ANDOR 条件。为添加的属性配置条件后,点 Next 继续创建策略。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat