6.4. 创建自定义策略


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

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

  • 您还可以根据 RHACS 门户的风险 视图中的 过滤器标准创建策略。
  • 您还可以使用 AND而不是 策略条件的逻辑运算符来创建高级策略。

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

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

流程

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

    • 输入策略的 Name
    • 可选:从 Attach notifiers 部分下的可用 Notifier 中选择 Attach notifiers 到策略。

      注意

      您必须将 Red Hat Advanced Cluster Security for Kubernetes 与通知提供程序集成,如 Webhook、JIRA、PagerDuty、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)

    • 选择 您的策略适用的 Lifecycle Stage,从 BuildDeployRuntime。您可以选择多个阶段。

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

    1. 告知 在违反列表中包含违反情况。
    2. 或选择 Inform 和 enforce to enforce 操作。

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

        • build - 当镜像与策略条件匹配时,Red Hat Advanced Cluster Security for Kubernetes 会失败,您的持续集成(CI)构建。
        • 部署 - 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 包含范围 使用 Restrict to Scope 来为特定集群、命名空间或标签启用此策略。您可以添加多个范围,并在 RE2 语法中使用正则表达式进行命名空间和标签。
    • 点击 Addclu sion 范围使用 Exclude by Scope 来排除您指定的部署、集群、命名空间和标签,这意味着策略不会应用于您选择的实体。您可以添加多个范围,并在 RE2 语法中使用正则表达式进行命名空间和标签。但是,您无法使用正则表达式来选择部署。
    • 对于 Excluded Images (Build Lifecycle),请选择您不想触发冲突的所有镜像。

      注意

      排除的镜像 设置只适用于您在持续集成系统中的镜像与 构建 生命周期阶段时才适用。如果您使用此策略检查 Deploy 生命周期阶段或运行时活动在 Runtime 生命周期阶段或运行时活动中运行的部署,则没有任何效果。

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

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

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

流程

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

6.4.3. 策略标准

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

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

在此表中:

  • 正则表达式 、和 或 列指明是否可以将正则表达式和其他逻辑运算符与特定属性一起使用。

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

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

      • 最低 RBAC 权限
      • 创建自镜像以来的天数
  • 您不能将 not logical operator 用于具有的属性:

    • 布尔值 truefalse
    • 已使用比较的数字值,如 < , &gt ;, & lt ;=, >= operator。
    • 可以有多个值的复合条件,例如:

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

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

Expand
属性DescriptionRHACS 版本正则表达式不适用或者阶段

命名空间

命名空间的名称。

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

3.0.40 或更新版本

部署

所需的标签

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

All

部署

所需的注解

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

All

部署

卷名称

存储的名称。

All

部署

卷源

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

All

部署

卷目标

挂载卷的路径。

All

部署

卷类型

卷的类型。

All

部署

可写卷

被挂载为可写的卷。

All

部署

协议

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

All

部署

端口

部署公开的端口号。

All

部署

privileged

特权运行部署.

All

部署

Read-Only Root Filesystem

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

All

部署

丢弃功能

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

All

部署

添加功能

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

All

部署

进程名称

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

All

Runtime

进程 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 资源的名称,如 configmapssecrets

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

有人为用户

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

3.63 或更新版本

Runtime

运行时类

部署的 RuntimeClass。

3.67 或更新版本

部署

自动挂载服务帐户令牌

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

3.68 或更新版本

部署

存活度(Liveness)探测

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

3.69 或更新版本

部署

就绪度(Readiness)探测

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

3.69 或更新版本

部署

Replicas

部署副本数。

3.69 或更新版本

部署

特权升级

当开发配置为允许容器进程获得的权限超过其父进程时,可以提供警报。

3.70 及更新的版本

部署

Ingress Network Policy

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

3.70 及更新的版本

部署

出口网络策略

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

3.70 及更新的版本

部署

不受可信镜像签名者验证

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

3.70 及更新的版本

!仅限 OR

部署

注意

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

6.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 选项。
    • 如果您选择一个带有 compound values Environment 变量的属性,您会看到为 KeyValueValue From 字段输入值的选项,以及用于为可用选项添加更多值的图标。

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat