搜索

6.4. 创建自定义策略

download PDF

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

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

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

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

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

流程

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

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

      注意

      在转发警报前,您必须将 RHACS 与通知供应商(如 Webhook、JIRA、Pageruty、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 部分中,执行以下步骤:

    1. 选择适用于 您的策略 的生命周期阶段: Build、deploy Runtime。您可以选择多个阶段。

      • 构建时策略适用于镜像字段,如 CVE 和 Dockerfile 指令。
      • deploy-time 策略可包括所有构建时策略标准,但它们也可以包含集群配置中的数据,如以特权模式运行或挂载 Docker 套接字。
      • 运行时策略可以包含所有构建时间和部署时间策略标准,但它们也可以包含运行时进程执行的数据。
    2. 可选:如果您选择了 Runtime 生命周期阶段,请选择以下 事件源 之一:

      • Deployment :当事件源包括进程和网络活动、pod exec 和 pod 端口转发时,RHACS 会触发策略违反情况。
      • 当事件源与 Kubernetes 审计日志记录匹配时,RHACS 会触发策略违反情况。
  6. 对于 Response 方法,请选择以下选项之一:

    1. inform :在违反列表中包括违反情况。
    2. inform 和 enforce :强制操作。
  7. 可选:如果您选择了 Inform and enforce,在 Configure enforcement behavior 中,使用每个生命周期选择策略的强制行为。它仅适用于您在配置生命周期阶段时所选择的 阶段。每个生命周期阶段的强制行为都有所不同。

    • 构建 :当镜像与策略条件匹配时,RHACS 无法构建您的持续集成(CI)。
    • 部署 :对于 Deploy 阶段,RHACS 会阻止在 RHACS 准入控制器配置并运行时与策略条件匹配的部署。

      • 在带有准入控制器强制的集群中,Kubernetes 或 OpenShift Container Platform API 服务器会阻止所有不合规的部署。在其他集群中,RHACS 编辑不合规部署,以防止调度 pod。
      • 对于现有部署,策略更改仅在发生 Kubernetes 事件时在下次检测条件时导致强制。有关强制的更多信息,请参阅"部署阶段的安全策略强制"。
    • Runtime - 当 pod 中的事件与策略条件匹配时,RHACS 会删除所有 pod。

      警告

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

  8. 点击 Next
  9. Policy Criteria 部分中,配置您要触发该策略的属性。

    1. 单击策略字段并将它拖到 Policy Section 中,以添加条件。

      注意

      可用的策略字段取决于您为策略选择的生命周期阶段。例如,在为运行时生命周期创建策略时,Kubernetes 访问策略Networking 下的条件可用,但为构建生命周期创建策略时不可用。有关策略条件的更多信息,请参阅"附加资源"部分中的"策略标准"部分,包括有关条件及其可用的生命周期阶段的信息。

    2. 可选:点 Add condition 来添加包括会触发策略的额外条件的策略部分(例如,为了触发一个旧的、稳定的镜像,您可以配置 image tag 不是 latest image age 并指定自一个镜像构建后的需要经过的最少天数)。
  10. 点击 Next
  11. Policy scope 部分中,配置以下内容:

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

      注意

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

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

6.4.1.1. 部署阶段的安全策略强制

Red Hat Advanced Cluster Security for Kubernetes 支持两种类型的安全策略强制进行部署时间策略强制:通过准入控制器和 RHACS Sensor 的软强制进行硬强制。准入控制器会阻止创建或更新违反策略的部署。如果准入控制器被禁用或不可用,则 Sensor 可以通过将违反策略部署到 0 的部署来缩减副本来执行强制。

警告

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

6.4.1.1.1. 硬强制

硬强制由 RHACS 准入控制器执行。在带有准入控制器强制的集群中,Kubernetes 或 OpenShift Container Platform API 服务器会阻止所有不合规的部署。准入控制器会阻止 CREATEUPDATE 操作。任何满足启用了 deploy-time 强制配置的策略的 pod 创建或更新请求都将失败。

注意

Kubernetes 准入 webhook 仅支持 CREATEUPDATEDELETECONNECT 操作。RHACS 准入控制器只支持 CREATEUPDATE 操作。kubectl patchkubectl setkubectl scale 等操作是 PATCH 操作,而不是 UPDATE 操作。因为 Kubernetes 不支持 PATCH 操作,所以 RHACS 无法对 PATCH 操作执行强制。

要进行阻塞,您必须在 RHACS 中为集群启用以下设置:

  • 在 Object Creates 上强制 :此切换在 Dynamic Configuration 部分中,控制准入控制服务的行为。您必须在打开的 Static Configuration 部分中具有 Configure Admission Controller Webhook 来侦听 Object Creates 开关才能正常工作。
  • 在对象更新上强制 :此切换在 Dynamic Configuration 部分中,控制准入控制服务的行为。您必须在打开的 Static Configuration 部分中具有 Configure Admission Controller Webhook 来侦听 Object Updates 切换。

如果您对 Static Configuration 设置进行了更改,您必须重新部署安全集群才能使这些更改生效。

6.4.1.1.2. 软强制

软强制由 RHACS Sensor 执行。这个强制可防止启动操作。使用软强制时,Sensor 将副本扩展到 0,并阻止调度 pod。在这个强制中,集群中提供了非就绪的部署。

如果配置了软强制,且 Sensor 停机,则 RHACS 无法执行强制。

6.4.1.1.3. 命名空间排除

默认情况下,RHACS 从强制阻止中排除某些管理命名空间,如 stackroxkube-systemistio-system 命名空间。这样做的原因是,必须部署这些命名空间中的一些项目才能使 RHACS 正常工作。

6.4.1.1.4. 对现有部署的强制

对于现有部署,策略更改仅在发生 Kubernetes 事件时在下次检测条件时导致强制。如果对策略进行更改,您必须通过选择 Policy Management 并点 Reassess All 来重新评估策略。此操作会在所有现有部署中应用部署策略,无论是否有新的传入的 Kubernetes 事件。如果违反了策略,则 RHACS 执行强制。

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

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

流程

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

6.4.3. 策略标准

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

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

在这个表中:

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

    • ! 用于 Regex (正则表达式)表示您只能对列出的字段使用正则表达式。
    • ! 对于 AND,或 OR 表示您只能将上述逻辑运算符用于属性。
    • Regex / NOT / AND, OR column 指示属性不支持任何这些(regex、Negation、logical operators)。
  • RHACS 版本 列指示必须使用该属性的 Red Hat Advanced Cluster Security for Kubernetes 版本。
  • 对于满足以下条件的属性,不能使用运算符 ANDOR 的组合:

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

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

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

      • Dockerfile 行,其中包含指令和参数。
      • 环境变量,由名称和值组成。
    • 其他含义,包括 Add CapabilitiesDrop Capabilities自镜像创建后的第一天,以及 自镜像上次扫描以来的日期
属性DescriptionJSON 属性允许的值regex,NOT,AND, OR阶段

部分:镜像 registry

镜像 Registry

镜像 registry 的名称。

镜像 Registry

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像名称

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

镜像远程

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像标签

镜像的标识符。

镜像标签

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像签名

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

镜像签名验证者

已配置镜像签名集成的有效 ID

!仅限 or only

构建
部署,
运行时 (与运行时条件一起使用)

部分:镜像内容

CVE 可修复

只有您在评估的部署中的镜像具有可修复的 CVE 时,此条件才会导致违反情况。

可修复

布尔值

构建
部署,
运行时 (与运行时条件一起使用)

自 CVE Was First Discovered In images 中的 daysSince

只有当 RHACS 在特定镜像中发现 CVE 后超过指定天数时,此条件才会导致违反情况。

自 CVE Was First Discovered In images 中的 daysSince

整数

构建
部署,
运行时 (与运行时条件一起使用)

因 CVE Was First Discovered in System 的 day Since CVE Was

只有由于 RHACS 在 RHACS 监控的所有部署的镜像中发现 CVE,所以这个条件才会超过指定天数。

因 CVE Was First Discovered in System 的 day Since CVE Was

整数

构建
部署,
运行时 (与运行时条件一起使用)

镜像年龄

镜像创建日期起的最小天数。

镜像期限

整数

构建
部署,
运行时 (与运行时条件一起使用)

镜像扫描年龄

镜像上次扫描后的最小天数。

镜像扫描期限

整数

构建
部署,
运行时 (与运行时条件一起使用)

镜像用户

匹配 Dockerfile 中的 USER 指令。详情请查看 https://docs.docker.com/engine/reference/builder/#user

镜像用户

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

Dockerfile 行

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

Dockerfile 行

其中一个: LABEL, RUN, CMD, EXPOSE, ENV, ADD, COPY, ENTRYPOINT,VOLUME, USER, WORKDIR, ONBUILD

!正则表达式只适用于值
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像扫描状态

检查镜像是否已扫描。

未扫描的镜像

布尔值

构建
部署,
运行时 (与运行时条件一起使用)

CVSS

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

CVSS

<, >, <=, >= 或 nothing (represents equal to)
criu-numpyandnumpy-setuptools 
是一个十进制(带有可选部分值的数字)。

示例:
>=5, 或
9.5

AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

重要性

基于 CVSS 或供应商的严重性。可以是 Low, Moderate, Important 或 Critical 之一。

重要性

<, >, criu, >= or nothing (represents equal to)
criu-criuand iwl-wagon 
One of:
UNKNOWN
LOW
MODERATE
IMPORTANT
CRITICAL

示例:
>=IMPORTANT, 或
CRITICAL

AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

修复人

修复镜像中标记的漏洞的软件包版本字符串。除了识别漏洞的其他条件外,也可以使用此条件,例如使用 CVE 条件。

修复人

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

CVE

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

CVE

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像组件

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

镜像组件

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

镜像操作系统

镜像基础操作系统的名称和版本号。例如,alpine:3.17.3

镜像操作系统

字符串

regex,
NOT,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

需要镜像标签

确保存在 Docker 镜像标签。如果部署中的任何镜像没有指定标签,则策略会触发。您可以对 key 和 value 字段使用正则表达式来匹配标签。Require Image Label 策略条件仅在与 Docker registry 集成时才有效。有关 Docker 标签的详情,请参阅 Docker 文档 https://docs.docker.com/config/labels-custom-metadata/

所需的镜像标签

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

不允许镜像标签

确保不使用特定的 Docker 镜像标签。如果部署中的任何镜像具有指定标签,则策略会触发。您可以对 key 和 value 字段使用正则表达式来匹配标签。只有与 Docker registry 集成时,"Disallow Image Label 策略"条件才有效。有关 Docker 标签的详情,请参阅 Docker 文档 https://docs.docker.com/config/labels-custom-metadata/

不允许的镜像标签

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

构建
部署,
运行时 (与运行时条件一起使用)

部分:容器配置

环境变量

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

环境变量

RAW=key=value,将部署配置中直接指定的环境变量与特定的键和值匹配。可以被省略来仅匹配键。

如果配置中没有直接定义环境变量,则可以使用 SOURCE=KEY 格式,其中 SOURCE 是 SECRET_KEY、CONFIG_MAP_KEY、FIELD 或 RESOURCE_FIELD 之一。在这种情况下,条件只能匹配键而不是值。

!正则表达式只适用于键和值(如果使用 RAW)
AND, OR

部署,
运行时 (与运行时条件一起使用)

容器 CPU 请求

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

容器 CPU 请求

<, >, numpy, >= 或 nothing (代表等于)
criu-numpyandnumpy 
A decimal A decimal, a optional fractional value)

