5.4. 创建自定义策略


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

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

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

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

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

流程

  1. 在 RHACS 门户网站中,导航至 Platform Configuration Policies
  2. 点击 Create policy
  3. Policy details 部分输入策略的详情:

    • 为策略输入一个 Name
    • 可选:从 Attach notifiers 部分的 available Notifiers 部分中选择将通知附加到策略。

      注意

      在转发警报前,您必须将 Red Hat Advanced Cluster Security for Kubernetes 与通知提供程序集成,如 Webhook、JIRA、Pageruty、Splunk 或其他。

    • 为这个策略选择一个 严重级别,可以是 CriticalHighMediumLow
    • 选择您要 应用到 此策略的策略类别。
    • Description 框中输入策略详情。
    • 输入有关在 Rationale 框中存在策略的原因。
    • Guidance 框中输入解决此策略的违反情况的步骤。
    • 可选:在 MITRE ATT&CK 部分,选择您要为策略指定的技巧和您要指定的 技术

      1. 单击 Add tactic,然后从下拉列表中选择 tactic。
      2. 单击 Add 技术 来为所选的 Tactic 添加技术。您可以为 tactic 指定多种技术。
  4. 点击 Next
  5. Policy 行为 部分中,为策略选择 Lifecycle 阶段事件源(仅限运行时生命周期 )。

    • BuildDeployRuntime 中选择适合您的策略的 Lifecycle Stage。您可以选择多个阶段。

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

    1. 用于在 违反列表中包括违反情况。
    2. 或选择 Inform and enforce 强制执行操作。

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

        • Build - 当镜像与策略条件匹配时,Red Hat Advanced Cluster Security for Kubernetes Kubernetes 的持续集成(CI)构建会失败。
        • Deployment - 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 included Scope 来使用 Restrict to Scope,以便仅对特定集群、命名空间或标签启用此策略。您可以添加多个范围,并在 RE2 语法中为命名空间 和标签使用正则表达式。
    • Add exclusion 范围 使用 Scope 排除部署、集群、命名空间和标签,这意味着策略不会应用到您选择的实体。您可以添加多个范围,并在 RE2 语法中为命名空间 和标签使用正则表达式。但是,您不能使用正则表达式来选择部署。
    • 对于 排除的镜像(仅Build Lifecycle),请选择您不想触发违反情况的所有镜像。

      注意

      排除的镜像 设置只在您通过 Build 生命周期阶段连续集成系统中检查镜像时应用。如果您使用此策略检查 Deploy 生命周期阶段中运行的部署,或检查在 Runtime 生命周期阶段中的运行时活动时,则不会生效。

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

5.4.2. 从风险视图中创建安全策略

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

流程

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

5.4.3. 策略标准

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

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

在此表中:

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

    • !Regular 表达式 列中,表示您只能对列出的字段使用正则表达式。
    • !AND 中,OR 列表示您只能对属性使用上述逻辑运算符。
  • RHACS 版本 列显示必须使用该属性的 Red Hat Advanced Cluster Security for Kubernetes 的版本。
  • 您不能使用逻辑组合运算符 AND 和 或 来获得以下属性:

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

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

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

      • Dockerfile 行,其中包括 instructions 和 参数。
      • 环境变量,由名称和值组成。
    • 其他含义,包括 添加功能Drop Capabilities自镜像创建起日,以及 自镜像上次扫描起的天数
注意

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

Expand
属性描述RHACS 版本正则表达式NOT和,或者阶段

命名空间

命名空间的名称。

3.0.51 及更新版本

部署

镜像 Registry

镜像 registry 的名称。

All

部署

镜像远程

registry 中镜像的完整名称,如 library/nginx

All

部署

镜像标签

镜像的标识符。

All

部署

自镜像创建以来的天数

镜像创建日期的天数。

All

Build

自镜像最后一次扫描的天数

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

All

Build

Dockerfile 行

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

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 集成时,所需的镜像标签 策略标准才起作用。

3.0.40 及更新版本

部署

所需标签

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

All

部署

所需注解

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

All

部署

卷名称

存储的名称。

All

部署

卷源

指明置备卷的形式。例如: persistentVolumeClaimhostPath

All

部署

卷目的地

挂载卷的路径。

All

部署

卷类型

卷的类型。

All

部署

可写卷

挂载为可写的卷。

All

部署

协议

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

All

部署

端口

由部署公开的端口号。

All

部署

privileged

运行特权的部署。

All

部署

只读根文件系统

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

All

部署

丢弃功能

必须从容器中丢弃的 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

Runtime

Kubernetes 资源

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

3.63 及更新版本

!仅限 OR

Runtime

Kubernetes 资源名称

访问的 Kubernetes 资源的名称。

3.63 及更新版本

!仅限 OR

Runtime

Kubernetes API Verb

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

3.63 及更新版本

!仅限 OR

Runtime

Kubernetes 用户名

访问该资源的用户名称。

3.63 及更新版本

!仅限 OR

Runtime

Kubernetes 用户组

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

3.63 及更新版本

!仅限 OR

Runtime

用户代理

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

3.63 及更新版本

!仅限 OR

Runtime

源 IP 地址

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

3.63 及更新版本

!仅限 OR

Runtime

是 Impersonated 用户

检查请求是否由服务帐户或者其它帐户模拟的用户进行。

3.63 及更新版本

Runtime

Runtime Class

部署 RuntimeClass。

3.67 及更新版本

部署

自动挂载服务帐户令牌

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

3.68 及更新版本

部署

存活度(Liveness)探测

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

3.69 及更新版本

部署

就绪度(Readiness)探测

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

3.69 及更新版本

部署

Replicas

部署副本数。

3.69 及更新版本

部署

权限升级

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

3.70 及更新的版本

部署

Ingress Network Policy

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

3.70 及更新的版本

部署

出口网络策略

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

3.70 及更新的版本

部署

不受可信镜像签名者验证

您可以使用签名集成列表来验证镜像签名。在镜像上创建警报,它们没有签名,或者其签名至少无法被提供的签名集成之一验证。

3.70 及更新的版本

!仅限 OR

部署

注意

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

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

您可以使用拖放策略字段面板为策略标准指定逻辑条件。

先决条件

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

流程

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

    • 您可以点 Edit 图标重命名 policy 部分。
    • Drag out a policy 字段 部分列出了多个类别的可用策略标准。您可以展开和折叠这些类别,以查看策略标准属性。
  2. 将属性拖动到 policy 部分的 Drop a 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