6.3. 默认安全策略
Red Hat Advanced Cluster Security for Kubernetes 中的默认安全策略提供了广泛的覆盖范围,以识别安全问题,并确保环境中安全性的最佳实践。通过配置这些策略,您可以自动防止环境中的高风险服务部署并对运行时安全事件做出响应。
Red Hat Advanced Cluster Security for Kubernetes 中的策略严重性级别与红帽产品安全团队分配的严重性级别不同。
Red Hat Advanced Cluster Security for Kubernetes 策略严重性级别为 Critical、High、Medium 和 Low。红帽产品安全团队将漏洞严重性评级为 Critical, Important, Moderate, 和 Low。
虽然策略的严重性级别和红帽产品安全团队的严重性级别可以相互交互,但务必要区分它们。有关红帽产品安全严重性等级的更多信息,请参阅 严重性等级。
6.3.1. 关键严重性安全策略
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中有关键严重性的默认安全策略。策略按生命周期阶段进行组织。
生命周期阶段 | 名称 | Description | 状态 |
---|---|---|---|
构建或部署 | Apache Struts: CVE-2017-5638 | 当部署有包含 CVE-2017-5638 Apache Struts 漏洞的镜像时发出警报。 | Enabled |
构建或部署 | Log4Shell: log4j Remote Code Execution vulnerability | 当部署包含 CVE-2021-44228 和 CVE-2021-45046 Log4Shell 漏洞的镜像时,警报。Apache Log4j Java 日志记录库中存在漏洞,版本 2.0-beta9 - 2.15.0,不包括 2.12.2 版本。 | Enabled |
构建或部署 | Spring4Shell (Spring Framework Remote Code Execution)和 Spring Cloud Function 漏洞 | 当部署包含 CVE-2022-22965 漏洞的镜像时(这会影响 Spring MVC),以及 CVE-2022-22963 漏洞会影响 Spring Cloud。在版本 3.16、3.2.2 和旧的不受支持的版本中,Spring Cloud 包含漏洞。Spring Framework 版本为 5.3.0 - 5.3.17、版本 5.2.0 - 5.2.19 以及较旧不受支持的版本存在漏洞。 | Enabled |
Runtime | Privileged Container 中执行的 iptables | 特权 Pod 运行 iptables 时的警报。 | Enabled |
6.3.2. 高严重性安全策略
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中具有高严重性的默认安全策略。策略按生命周期阶段进行组织。
生命周期阶段 | 名称 | Description | 状态 |
---|---|---|---|
构建或部署 | 可修复的通用漏洞评分系统(CVSS)>= 7 | 当部署具有可修复的、CVSS 最少为 7 的安全漏洞时发出警报。但是,红帽建议您使用通用漏洞和暴露(CVE)严重性而不是 CVSS 分数创建策略。 | Disabled |
构建或部署 | 可修复的严重性至少重要 | 当部署具有可修复漏洞的部署至少有重要等级时发出警报。 | Enabled |
构建或部署 | 快速重置:HTTP/2 协议中拒绝服务漏洞 |
在带有镜像(包含与 HTTP/2 服务器的 Denial Service (DoS)漏洞相关的组件)的部署中的警报。这个问题解决了在 HTTP/2 中处理多路流的缺陷。客户端可以快速创建请求并立即重置请求,从而为服务器创建额外的工作,同时避免达到任何服务器端的限制,从而导致拒绝服务攻击。要使用此策略,请考虑克隆策略并在启用前添加可修复的策略标准。 | Disabled |
构建或部署 | 镜像中公开的安全 Shell (ssh)端口 | 当部署公开端口 22 时发出警报,该端口通常为 SSH 访问保留。 | Enabled |
部署 | 紧急部署注解 | 当部署使用 emergency 注解时,比如 "admission.stackrox.io/break-glass":"ticket-1234" to rcumvent StackRox Admission 控制器检查。 | Enabled |
部署 | 环境变量包含 Secret | 当部署具有包含 'SECRET' 的环境变量时发出警报。 | Enabled |
部署 | 可修复 CVSS >= 6 和 Privileged | 当部署以特权模式运行且至少为 6 的 CVSS 漏洞时发出警报。但是,红帽建议您使用 CVE 严重性而不是 CVSS 分数创建策略。 | 在版本 3.72.0 及更新的版本中默认禁用 |
部署 | 具有重要和严重修复 CVE 的特权容器 | 当以特权模式运行的容器具有重要或重要的可修复漏洞时,会发出警报。 | Enabled |
部署 | Secret 挂载为环境变量 | 当部署具有作为环境变量挂载的 Kubernetes secret 时发出警报。 | Disabled |
部署 | 安全 Shell (ssh)端口公开 | 当部署公开端口 22 时发出警报,该端口通常为 SSH 访问保留。 | Enabled |
Runtime | Cryptocurrency Mining Process Execution | 生成 crypto-currency mining 进程。 | Enabled |
Runtime | iptables 执行 | 检测某人运行 iptables 时,这是在容器中管理网络状态的已弃用方式。 | Enabled |
Runtime | Kubernetes Actions: 执行到 Pod 中 | 当 Kubernetes API 收到在容器中运行命令的请求时发出警报。 | Enabled |
Runtime | Linux 组添加执行 | 检测某人运行 addgroup 或 groupadd 二进制文件以添加 Linux 组。 | Enabled |
Runtime | Linux 用户添加执行 | 检测某人运行 useradd 或 adduser 二进制文件来添加 Linux 用户。 | Enabled |
Runtime | 登录信息 | 指明有人尝试登录的时间。 | Disabled |
Runtime | 网络管理执行 | 检测某人运行可操作网络配置和管理的二进制文件。 | Enabled |
Runtime | Nmap 执行 | 当用户在运行时启动容器中的 nmap 进程时发出警报。 | Enabled |
Runtime | OpenShift: Kubeadmin Secret Accessed | 当某人访问 kubeadmin 机密时发出警报。 | Enabled |
Runtime | Password Binaries | 表示有人尝试更改密码的时间。 | Disabled |
Runtime | 目标集群 Kubelet 端点的流程 | 检测 healthz、kubelet API 或 heapster 端点的滥用。 | Enabled |
Runtime | 进程目标集群 Kubernetes Docker 统计信息端点 | 检测 Kubernetes docker stats 端点的滥用。 | Enabled |
Runtime | 为 Kubernetes 服务端点目标的流程 | 检测 Kubernetes Service API 端点的滥用。 | Enabled |
Runtime | 使用 UID 0 的进程 | 当部署包含以 UID 0 运行的进程时发出警报。 | Disabled |
Runtime | Secure Shell Server (sshd)执行 | 检测运行 SSH 守护进程的容器。 | Enabled |
Runtime | Setuid processes | 使用 setuid 二进制文件,允许人员使用升级的特权运行某些程序。 | Disabled |
Runtime | 影子文件修改 | 表示有人尝试修改影子文件时。 | Disabled |
Runtime | Shell Spawned by Java Application | 检测 shell (如 bash、csh、sh 或 zsh )何时作为 Java 应用程序的子进程运行。 | Enabled |
Runtime | 未授权的网络流 | 对所有位于"警报在异常违反情况"设置中的基准之外的任何网络流生成冲突。 | Enabled |
Runtime | 未授权进程执行 | 针对 Kubernetes 部署中容器规格的锁定进程基准未明确允许的任何进程执行生成违反情况。 | Enabled |
6.3.3. 中等严重性安全策略
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中的默认安全策略,它们是中等严重性。策略按生命周期阶段进行组织。
生命周期阶段 | 名称 | Description | 状态 |
---|---|---|---|
Build | Docker CIS 4.4: Ensure images are scanned and rebuilt to include security patches | 当镜像没有被扫描并重新构建来包括安全补丁时的警报。要经常扫描镜像来查找漏洞,重新构建镜像以包括安全补丁,然后实例化镜像的容器。 | Disabled |
部署 | 30 天扫描期限 | 当部署没有在 30 天内扫描时发出警报。 | Enabled |
部署 | 添加了 CAP_SYS_ADMIN 功能 | 当部署包含使用 CAP_SYS_ADMIN 扩展的容器时发出警报。 | Enabled |
部署 | 使用读写根文件系统的容器 | 当部署包含具有读写根文件系统的容器时发出警报。 | Disabled |
部署 | 允许权限升级的容器 | 当容器可能以意外权限运行时发出警报,从而造成安全风险。当具有比其父进程更多特权的容器进程允许容器以意外特权运行时,会出现这种情况。 | Enabled |
部署 | 部署应至少有一个 Ingress Network 策略 | 如果部署缺少 Ingress Network Policy,则发出警报。 | Disabled |
部署 | 使用外部公开端点部署 | 检测部署是否有通过任何方法公开的任何服务。在集群外公开的服务的部署较高风险,因为它们可在集群外访问。此策略提供了一个警报,以便您可以验证是否需要在集群外公开服务。如果只在集群内通信需要该服务,请使用服务类型 ClusterIP。 | Disabled |
部署 | Docker CIS 5.1:确保启用了 AppArmor 配置集 | 使用 AppArmor 通过强制执行称为 AppArmor 配置集的安全策略来保护 Linux 操作系统和应用程序。Apparmor 是一个 Linux 应用程序安全系统,默认可在某些 Linux 发行版上提供,如 Debian 和 Ubuntu。 | Enabled |
部署 | Docker CIS 5.15:确保主机的进程命名空间没有共享 | 创建容器和主机之间的进程级隔离。进程 ID (PID)命名空间隔离进程 ID 空间,这意味着不同 PID 命名空间中的进程可以具有相同的 PID。 | Enabled |
部署 | Docker CIS 5.16 :确保主机的 IPC 命名空间没有被共享 | 当主机上的 IPC 命名空间与容器共享时发出警报。IPC (POSIX/SysV IPC)命名空间分隔名为共享内存段、emaphores 和消息队列。 | Enabled |
部署 | Docker CIS 5.19: Ensure mount propagation mode is not enabled | 启用挂载传播模式时的警报。启用挂载传播模式时,您可以使用 Bidirectional、Host to Container 和 None 模式挂载容器卷。除非明确需要,否则不要使用双向挂载传播模式。 | Enabled |
部署 | Docker CIS 5.21 :确保默认 seccomp 配置集没有禁用 | 当 seccomp 配置集被禁用时发出警报。seccomp 配置集使用允许列表来允许常见的系统调用和阻止所有其他系统。 | Disabled |
部署 | Docker CIS 5.7:确保特权端口没有在容器中映射 | 在容器内映射特权端口时发出警报。低于 1024 的 TCP/IP 端口号是特权端口。普通用户和进程因为安全原因无法使用它们,但容器可能会将其端口映射到特权端口。 | Enabled |
部署 | Docker CIS 5.9 和 5.20 :确保主机的网络命名空间没有共享 | 当主机的网络命名空间共享时发出警报。当 HostNetwork 启用后,容器不会被放在单独的网络堆栈中,容器的网络不会被容器化。因此,容器可以完全访问主机的网络接口,并启用共享的 UTS 命名空间。UTS 命名空间提供主机名和 NIS 域名之间的隔离,并设置主机名和域,这些主机名和域对在该命名空间中运行进程可见。在容器内运行的进程通常需要知道主机名或域名,因此 UTS 命名空间不应与主机共享。 | Enabled |
部署 | 无扫描的镜像 | 当部署包含没有扫描的镜像时发出警报。 | Disabled |
Runtime | Kubernetes 操作:进入 Pod 的端口 | 当 Kubernetes API 收到端口转发请求时发出警报。 | Enabled |
部署 | 挂载容器运行时套接字 | 当部署具有容器运行时套接字上的卷挂载时发出警报。 | Enabled |
部署 | 挂载敏感主机目录 | 当部署挂载敏感主机目录时发出警报。 | Enabled |
部署 | 没有指定资源请求或限制 | 当部署包含没有资源请求和限值的容器时发出警报。 | Enabled |
部署 | Pod 服务帐户令牌自动挂载 | 通过将默认服务帐户令牌挂载到应用需要与 Kubernetes API 交互的 pod 中,防止 pod 默认服务帐户令牌受到影响。 | Enabled |
部署 | 特权容器 | 当部署包含以特权模式运行的容器时发出警报。 | Enabled |
Runtime | crontab 执行 | 检测 crontab 调度作业编辑器的使用情况。 | Enabled |
Runtime | 检测到 netcat 执行 | 检测 netcat 在容器中运行的时间。 | Enabled |
Runtime | openshift: Advanced Cluster Security Central Admin Secret Accessed | 当某人访问 Red Hat Advanced Cluster Security Central secret 时发出警报。 | Enabled |
Runtime | OpenShift:由 Impersonated User 访问的 Kubernetes Secret | 当某人模拟用户访问集群中的 secret 时发出警报。 | Enabled |
Runtime | 远程文件复制二进制执行 | 当部署运行远程文件复制工具时发出警报。 | Enabled |
6.3.4. 低严重性安全策略
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中的默认安全策略,它们严重性较低。策略按生命周期阶段进行组织。
生命周期阶段 | 名称 | Description | 状态 |
---|---|---|---|
构建或部署 | 90 天镜像期限 | 当部署在 90 天内没有更新时发出警报。 | Enabled |
构建或部署 | 使用 ADD 命令而不是 COPY | 当部署使用 ADD 命令时发出警报。 | Disabled |
构建或部署 | 镜像中 alpine Linux Package Manager (apk) | 当部署包含 Alpine Linux 软件包管理器(apk)时发出警报。 | Enabled |
构建或部署 | 镜像中的 curl | 当部署包含 curl 时发出警报。 | Disabled |
构建或部署 | Docker CIS 4.1:确保为 Container Has Been 创建的用户 | 确保容器以非 root 用户身份运行。 | Enabled |
构建或部署 | Docker CIS 4.7: Alert on Update instructions | 确保 Dockerfile 中没有单独使用更新指令。 | Enabled |
构建或部署 | 在 CMD 中指定不安全 | 当部署在命令中使用 "insecure" 时发出警报。 | Enabled |
构建或部署 | latest 标签 | 当部署包含使用 'latest' 标签的镜像时发出警报。 | Enabled |
构建或部署 | 镜像中的 Red Hat Package Manager | 当部署包含红帽、Fedora 或 CentOS 软件包管理系统的组件时发出警报。 | Enabled |
构建或部署 | 所需的镜像标签 | 当部署包含缺少指定标签的镜像时发出警报。 | Disabled |
构建或部署 | Ubuntu Package Manager 执行 | 检测 Ubuntu 软件包管理系统的使用。 | Enabled |
构建或部署 | 镜像中的 Ubuntu Package Manager | 当部署包含镜像中 Debian 或 Ubuntu 软件包管理系统的组件时,发出警报。 | Enabled |
构建或部署 | 镜像中的 wget | 当部署包含 wget 时的警报。 | Disabled |
部署 | 丢弃所有功能 | 当部署没有丢弃所有功能时发出警报。 | Disabled |
部署 | 不正确的使用编配器 secret 卷 | 当部署使用带有 'VOLUME /run/secrets' 的 Dockerfile 时发出警报。 | Enabled |
部署 | 部署 Kubernetes 仪表板 | 当检测到 Kubernetes 仪表板服务时发出警报。 | Enabled |
部署 | 所需的注解: Email | 当部署缺少 'email' 注解时发出警报。 | Disabled |
部署 | 所需的注解:Owner/Team | 当部署缺少 'owner' 或 'team' 注解时发出警报。 | Disabled |
部署 | 必需标签:Owner/Team | 当部署缺少 'owner' 或 'team' 标签时发出警报。 | Disabled |
Runtime | alpine Linux Package Manager Execution | 当 Alpine Linux 软件包管理器(apk)在运行时运行时运行时发出警报。 | Enabled |
Runtime | chkconfig Execution | 检测 ckconfig 服务管理器的使用,该服务通常不会在容器中使用。 | Enabled |
Runtime | 编译器工具执行 | 在运行时运行编译软件的二进制文件时发出警报。 | Enabled |
Runtime | Red Hat Package Manager 执行 | 在运行时运行 Red Hat、Fedora 或 CentOS 软件包管理器程序时发出警报。 | Enabled |
Runtime | Shell 管理 | 运行命令以添加或删除 shell 时发出警报。 | Disabled |
Runtime | systemctl Execution | 检测 systemctl 服务管理器的使用。 | Enabled |
Runtime | systemd 执行 | 检测 systemd 服务管理器的使用。 | Enabled |
6.3.5. 默认安全策略
Red Hat Advanced Cluster Security for Kubernetes 包括了一组默认策略,它们提供了广泛的覆盖范围来识别安全问题,并确保环境中安全性的最佳实践。您可以使用 RHACS 门户查看默认策略,克隆它们,并编辑克隆的默认策略。
策略不支持默认策略作为代码功能。
查看默认策略:
-
在 RHACS 门户中,进入 Platform Configuration
Policy Management。
Policies 视图还允许您配置策略。
策略信息被分为以下组:
- 策略 :策略的名称。
- Description: 更长的时间,对策略的警报有更详细的描述。
- 状态 :策略的当前状态,可以是 Enabled 或 Disabled。
- Notifiers:为策略配置的通知程序列表。
- 严重性 :对于所需的注意量,对策略排名(Critical、高、中或低)。
- 生命周期 :此策略应用到的容器生命周期(构建、部署或运行时)的阶段,以及启用策略时应用强制阶段。
- 策略类别 :列出类别并允许您管理策略的类别。默认情况下会列出所有类别。您可以选择使用类别名称过滤类别。
您无法删除默认策略或编辑默认策略标准。