示例:
>=5, 或
9.5

AND, OR

部署,
运行时 (与运行时条件一起使用)

容器 CPU 限制

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

容器 CPU 限制

(与容器 CPU 请求相同)

AND, OR

部署,
运行时 (与运行时条件一起使用)

容器内存请求

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

容器内存请求

(与容器 CPU 请求相同)

AND, OR

部署,
运行时 (与运行时条件一起使用)

容器内存限制

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

容器内存限制

(与容器 CPU 请求相同)

AND, OR

部署,
运行时 (与运行时条件一起使用)

特权容器

特权运行部署。

特权容器

布尔值

部署,
运行时 (与运行时条件一起使用)

根文件系统写入性

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

只读 Root 文件系统

布尔值

部署,
运行时 (与运行时条件一起使用)

seccomp 配置集类型

容器允许的 seccomp 配置集类型。

seccomp 配置集类型

其中之一:

UNCONFINED
RUNTIME_DEFAULT
LOCALHOST

部署,
运行时 (与运行时条件一起使用)

权限升级

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

允许权限升级

布尔值

部署,
运行时 (与运行时条件一起使用)

drop Capabilities

必须从容器中丢弃的 Linux 功能。在不丢弃指定功能时提供警报。例如,如果配置了 SYS_ADMINSYS_BOOT,且部署只丢掉了这两个能力中的一个没有丢掉,警告会发生。

