第 2 章 与 CI 系统集成
Red Hat Advanced Cluster Security for Kubernetes (RHACS)与各种持续集成(CI)产品集成。在部署镜像前,您可以使用 RHACS 将构建时间和部署时安全规则应用到您的镜像。
构建并推送到 registry 后,RHACS 集成到 CI 管道中。首先推送镜像可让开发人员在处理任何策略违反情况时继续测试其工件,同时处理任何其他 CI 测试失败、linter violations 或其他问题。
如果可能,将版本控制系统配置为阻止在构建阶段(包括 RHACS 检查)失败时的拉取或合并请求。
通过联系 RHACS 安装来与您的 CI 产品集成,以检查镜像是否符合您配置的构建时间策略。如果有策略违反情况,控制台日志中会显示一个详细的信息,包括策略描述、比例和补救说明。
每个策略都包括一个可选的强制设置。如果您为构建时间强制标记策略,则该策略失败会导致客户端以非零错误代码退出。
要将 Red Hat Advanced Cluster Security for Kubernetes 与 CI 系统集成,请按照以下步骤执行:
2.1. 配置构建策略 复制链接链接已复制到粘贴板!
您可以在构建期间检查 RHACS 策略。
流程
- 配置适用于容器生命周期的构建时间的策略。
- 与在构建期间推送到的 registry 集成。
2.1.1. 检查现有的构建时间策略 复制链接链接已复制到粘贴板!
使用 RHACS 门户检查您在 Red Hat Advanced Cluster Security for Kubernetes 中配置的任何现有构建时间策略。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Policy Management。 -
使用全局搜索搜索
Lifecycle Stage:Build
。
2.1.2. 创建新系统策略 复制链接链接已复制到粘贴板!
除了使用默认策略外,您还可以在 Red Hat Advanced Cluster Security for Kubernetes 中创建自定义策略。
流程
-
在 RHACS 门户中,进入 Platform Configuration
Policy Management。 - 单击 + New Policy。
- 输入策略的 Name。
- 选择策略的严重性级别:Critical, High, Medium, 或 Low。
选择适用于策略的生命周期阶段,Build, Deploy, 或 Runtime。您可以选择多个阶段。
注意如果您为与 CI 系统创建新策略,请选择 Build 作为生命周期阶段。
- 构建时策略适用于镜像字段,如 CVE 和 Dockerfile 指令。
- Deployment-time 策略可以包含所有构建时策略标准。它们也可以具有来自集群配置的数据,如以特权模式运行或挂载 Docker 守护进程套接字。
- 运行时策略可以包含所有构建时间和部署时间策略标准,以及运行时期间进程执行的数据。
- 在 Description,Rationale, 和 Remediation 字段中输入有关策略的信息。当 CI 验证构建时,将显示这些字段中的数据。因此,包含解释该策略的所有信息。
- 从 Categories 下拉菜单中选择类别。
从 通知下拉菜单中选择通知程序,该下拉菜单在出现违反此策略时接收警报通知。
注意您必须将 RHACS 与通知供应商(如 Webhook、JIRA 或 PagerDuty)集成,才能接收警报通知。只有在您使用 RHACS 集成任何通知供应商时,才会显示通知程序。
- 使用 Restrict to Scope 仅为特定集群、命名空间或标签启用此策略。您可以添加多个范围,还可在 RE2 语法中使用正则表达式进行命名空间和标签。
- 使用 Exclude by Scope 来排除部署、集群、命名空间和标签。此字段表示策略不适用于您指定的实体。您可以添加多个范围,还可在 RE2 语法中使用正则表达式进行命名空间和标签。但是,您无法使用正则表达式来选择部署。
对于 Excluded Images (仅限Build Lifecycle),请从您不想为其触发违反的列表中选择所有镜像。
注意Excluded Images (Build Lifecycle only) 设置仅在检查持续集成系统中的镜像(构建生命周期阶段)时才适用。如果您使用此策略检查运行部署( Deploy 生命周期阶段)或运行时活动( Runtime 生命周期阶段),则它无效。
- 在 Policy Criteria 部分中,配置将触发该策略的属性。
- 在面板标头中选择 Next。
- 新策略面板显示在启用策略时触发的违反情况的预览。
- 在面板标头中选择 Next。
选择策略的强制行为。强制设置仅适用于您为 Lifecycle Stages 选项选择的阶段。选择 ON 强制执行策略并报告违反情况。选择 OFF 只报告违反情况。
注意每个生命周期阶段的强制行为都有所不同。
- 对于 Build 阶段,当镜像与策略条件匹配时,RHACS 将无法进行 CI 构建。
对于 Deploy 阶段,如果 RHACS 准入控制器配置并运行,RHACS 会阻止创建和更新与策略条件匹配的部署。
- 在带有准入控制器强制的集群中,Kubernetes 或 OpenShift Container Platform API 服务器会阻止所有不合规的部署。在其他集群中,RHACS 编辑不合规部署,以防止调度 pod。
- 对于现有部署,策略更改仅在发生 Kubernetes 事件时在下次检测条件时导致强制。有关强制的更多信息,请参阅"部署阶段的安全策略强制"。
- 对于 Runtime 阶段,RHACS 会停止与策略条件匹配的所有 pod。
警告策略实施可能会影响运行应用程序或开发流程。在启用强制选项前,请通知所有利益相关者,并计划如何响应自动强制操作。
2.1.2.1. 部署阶段的安全策略强制 复制链接链接已复制到粘贴板!
Red Hat Advanced Cluster Security for Kubernetes 支持两种类型的安全策略强制进行部署时间策略强制:通过准入控制器和 RHACS Sensor 的软强制进行硬强制。准入控制器会阻止创建或更新违反策略的部署。如果准入控制器被禁用或不可用,则 Sensor 可以通过将违反策略部署到 0
的部署来缩减副本来执行强制。
策略实施可能会影响运行应用程序或开发流程。在启用强制选项前,请通知所有利益相关者,并计划如何响应自动强制操作。
2.1.2.1.1. 硬强制 复制链接链接已复制到粘贴板!
硬强制由 RHACS 准入控制器执行。在带有准入控制器强制的集群中,Kubernetes 或 OpenShift Container Platform API 服务器会阻止所有不合规的部署。准入控制器会阻止 CREATE
和 UPDATE
操作。任何满足启用了 deploy-time 强制配置的策略的 pod 创建或更新请求都将失败。
Kubernetes 准入 webhook 仅支持 CREATE
、UPDATE
、DELETE
或 CONNECT
操作。RHACS 准入控制器只支持 CREATE
和 UPDATE
操作。kubectl patch
、kubectl set
和 kubectl 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 设置进行了更改,您必须重新部署安全集群才能使这些更改生效。
2.1.2.1.2. 软强制 复制链接链接已复制到粘贴板!
软强制由 RHACS Sensor 执行。这个强制可防止启动操作。使用软强制时,Sensor 将副本扩展到 0,并阻止调度 pod。在这个强制中,集群中提供了非就绪的部署。
如果配置了软强制,且 Sensor 停机,则 RHACS 无法执行强制。
2.1.2.1.3. 命名空间排除 复制链接链接已复制到粘贴板!
默认情况下,RHACS 从强制阻止中排除某些管理命名空间,如 stackrox
、kube-system
和 istio-system
命名空间。这样做的原因是,必须部署这些命名空间中的一些项目才能使 RHACS 正常工作。
2.1.2.1.4. 对现有部署的强制 复制链接链接已复制到粘贴板!
对于现有部署,策略更改仅在发生 Kubernetes 事件时在下次检测条件时导致强制。如果对策略进行更改,您必须通过选择 Policy Management 并点 Reassess All 来重新评估策略。此操作会在所有现有部署中应用部署策略,无论是否有新的传入的 Kubernetes 事件。如果违反了策略,则 RHACS 执行强制。