第 6 章 管理安全策略


6.1. 关于安全策略

Red Hat Advanced Cluster Security for Kubernetes 提供了开箱即用的 默认安全策略,您可以用来防止环境中的高风险服务部署并对运行时安全事件做出响应。您还可以为容器环境 创建自定义 多因素策略。

6.1.1. 策略类别

RHACS 使用策略类别来根据类型和功能对策略进行分组。您可以使用这些类别来组织和搜索策略。

RHACS 提供以下默认策略类别:

  • 同学活动
  • Cryptocurrency Mining
  • DevOps 最佳实践
  • 用于互联网安全的 Docker 中心(CIS)
  • Kubernetes
  • Kubernetes 事件
  • 网络工具
  • 软件包管理
  • 权限
  • 安全性最佳实践
  • 供应链安全性
  • 系统修改
  • 漏洞管理
  • zero Trust

您可以使用 Policy Management 窗口中的 Policy Categories 选项卡查看现有类别并在 RHACS 门户中创建自己的策略类别。

6.1.1.1. 使用 Policy categories 选项卡创建策略类别

从 3.74 版本开始,RHACS 提供了一种新的方法来创建和管理 Red Hat Advanced Cluster Security Cloud Service 或 RHACS 中的策略类别(如果您启用了 PostgreSQL 数据库)。使用此功能时,策略创建以外的所有策略工作流保持不变。

您还可以使用 PolicyCategoryService API 对象配置策略类别。如需更多信息,请参阅 RHACS 门户中的 Help API 参考

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. Policy categories 选项卡。此选项卡提供现有类别的列表,允许您按类别名称过滤列表。您还可以点 Show all categories,然后选择从显示列表中删除默认或自定义类别的复选框。
  3. 单击 Create category
  4. 输入类别名称并点 Create

6.1.1.2. 使用 Policy categories 选项卡修改策略类别

从 3.74 版本开始,RHACS 提供了一种新的方法来创建和管理 Red Hat Advanced Cluster Security Cloud Service 或 RHACS 中的策略类别(如果您启用了 PostgreSQL 数据库)。使用此功能时,策略创建以外的所有策略工作流保持不变。

您还可以使用 PolicyCategoryService API 对象配置策略类别。如需更多信息,请参阅 RHACS 门户中的 Help API 参考

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. Policy categories 选项卡。此选项卡提供现有类别的列表,允许您按类别名称过滤列表。您还可以点 Show all categories,然后选择从显示列表中删除默认或自定义类别的复选框。
  3. 点策略名称来编辑或删除它。无法选择、编辑或删除默认策略类别。

6.1.2. 了解策略和生命周期阶段

在配置策略时,您可以选择适用于您的策略的生命周期阶段,您可以为策略选择多个阶段。

您可以从以下生命周期阶段选择:

  • 构建阶段策略: 这些策略适用于 CVE 和 Dockerfile 指令等镜像字段。
  • 部署阶段策略: 这些策略可以包含所有构建时策略标准。它们也可以有集群配置中的数据,如以特权模式运行或挂载 Docker 守护进程套接字。
  • 运行时策略扫描包括所有构建时和部署策略标准,以及有关进程在运行时执行的数据。您可以进一步配置运行时策略,以根据以下事件触发策略违反情况:

    • Deployment:当事件源包含进程和网络活动时,RHACS 会触发策略违反情况,如在 pod 和 pod 端口转发中执行命令。
    • 审计日志 :当事件源与 Kubernetes 审计日志记录匹配时,RHACS 会触发策略违反情况。

6.1.3. 了解规则和策略标准

您可以在 RHACS 中设置规则,并配置要触发策略的数据。此数据也称为 策略条件或 策略 字段

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

在这个表中:

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

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

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

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

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

      • 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

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

部分:镜像内容

通用漏洞和暴露(CVE)可修复

只有在您要评估的部署中的镜像具有可修复的 CVE 时,这个条件才会产生违反情况。

可修复

布尔值

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

Since CVE Was First Discovered in Image

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

Since CVE Was First Discovered in Image

整数

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

Since CVE Was First Discovered in System

此条件只有在 RHACS 监视器的所有部署镜像间发现 CVE 超过指定天数时才会产生违反情况。

Since CVE Was First Discovered in System

整数

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

镜像年龄

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

image Age

整数

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

镜像扫描年龄

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

镜像扫描期限

整数

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

镜像用户

匹配 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:使用它来匹配分数大于 >、小于 & lt; 或等于 = 指定的 CVSS 的漏洞的镜像。

CVSS

<, >, <=, >= or nothing (代表等于)
rhacm-wagonand swig-wagon
一个十进制(带有可选部分值的数字)。

示例:
>=5, or
9.5

AND, OR

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

重要性