drop Capabilities

其中之一:

ALL
AUDIT_CONTROL
AUDIT_READ
AUDIT_WRITE
BLOCK_SUSPEND
CHOWN
DAC_OVERRIDE
DAC_READ_SEARCH
FSETID
IPC_LOCK
IPC_OWNER
KILL
LEASE
LINUX_IMMUTABLE
LINUX_IMMUTABLE
MAC_ADMIN
MAC_OVERRIDE
MKNOD
NET_ADMIN
NET_BIND_SERVICE
NET_BROADCAST
NET_RAW
SETGID
SETFCAP
SETPCAP
SETUID
SYS_ADMIN
SYS_BOOT
SYS_CHROOT
SYS_MODULE
SYS_NICE GIGABYTE
SYS_PACCT
SYS_PTRACE
SYS_RAWIO
SYS_RESOURCE
SYS_TIME
SYS_TTY_CONFIG
SYSLOG
WAKE_ALARM

部署,
运行时 (与运行时条件一起使用)

添加功能

不得添加到容器中的 Linux 功能,例如发送原始数据包或覆盖文件权限的能力。在添加指定功能时提供警报。例如,如果使用 NET_ADMINNET_RAW 配置,且部署清单 YAML 文件至少包含这两个功能之一,则会出现警报。

