第 2 章 与 CI 系统集成


Red Hat Advanced Cluster Security for Kubernetes (RHACS)与各种持续集成(CI)产品集成。在部署镜像前,您可以使用 RHACS 将构建时间和部署时间安全规则应用到您的镜像。

在构建镜像并推送到 registry 后,RHACS 集成到 CI 管道中。首先推送镜像可让开发人员在处理任何策略违反情况时继续测试其工件,以及任何其他 CI 测试失败、Linter违反或其他问题。

如果可能,将版本控制系统配置为阻止在构建阶段(包括 RHACS 检查)进行合并的拉取或合并请求。

通过联系 RHACS 安装来检查镜像是否符合您配置的构建时策略,与 CI 产品功能集成。如果存在策略违反情况,则会在控制台日志中显示详细消息,包括策略描述、理由和补救说明。

每个策略都包括一个可选的强制设置。如果您为构建时间强制标记策略,则该策略的失败会导致客户端退出,并带有非零错误代码。

要将 Red Hat Advanced Cluster Security for Kubernetes 与 CI 系统集成,请按照以下步骤操作:

2.1. 配置构建策略

您可以在构建期间检查 RHACS 策略。

流程

  1. 配置适用于容器生命周期的构建时间的策略。
  2. 与在构建期间推送到的 registry 集成。

2.1.1. 检查现有的构建时策略

使用 RHACS 门户检查您在 Red Hat Advanced Cluster Security for Kubernetes 中配置的任何现有构建时间策略。

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. 使用全局搜索搜索 Lifecycle Stage:Build

2.1.2. 创建新系统策略

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

流程

  1. 在 RHACS 门户中,进入 Platform Configuration Policy Management
  2. 单击 + New Policy
  3. 输入策略的 Name
  4. 选择策略的严重性级别:Critical, High, Medium, 或 Low。
  5. 选择适用于策略的生命周期阶段Build, Deploy, 或 Runtime。您可以选择多个阶段。

    注意

    如果您创建了一个与 CI 系统集成的新策略,请选择 Build 作为生命周期阶段。

    • 构建时策略适用于 CVE 和 Dockerfile 指令等镜像字段。
    • 部署时策略可以包含所有构建时策略标准。它们也可以有集群配置中的数据,如以特权模式运行或挂载 Docker 守护进程套接字。
    • 运行时策略可包括所有构建时间和部署时间策略标准,以及有关进程在运行时执行的数据。
  6. Description,Rationale, 和 Remediation 字段中输入有关策略的信息。当 CI 验证构建时,会显示这些字段中的数据。因此,包括解释策略的所有信息。
  7. Categories 下拉菜单中选择一个类别。
  8. Notifications 下拉菜单中选择一个通知程序,在针对此策略发生违反时接收警报通知。

    注意

    您必须将 RHACS 与通知提供程序(如 Webhook、JIRA 或 PagerDuty)集成,才能接收警报通知。只有在您使用 RHACS 集成了任何通知供应商时,notifiers 才会显示。

  9. 使用 Restrict to Scope 只为特定集群、命名空间或标签启用此策略。您可以添加多个范围,并将 RE2 语法中的正则表达式用于命名空间和标签。
  10. 使用 Exclude by Scope 来排除部署、集群、命名空间和标签。此字段表示策略不适用于您指定的实体。您可以添加多个范围,并将 RE2 语法中的正则表达式用于命名空间和标签。但是,您无法使用正则表达式来选择部署。
  11. 对于 Excluded Images (Build Lifecycle only),请从您不想触发策略违反列表中选择所有镜像。

    注意

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

  12. Policy Criteria 部分中,配置触发该策略的属性。
  13. 在面板标头中选择 Next
  14. 新策略面板显示启用策略时触发的违反情况的预览。
  15. 在面板标头中选择 Next
  16. 选择策略的强制行为。强制设置仅适用于您为 Lifecycle Stages 选项选择的阶段。选择 ON 来强制执行策略并报告违反情况。选择 OFF 来仅报告违反情况。

    注意

    每个生命周期阶段的强制行为都有所不同。

    • 对于 Build 阶段,当镜像与策略条件匹配时,RHACS 会失败。
    • 对于 Deploy 阶段,RHACS 会阻止在 RHACS 准入控制器配置并运行时与策略条件匹配的部署创建或更新。

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

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

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

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

警告

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

2.1.2.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 设置中的设置,您必须重新部署安全集群才能使这些更改生效。

2.1.2.1.2. 软强制

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

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

2.1.2.1.3. 命名空间排除

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

2.1.2.1.4. 对现有部署进行强制

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.