根据 CVSS 或供应商的安全漏洞的严重性。可以是 Low、Moderate、Important 或 Critical 之一。

重要性

<, >, HEKETI, >= or nothing (代表等于)
HEKETI-wagonand swig- swig
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

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

value 是可选的。

如果缺少值,则必须格式为 "key="。

regex,
AND, OR

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

disallow 镜像标签

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

禁止的镜像标签

key=value

value 是可选的。

如果缺少值,则必须格式为 "key="。

regex,
AND, OR

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

部分:容器配置

环境变量

根据名称或值检查环境变量。当您创建包含环境变量属性的策略时,您可以选择策略应该匹配的环境变量类型。例如,您可以指定原始值,它们直接在部署 YAML 中提供,或者指定对配置映射、secret、字段或资源请求或限值的值的引用。对于直接在部署 YAML 中指定的 raw 值以外的任何类型,策略规则的对应 value 属性将被忽略。在这种情况下,策略匹配会根据指定的环境变量类型进行评估。另外,这个条件不允许为 raw 以外的类型使用非空值属性创建策略。

环境变量

RAW=key=value 与部署 YAML 中使用特定键和值直接指定的环境变量匹配。您可以省略 value 属性,仅匹配键。

如果配置 YAML 中没有定义环境变量,您可以使用格式 SOURCE=KEY,其中 SOURCE 是以下对象之一:

  • SECRET_KEY (SecretKeyRef)
  • CONFIG_MAP_KEY (ConfigMapRef)
  • FIELD (FieldRef)
  • RESOURCE_FIELD (ResourceFieldRef)

前面的列表首先提供 API 对象标签,然后以括号形式提供用户界面标签。

!仅限键和值正则表达式(如果使用 RAW)
AND, OR

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

容器 CPU 请求

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

容器 CPU 请求

<, >, HEKETI, >= or nothing (代表等于)
HEKETI-wagonand swig-wagon
一个十进制(带有可选部分值的数字)

示例:
>=5, or
9.5

AND, OR

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

容器 CPU 限制

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

容器 CPU 限制

(与容器 CPU 请求相同)

AND, OR

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

容器内存请求

编号,包括请求的几分(以 MB 为单位)。

容器内存请求

(与容器 CPU 请求相同)

AND, OR

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

容器内存限制

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

容器内存限制

(与容器 CPU 请求相同)

AND, OR

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

特权容器

检查部署是否以 privileged 模式配置。此条件仅检查对应 Pod 安全上下文 中的 privileged 字段的值

特权容器

boolean: true,当相应 PodSecurityContext 中的 privileged 字段的值被设置为 true

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

root 文件系统可写入性

检查是否在 readOnlyFilesystem 模式中配置了部署。

只读 Root 文件系统

boolean: true,当相应 PodSecurityContext 中的 readOnlyRootFilesystem 字段的值被设置为 true

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

seccomp 配置集类型

为部署定义的 seccomp 配置集类型。如果 pod 和容器级别上都提供了 seccomp 选项,则容器选项将覆盖 pod 选项。请参阅 安全上下文

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
FOWNER
FSETID
IPC_LOCK
IPC_OWNER
KILL
LINUX_IMMUTABLE
MAC_ADMINMTC MAC_OVERRIDETAGS MKNOD LIBPMEM NET_ADMINVOLGROUP NET_BIND_SERVICE SWIG NET_BROADCAST SWIG NET_RAW ORIGINALLY SETGID SETFCAPCAP SETPCAP SWIG SETUID SWIG SYS_ADMIN SWIG SYS_BOOT SWIG SYS_CHROOTWAGON SYS_MODULE SYS_MODULE SYS_PACCT SWIG SYS_PTRACE SWIG SYS_RAWIORHACM SYS_RESOURCE SYS_TIMEMTC SYS_TTY_CONFIG SYSLOG SYSLOG SWIG 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 (2) MKNOD LIBPMEM NET_ADMINVOLGROUP NET_BIND_SERVICE SWIG NET_BROADCAST SWIG NET_RAW ORIGINALLY SETGID SETFCAPCAP SETPCAP SWIG SETUID SWIG SYS_ADMIN SWIG SYS_BOOT SWIG SYS_CHROOT SWIG SYS_MODULE SYS_PACCT SWIG SYS_PTRACE SWIG SYS_RAWIOWAGON SYS_RESOURCE SYS_TIME SWIG SYS_TTY_CONFIG SYSLOG SWIG WAKE_ALARM

或者

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

容器名称

容器的名称。

容器名称

字符串

regex,
NOT,
AND, OR

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

Apparmor Profile

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

Apparmor Profile

字符串

regex,
NOT,
AND, OR

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

存活度(Liveness)探测

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

存活度(Liveness)探测

布尔值

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