添加功能

AUDIT_CONTROL
AUDIT_READ
AUDIT_WRITE
BLOCK_SUSPEND
CHOWN
DAC_OVERRIDE
DAC_READ_SEARCH
FOWNER
FSETID
IPC_LOCK
IPC_OWNER
KILL
LEASE
LINUX_IMMUTABLE
MAC_ADMIN
MAC_OVERRIDE
MKNOD
NET_ADMIN
NET_BIND_SERVICE
NET_BROADCAST
NET_RAW
SETGID
SETFCAP
SETPCAP
SETUID
SYS_ADMIN
SYS_BOOT
SYS_CHROOT
SYS_MODULE
SYS_PACCT CAMELAWSS
SYS_PTRACE
SYS_RAWIO
SYS_RESOURCE
SYS_TIME
SYS_TTY_CONFIG
SYSLOG
WAKE_ALARM

或者

部署,
运行时 (与运行时条件一起使用)

容器名称

容器的名称。

容器名称

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

Apparmor Profile

容器中使用的应用程序 Armor ("AppArmor")配置集。

Apparmor Profile

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

存活度(Liveness)探测

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

存活度(Liveness)探测

布尔值

部署,
运行时 (与运行时条件一起使用)

就绪度(Readiness)探测

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

就绪度(Readiness)探测

布尔值

部署,
运行时 (与运行时条件一起使用)

部分:部署元数据

不允许注解

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

不允许注解

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

部署,
运行时 (与运行时条件一起使用)

所需的标签

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

所需的标签

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

部署,
运行时 (与运行时条件一起使用)

必需注解

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

必需注解

key=value

值是可选的。

如果缺少值,则必须采用 "key=".

regex,
AND, OR

部署,
运行时 (与运行时条件一起使用)

运行时类

部署的 RuntimeClass

运行时类

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

主机网络

检查 HostNetwork 是否已启用,这意味着容器没有放置在单独的网络堆栈中(例如,容器的网络没有容器化)。这意味着容器可以完全访问主机的网络接口。

主机网络

布尔值

部署,
运行时 (与运行时条件一起使用)

主机 PID

检查在容器和主机间是否隔离了进程 ID (PID)命名空间。这允许不同 PID 命名空间中的进程具有相同的 PID。

主机 PID

布尔值

部署,
运行时 (与运行时条件一起使用)

主机 IPC

检查主机上的 IPC (POSIX/SysV IPC)命名空间(提供命名共享内存片段、semaphores 和消息队列)的隔离是否与容器共享。

主机 IPC

布尔值

部署,
运行时 (与运行时条件一起使用)

命名空间

部署所属的命名空间的名称。

命名空间

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

Replicas

部署副本数量。如果使用 oc scale 将部署副本从 0 扩展到数字,则准入控制器会在部署违反策略时阻止此操作。

Replicas

<, >, criu, >= 或 nothing (代表等于)
criu-numpyandnumpy 
一个十进制(带有可选部分值的数字)。

示例:
>=5, 或
9.5

NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

部分:存储

卷名称

存储的名称。

卷名称

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

卷源

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

卷源

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

卷目的地

