第 4 章 使用准入控制器强制

Red Hat Advanced Cluster Security for Kubernetes 与 Kubernetes 准入控制器OpenShift Container Platform 准入插件 一起工作,允许您在 Kubernetes 或 OpenShift Container Platform 创建工作负载(如部署、守护进程集或作业)前强制实施安全策略。

Red Hat Advanced Cluster Security for Kubernetes 准入控制器可防止用户创建违反您在 Red Hat Advanced Cluster Security for Kubernetes 中配置的策略的工作负载。从 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.41 开始,您还可以配置准入控制器以防止更新违反策略的工作负载。

Red Hat Advanced Cluster Security for Kubernetes 使用 ValidatingAdmissionWebhook 控制器来验证是否置备了指定安全策略的资源。为了处理此问题,Red Hat Advanced Cluster Security for Kubernetes 会创建一个 ValidatingWebhookConfiguration,其中包含多个 webhook 规则。

当 Kubernetes 或 OpenShift Container Platform API 服务器收到与其中一个 webhook 规则匹配的请求时,API 服务器会向 Red Hat Advanced Cluster Security for Kubernetes 发送 AdmissionReview 请求。Red Hat Advanced Cluster Security for Kubernetes 随后根据配置的安全策略接受或拒绝请求。

注意

要在 OpenShift Container Platform 中使用准入控制器强制功能,您需要 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.49 或更新版本。

4.1. 了解准入控制器强制

如果要使用准入控制器强制,请考虑以下几点:

  • API 延迟 :使用准入控制器强制增加 Kubernetes 或 OpenShift Container Platform API 延迟,因为它涉及到额外的 API 验证请求。许多标准 Kubernetes 库(如 fabric8)默认具有简短的 Kubernetes 或 OpenShift Container Platform API 超时。另外,请考虑您可能使用的任何自定义自动化中的 API 超时。
  • 镜像扫描 :您可以通过在集群配置面板中设置 Contact Image Scanners 选项,选择准入控制器在查看请求时扫描镜像。

    • 如果您启用这个设置,如果扫描或镜像签名验证结果不可用,Red Hat Advanced Cluster Security for Kubernetes 会联系镜像扫描程序,这会增加显著的延迟。
    • 如果您禁用此设置,则执行决定仅在有缓存的扫描和签名结果可用时考虑镜像扫描标准。
  • 您可以使用准入控制器强制:

    • pod securityContext 中的选项。
    • 部署配置。
    • 镜像组件和漏洞。
  • 您不能将准入控制器强制用于:

    • 任何运行时行为,如进程。
    • 基于端口暴露的任何策略。
  • 如果 Kubernetes 或 OpenShift Container Platform API 服务器和 Red Hat Advanced Cluster Security for Kubernetes Sensor 之间有连接问题,准入控制器可能会失败。要解决这个问题,请删除 ValidatingWebhookConfiguration 对象,如禁用准入控制器强制部分中所述。
  • 如果您已为策略启用了部署时间执行功能,并且启用了准入控制器,Red Hat Advanced Cluster Security for Kubernetes 会尝试阻止违反该策略的部署。如果准入控制器没有拒绝不合规的部署,例如在超时时,Red Hat Advanced Cluster Security for Kubernetes 仍然会应用其他部署时执行机制,如扩展到零副本。