就绪度(Readiness)探测

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

就绪度(Readiness)探测

布尔值

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

部分:部署元数据

不允许注解

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

不允许注解

key=value

value 是可选的。

如果缺少值,则必须格式为 "key="。

regex,
AND, OR

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

所需的标签

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

所需的标签

key=value

value 是可选的。

如果缺少值,则必须格式为 "key="。

regex,
AND, OR

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

所需的注解

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

所需的注解

key=value

value 是可选的。

如果缺少值,则必须格式为 "key="。

regex,
AND, OR

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

运行时类

部署的 RuntimeClass

运行时类

字符串

regex,
NOT,
AND, OR

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

主机网络

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

主机网络

布尔值

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

主机 PID

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

主机 PID

布尔值

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

主机 IPC

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

主机 IPC

布尔值

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

命名空间

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

命名空间

字符串

regex,
NOT,
AND, OR

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

Replicas

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

Replicas

<, >, HEKETI, >= or nothing (代表等于)
HEKETI-wagonand swig-wagon
一个十进制(带有可选部分值的数字)。

示例:
>=5, or
9.5

NOT,
AND, OR

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

部分:存储

卷名称

存储的名称。

卷名称

字符串

regex,
NOT,
AND, OR

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

卷源

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

卷源

字符串

regex,
NOT,
AND, OR

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

卷目的地

挂载卷的路径。

卷目的地

字符串

regex,
NOT,
AND, OR

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

卷类型

卷的类型。

卷类型

字符串

regex,
NOT,
AND, OR

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

挂载卷可重用性

挂载为可写的卷。

可写挂载卷

布尔值

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

挂载传播

检查容器是否以 双向Host to ContainerNone 模式挂载卷。

挂载传播

其中之一:

NONE
HOSTTOCONTAINER
双向

NOT,
AND, OR

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

主机挂载 writability

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

可写主机挂载

布尔值

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

部分:网络

协议

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

公开的端口协议

字符串

regex,
NOT,
AND, OR

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

端口

部署公开的端口号。

公开的端口

<, >, HEKETI, >= or nothing (代表等于)
HEKETI-wagonand swig-wagon
一个整数。

示例:
>=1024, 或
22

NOT,
AND, OR

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

公开的节点端口

部署外部公开的端口号。

公开的节点端口

(与开放端口相同)

NOT,
AND, OR

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

端口公开

公开该服务的方法,如负载均衡器或节点端口。

端口公开方法

其中之一:

UNSET
EXTERNAL
NODE
HOST
INTERNAL
ROUTE

NOT,
AND, OR

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

意外的网络流

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

意外的网络流

布尔值

运行时 - 网络

入口网络策略

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

具有 Ingress Network 策略

布尔值

regex,
AND, OR

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

出口网络策略

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

具有 Egress Network 策略

布尔值

regex,
AND, OR

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

部分:进程活动

进程名称

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

进程名称

字符串

regex,
NOT,
AND, OR

运行时 - 进程

Process Ancestor

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

Process Ancestor

字符串

regex,
NOT,
AND, OR

运行时 - 进程

进程参数

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

进程参数

字符串

regex,
NOT,
AND, OR

运行时 - 进程

进程 UID

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

进程 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

运行时 - Kubernetes 事件

Kubernetes 用户名

访问资源的用户的名称。

Kubernetes 用户名

只使用连字符(-)和冒号(:)的字母数字。

regex,
NOT,
!仅限 OR

运行时 - Kubernetes 事件

Kubernetes 用户组

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

Kubernetes 用户组

只使用连字符(-)和冒号(:)的字母数字。

regex,
NOT,
!仅限 OR

运行时 - Kubernetes 事件

Kubernetes 资源类型

访问的 Kubernetes 资源的类型。

Kubernetes 资源

其中之一:

配置映射
Secret
ClusterRole
ClusterRoleBindings
NetworkPolicies
SecurityContextConstraints
EgressFirewalls

!仅限 OR

运行时 - 审计日志

Kubernetes API Verb

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

Kubernetes API Verb

其中之一:

CREATE
DELETE
GET
GET
PATCH
UPDATE

!仅限 OR

运行时 - 审计日志

Kubernetes 资源名称

访问的 Kubernetes 资源的名称。

Kubernetes 资源名称

只使用连字符(-)和冒号(:)的字母数字。

regex,
NOT,
!仅限 OR

运行时 - 审计日志

用户代理

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

用户代理

字符串

regex,
NOT,
!仅限 OR

运行时 - 审计日志

源 IP 地址

用户访问资源的 IP 地址。

源 IP 地址

IPV4 或 IPV6 地址

regex,
NOT,
!仅限 OR

运行时 - 审计日志

is Impersonated User

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

is Impersonated User

布尔值

运行时 - 审计日志

6.1.4. 关于策略强制

当您在 RHACS 中配置策略时,您可以选择 RHACS 在检测到违反安全策略的条件时如何响应。

RHACS 可以执行不同类型的策略执行,或执行处理违反情况的操作,具体取决于发现违反情况的阶段。在配置策略强制时,您可以在策略中配置强制时选择多个阶段。例如,您可以选择 BuildDeploy,以便 RHACS 将构建管道警告到问题,但如果开发人员允许构建成功,则会阻止部署。

构建时间强制 中,当镜像与策略标准匹配时,您可以将 RHACS 配置为使持续集成(CI)构建失败。这意味着,当构建中有一个违反了策略的条件时,例如,如果严重性级别有可修复的 CVE,并且您为该条件配置了策略,则构建应该会失败。例如,如果您已将 RHACS 配置为检查镜像或部署,并且集成了 CI/CD 管道,如果 RHACS 检测到一个条件,这意味着策略应该失败,RHACS API 会返回非零退出代码。然后,管道使用该代码失败构建。

部署时间强制 中,RHACS 可用于 Kubernetes 准入控制器和 OpenShift Container Platform 准入插件,以便您强制执行安全策略。RHACS 可防止 Kubernetes 或 OpenShift Container Platform 创建或更新工作负载,如部署、守护进程集或作业(与策略条件匹配)。这可用于关闭具有严重问题的部署,即使构建成功也是如此。

6.1.4.1. deploy 阶段的安全策略强制

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

警告

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

6.1.4.1.1. 硬实施

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

注意

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

要阻止强制,您必须在 RHACS 中为集群启用以下设置:

  • Object Creates on Object Creates:此切换在 Dynamic Configuration 部分中控制准入控制服务的行为。您必须在 Static Configuration 部分中打开 Configure Admission Controller Webhook 侦听 Object Creates 切换,才能使它正常工作。
  • 对 Object Updates 强制执行 :这会在 Dynamic Configuration 部分中切换控制准入控制服务的行为。您必须在 Static Configuration 部分中打开 Configure Admission Controller Webhook 以侦听 Object Updates 切换,才能使它正常工作。

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

6.1.4.1.2. 软强制

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

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

6.1.4.1.3. 命名空间排除

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

6.1.4.1.4. 对现有部署进行强制

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

6.1.5. 共享安全策略

从 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.44 开始,您可以通过导出和导入策略在不同的 Central 实例间共享安全策略。共享策略可帮助您为所有集群强制执行相同的标准。要共享策略,您可以将它们导出为 JSON 文件,然后将它们导入另一个 Central 实例。

注意

目前,您无法使用 RHACS 门户一次性导出多个安全策略。但是,您可以使用 API 导出多个安全策略。在 RHACS 门户中,进入 Help API 参考 来查看 API 参考。

6.1.5.1. 导出安全策略

当您导出策略时,它会包含所有策略内容,还包括集群范围、集群排除以及所有配置的通知。

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. Policies 页面中,选择您要编辑的策略。
  3. 选择 Actions Export policy to JSON

6.1.5.2. 导入安全策略

您可以从 RHACS 门户 的系统策略 视图中导入安全策略。

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. 单击 Import policy
  3. Import policy JSON 对话框中,点 Upload 并选择您要上传的 JSON 文件。
  4. 单击 Begin import

RHACS 中的每个安全策略都有唯一的 ID (UID)和唯一名称。当您导入策略时,RHACS 处理上传的策略,如下所示:

  • 如果导入的策略 UID 和名称都与任何现有策略不匹配,RHACS 创建一个新的策略。
  • 如果导入的策略与现有策略具有相同的 UID,但存在其他名称,您可以:

    • 保留这两个策略。RHACS 使用新 UID 保存导入策略。
    • 将现有的策略替换为导入的策略。
  • 如果导入的策略与现有策略的名称相同,但不同的 UID,您可以:

    • 通过为导入的策略提供新名称来保留这两个策略。
    • 将现有的策略替换为导入的策略。
  • 如果导入的策略与现有策略具有相同的名称和 UID,Red Hat Advanced Cluster Security for Kubernetes 会检查是否与现有策略匹配。如果策略条件匹配,RHACS 会保留现有策略并显示成功消息。如果策略条件不匹配,您可以:

    • 通过为导入的策略提供新名称来保留这两个策略。
    • 将现有的策略替换为导入的策略。
重要
  • 如果您导入到同一 Central 实例,RHACS 将使用所有导出的字段。
  • 如果您导入到不同的 Central 实例,RHACS 省略某些字段,如集群范围的、集群排除和通知。RHACS 在消息中显示这些忽略的字段。这些字段因每个安装而异,您不能将它们从一个 Central 实例迁移到另一个实例。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.