挂载卷的路径。

卷目的地

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

卷类型

卷的类型。

卷类型

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

挂载的卷不稳定

挂载为可写的卷。

可写挂载的卷

布尔值

部署,
运行时 (与运行时条件一起使用)

挂载传播

检查容器是否在双向中 挂载卷主机到容器 或无 模式

挂载传播

其中之一:

NONE
HOSTTOCONTAINER
双向

NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

主机挂载不稳定

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

可写主机挂载

布尔值

部署,
运行时 (与运行时条件一起使用)

部分: Networking

协议

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

公开端口协议

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

端口

部署公开的端口号。

公开端口

<, >, criu, >= 或 nothing (代表等于)
criu-numpyandcriu-PROFILE 
一个整数。

示例:
>=1024, 或
22

NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

公开的节点端口

部署外部公开的端口号。

公开的节点端口

(与公开端口相同)

NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

端口公开

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

端口公开方法

其中之一:

UNSET
EXTERNAL
NODE
HOST
INTERNAL
ROUTE

NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

期望的意外网络流

检查检测到的网络流量是否是部署的网络基准的一部分。

期望的意外网络流

布尔值

运行时 - 网络

Ingress 网络策略

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

具有 Ingress 网络策略

布尔值

regex,
AND, OR

部署,
运行时 (与运行时条件一起使用)

出口网络策略

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

具有 Egress 网络策略

布尔值

regex,
AND, OR

部署,
运行时 (与运行时条件一起使用)

部分:进程活动

进程名称

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

进程名称

字符串

regex,
NOT,
AND, OR

运行时 - 进程

Process Ancestor

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

Process Ancestor

字符串

regex,
NOT,
AND, OR

运行时 - 进程

进程参数

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

进程参数

字符串

regex,
NOT,
AND, OR

运行时 - 进程

Process UID

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

Process UID

整数

NOT,
AND, OR

运行时 - 进程

执行意外的进程

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

执行意外的进程

布尔值

运行时 - 进程

部分:Kubernetes 访问

服务帐户

服务帐户的名称。

服务帐户

字符串

regex,
NOT,
AND, OR

部署,
运行时 (与运行时条件一起使用)

自动挂载服务帐户令牌

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

自动挂载服务帐户令牌

布尔值

部署,
运行时 (与运行时条件一起使用)

最低 RBAC 权限

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

最低 RBAC 权限

其中之一:

DEFAULT
ELEVATED_IN_NAMESPACE
ELEVATED_CLUSTER_WIDE
CLUSTER_ADMIN

部署,
运行时 (与运行时条件一起使用)

部分:Kubernetes 事件

Kubernetes 操作

Kubernetes 操作的名称,如 Pod Exec

Kubernetes 资源

其中之一:

PODS_EXEC
PODS_PORTFORWARD

!仅限 or only

运行时 - Kubernetes 事件

Kubernetes 用户名

访问资源的用户的名称。

Kubernetes 用户名

仅限连字符(-)和冒号(:)的字母数字字符

regex,
NOT,
!仅限 or only

运行时 - Kubernetes 事件

Kubernetes 用户组

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

Kubernetes 用户组

仅限连字符(-)和冒号(:)的字母数字字符

regex,
!仅限 or only

运行时 - Kubernetes 事件

Kubernetes 资源

访问的 Kubernetes 资源的类型。

Kubernetes 资源

其中之一:

配置映射
Secret
ClusterRole
ClusterRoleBindings
NetworkPolicies
SecurityContextConstraints
EgressFirewalls

!仅限 or only

运行时 - 审计日志

Kubernetes API Verb

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

Kubernetes API Verb

其中之一:

CREATE
DELETE
GET
PATCH
UPDATE

!仅限 or only

运行时 - 审计日志

Kubernetes 资源名称

访问的 Kubernetes 资源的名称。

Kubernetes 资源名称

仅限连字符(-)和冒号(:)的字母数字字符

regex,
NOT,
!仅限 or only

运行时 - 审计日志

用户代理

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

用户代理

字符串

regex,
NOT,
!仅限 or only

运行时 - 审计日志

源 IP 地址

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

源 IP 地址

IPV4 或 IPV6 地址

regex,
NOT,
!仅限 or only

运行时 - 审计日志

是 Impersonated User

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

是 Impersonated User

布尔值

运行时 - 审计日志

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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

© 2024 Red Hat, Inc.