This documentation is for a release that is no longer maintained.
You can select a different version or view all RHACS documentation.第 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 会联系镜像扫描程序,这会增加显著的延迟。
如果您禁用此设置,则执行决定仅在有缓存的扫描结果可用时考虑镜像扫描标准。
-
对于 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.41 或更新版本,缓存的扫描结果仅适用于其镜像摘要(
@sha256:...)引用的镜像。
-
对于 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.41 或更新版本,缓存的扫描结果仅适用于其镜像摘要(
您可以使用准入控制器强制:
-
pod
securityContext中的选项。 - 部署配置。
- 镜像组件和漏洞。
-
pod
您不能将准入控制器强制用于:
- 任何运行时行为,如进程。
- 基于端口暴露的任何策略。
-
如果 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 仍然会应用其他部署时执行机制,如扩展到零个副本。
您可在安装 Sensor 或编辑现有集群配置时,从 Clusters 视图启用准入控制器强制。
从 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.55.0 开始,准入控制器 Webhook 被默认部署到集群中。
流程
-
在 RHACS 门户,导航到 Platform Configuration
Clusters。 - 从列表中选择现有集群,或者选择 + New Cluster。
- 在集群配置面板中输入集群详情。
- 红帽建议,如果您计划使用准入控制器强制处理对象创建事件,则只打开 Configure Admission Controller Webhook 以侦听创建 切换。
- 红帽建议,如果您计划使用准入控制器强制强制处理 更新事件,则只打开 Configure Admission Controller Webhook 以侦听 更新切换。
- 红帽建议,如果您计划使用准入控制器强制强制处理 pod 执行 和 pod 端口转发事件,则只打开 Enable Admission Controller Webhook 以侦听 exec 和 port-forward 事件。
配置以下选项:
- 在 对象 Creates 上强制实施 :这个切换控制准入控制服务的行为。您必须具有 Configure Admission Controller Webhook 才能监听 打开的 Create 切换才能正常工作。
- 在对象更新 上强制实施 :此切换控制准入控制服务的行为。您必须具有 Configure Admission Controller Webhook 才能监听打开 updates 切换才能正常工作。
- 选择 Next。
在 Download files 部分中,选择 Download YAML Files and Keys。
注意在为现有集群启用准入控制器时,如果您对以下几项进行任何更改,
- 静态配置 部分,您必须下载 YAML 文件并重新部署 Sensor。
- 动态配置 部分,您可以跳过下载文件和部署,因为 Red Hat Advanced Cluster Security for Kubernetes 会自动同步 Sensor 并应用更改。
- 选择 Finish。
验证
在使用生成的 YAML 置备新集群后,运行以下命令验证是否正确配置了准入控制器强制:
oc get ValidatingWebhookConfiguration
$ oc get ValidatingWebhookConfiguration1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
输出示例
NAME CREATED AT stackrox 2019-09-24T06:07:34Z
NAME CREATED AT stackrox 2019-09-24T06:07:34ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可在安装 Sensor 或编辑现有集群配置时,从 Clusters 视图启用准入控制器强制。
流程
-
在 RHACS 门户,导航到 Platform Configuration
Clusters。 - 从列表中选择现有集群,或者选择 + New Cluster。
- 在集群配置面板中填写集群的详情。
-
打开 Static Configuration 部分中的 Create Admission Controller Webhook 切换。此设置控制 Kubernetes 还是 OpenShift Container Platform 是否配置为联系带有
AdmissionReview请求的 Red Hat Advanced Cluster Security for Kubernetes。 红帽建议,如果您计划使用准入控制器强制强制更新,则仅打开 Configure Admission Controller Webhook 以侦听更新 切换。
注意Configure Admission Controller Webhook to listen on updates 选项只在 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.41 及更新版本中可用。
当您保持关闭时,Red Hat Advanced Cluster Security for Kubernetes 会以 Kubernetes 或 OpenShift Container Platform API 服务器没有发送对象更新事件的方式创建
ValidatingWebhookConfiguration。由于对象更新的卷通常高于对象创建的,因此关闭后会限制准入控制服务的负载。-
打开 Dynamic Configuration 部分中的 Enable Admission Controller 切换。此设置控制 Red Hat Advanced Cluster Security for Kubernetes 是否评估策略 ; 如果禁用,则会自动接受所有
AdmissionReview请求。 配置以下选项:
在更新时强制实施 :这个切换控制准入控制服务的行为。您必须具有 Configure Admission Controller Webhook 才能监听打开 updates 切换才能正常工作。
注意Enforce on Updates 选项只在 Red Hat Advanced Cluster Security for Kubernetes 版本 3.0.41 及更新版本中可用。
- Timeout :评估准入检查请求时应等待 Red Hat Advanced Cluster Security for Kubernetes 的最大时间。在启用镜像扫描时,使用它来设置请求超时。如果镜像扫描的运行时间超过指定时间,Red Hat Advanced Cluster Security for Kubernetes 接受了请求。如果镜像违反了适用的策略,其他实施选项(如将部署扩展到零个副本)仍然会被应用。
- 联系镜像扫描器 :打开此切换以启用镜像扫描。在启用这个切换前,请参阅镜像扫描的信息。
- 禁用使用 bypass Annotation :打开这个切换来禁用准入控制器。
- 选择 Next。
在 Download files 部分中,选择 Download YAML Files and Keys。
注意在为现有集群启用准入控制器时,如果您对以下几项进行任何更改,
- 静态配置 部分,您必须下载 YAML 文件并重新部署 Sensor。
- 动态配置 部分,您可以跳过下载文件和部署,因为 Red Hat Advanced Cluster Security for Kubernetes 会自动同步 Sensor 并应用更改。
- 选择 Finish。
验证
在使用生成的 YAML 置备新集群后,运行以下命令验证是否设置了准入控制器强制:
oc get ValidatingWebhookConfiguration
$ oc get ValidatingWebhookConfiguration1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 Kubernetes,请输入
kubectl而不是oc。
输出示例
NAME CREATED AT stackrox 2019-09-24T06:07:34Z
NAME CREATED AT stackrox 2019-09-24T06:07:34ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow