2.3. 策略控制器介绍
策略控制器监控并报告集群是否合规。使用 Red Hat Advanced Cluster Management for Kubernetes 策略框架,使用支持的策略模板应用由这些控制器管理的策略。策略控制器管理 Kubernetes 自定义资源定义实例。
策略控制器检查策略违反情况,如果控制器支持强制功能,可以使集群状态合规。查看以下主题以了解有关以下 Red Hat Advanced Cluster Management for Kubernetes 策略控制器的更多信息:
重要: 只有配置策略控制器策略支持 enforce 功能。当策略控制器不支持 enforce 功能时,您必须手动修复策略。
2.3.1. Kubernetes 配置策略控制器 复制链接链接已复制到粘贴板!
配置策略控制器可用于配置任何 Kubernetes 资源,并在集群中应用安全策略。配置策略在 hub 集群上的策略的 policy-templates 字段中提供,并由监管框架传播到所选受管集群。
在配置策略中的 object-templates 数组中定义了 Kubernetes 对象(完整或部分),指示字段的配置策略控制器与受管集群上的对象进行比较。配置策略控制器与本地 Kubernetes API 服务器通信,以获取集群中的配置列表。
配置策略控制器是在安装过程中在受管集群上创建的。配置策略控制器支持 enforce 和 InformOnly 功能,以便在配置策略不合规时进行修复。
当将配置策略的 remediationAction 设置为 enforce 时,控制器会将指定的配置应用到目标受管集群。
当将配置策略的 remediationAction 设置为 InformOnly 时,父策略不会强制执行配置策略,即使父策略中的 remediationAction 被设置为 enforce。
注: 指定没有名称的对象的配置策略只能是 inform。
您还可以在配置策略中使用模板的值。如需更多信息,请参阅模板处理。
如果您想将现有的 Kubernetes 清单放入到一个策略,则策略生成器是完成此任务的有用工具。
2.3.1.1. 配置策略示例 复制链接链接已复制到粘贴板!
2.3.1.2. 配置策略 YAML 标 复制链接链接已复制到粘贴板!
| 字段 | 可选或必需的 | 描述 |
|---|---|---|
|
| 必填 |
将值设置为 |
|
| 必填 |
将值设为 |
|
| 必填 | 策略的名称。 |
|
| 没有指定命名空间的命名空间对象是必需的 |
决定对象要应用到的受管集群中的命名空间。 |
|
| 必填 |
指定当策略不合规时要执行的操作。使用以下参数值: |
|
| 必填 |
当策略不合规时,指定严重性。使用以下参数值: |
|
| 选填 |
用于定义策略处于合规状态时的评估频率。该值的格式必须是一个持续时间,它是带有时间单元后缀的数字序列。例如:
默认情况下,当 |
|
| 选填 |
用于定义策略处于不合规状态时的频率。与 |
|
| 选填 |
用于控制器的 Kubernetes 对象数组(已定义或包含字段子集),以便与受管集群上的对象进行比较。注: 虽然 |
|
| 选填 |
用于使用原始 YAML 字符串设置对象模板。指定对象模板的条件,其中支持 if-else 语句和
注: 虽然 |
|
| 必填 | 在受管集群中定义 Kubernetes 对象的所需状态。使用以下动词之一作为参数值:
|
|
| 选填 |
当将清单的 metadata 部分与集群中的对象比较时覆盖 |
|
| 选填 |
使用此参数指定是否和在哪里显示集群中的对象与策略中的
默认情况下,如果控制器没有检测区别中的敏感数据,则此参数被设置为 |
|
| 选填 |
描述在需要更新时删除和重新创建对象的时间。当您将对象设置为 |
|
| 必填 | 用于控制器的 Kubernetes 对象数组(完整定义或包含字段子集),以便与受管集群上的对象进行比较。 |
|
| 选填 | 决定在从受管集群中删除策略时是否清理与策略相关的资源。 |
2.3.1.3. 其他资源 复制链接链接已复制到粘贴板!
如需更多信息,请参阅以下主题:
- 有关 hub 集群策略的详情,请参阅策略概述。
-
请参阅
CM-Configuration-Management目录获取使用NIST Special Publication 800-53 (Rev. 4) 的,被 Red Hat Advanced Cluster Management 支持的策略示例。 - 有关空运行支持的详情,请查看 Kubernetes 文档 Dry-run。
- 了解策略如何应用到您的 hub 集群,请参阅支持的策略以了解更多详细信息。
- 有关控制器的详情,请参阅策略控制器。
- 自定义策略控制器配置。请参阅策略控制器高级配置。
- 参阅清理由策略创建的资源文档中的有关清理资源及其他相关的内容。
- 请参阅策略生成器。
- 了解如何创建和自定义策略,请参阅管理 监管仪表板。
- 请参阅模板处理。
2.3.2. 证书策略控制器 复制链接链接已复制到粘贴板!
您可以使用证书策略控制器来检测接近到期的证书,持续时间(小时)过长,或者包含无法与指定模式匹配的 DNS 名称。您可以将证书策略添加到 hub 集群上的策略的 policy-templates 字段中,它使用监管框架传播到所选受管集群。有关 hub 集群策略的详情,请参阅策略概述文档。
通过更新控制器策略中的以下参数来配置和自定义证书策略控制器:
-
minimumDuration -
minimumCADuration -
maximumDuration -
maximumCADuration -
allowedSANPattern -
disallowedSANPattern
由于以下情况之一,您的策略可能会变得不合规:
- 当证书过期的时间少于最短持续时间,或超过最长时间时。
- 当 DNS 名称与指定模式匹配时。
证书策略控制器是在受管集群上创建的。控制器与本地 Kubernetes API 服务器通信,以获取包含证书的 secret 列表,并确定所有不合规的证书。
证书策略控制器不支持 enforce 功能。
注: 证书策略控制器仅在 tls.crt 键的 secret 中自动查找证书。如果 secret 存储在不同的键下,添加名为 certificate_key_name 的标签,其值为 key,使证书策略控制器知道在不同的键中。例如,如果 secret 包含存储在名为 sensor-cert.pem 的密钥的证书,请将以下内容添加到 secret: certificate_key_name: sensor-cert.pem 中。
2.3.2.1. 证书策略控制器 YAML 结构 复制链接链接已复制到粘贴板!
查看证书策略的以下示例,并查看 YAML 表中的元素:
2.3.2.1.1. 证书策略控制器 YAML 表 复制链接链接已复制到粘贴板!
| 字段 | 可选或必需的 | 描述 |
|---|---|---|
|
| 必填 |
将值设置为 |
|
| 必填 |
将值设为 |
|
| 必填 | 用于标识策略的名称。 |
|
| 选填 |
在证书策略中, |
|
| 必填 |
决定监控 secret 的受管集群中的命名空间。
注: 如果证书策略控制器的 |
|
| 选填 | 指定识别对象属性。请参阅 Kubernetes 标签和选择器文档。 |
|
| 必填 |
指定您的策略的修复。将参数值设置为 |
|
| 选填 |
当策略不合规时,会告知用户的严重性。使用以下参数值: |
|
| 必填 |
如果没有指定值,则默认为 |
|
| 选填 |
设定一个与其他证书不同的值来标识可能很快过期的签名证书。如果没有指定参数值,则 CA 证书过期时间作为 |
|
| 选填 | 指定一个值来标识创建的时间超过您所期望的限制值的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 |
|
| 选填 | 创建一个值来标识创建的时间超过您定义的限制值的签名的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 |
|
| 选填 | 正则表达式,必须与您证书中定义的每个 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。如需更多信息,请参阅 Golang 郑则表达式语法。 |
|
| 选填 | 正则表达式,不能与证书中定义的任何 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。
注:要检测通配符证书,请使用以下 SAN 模式: 如需更多信息,请参阅 Golang 郑则表达式语法。 |
2.3.2.2. 证书策略示例 复制链接链接已复制到粘贴板!
当在 hub 集群上创建证书策略控制器时,会在受管集群上创建复制策略。请参阅 policy-certificate.yaml 查看证书策略示例。
2.3.2.3. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅管理安全策略以了解更多详细信息。
- 如需了解更多主题,请参阅策略控制器简介。
- 返回 证书简介。
2.3.3. 策略控制器 复制链接链接已复制到粘贴板!
策略控制器将策略状态范围聚合到同一命名空间中定义的策略。创建策略集合(PolicySet),以对同一命名空间中的策略进行分组。PolicySet 中的所有策略都放在选定集群中,方法是创建一个 PlacementBinding 来绑定 PolicySet 和 Placement。策略集已部署到 hub 集群。
另外,当策略是多个策略集的一部分时,现有和新的 Placement 资源保留在策略中。当用户从策略集合中删除策略时,策略不会应用到在策略集合中选择的集群,但放置会保留。策略控制器只检查包括策略设置放置的集群中的违反情况。
备注:
- Red Hat Advanced Cluster Management 示例策略集使用集群放置。如果使用集群放置,请将包含策略的命名空间绑定到受管集群集。有关使用集群放置的详情,请参阅在集群中部署策略。
-
要使用
放置资源,ManagedClusterSet资源必须绑定到带有ManagedClusterSetBinding资源的Placement资源的命名空间。如需了解更多详细信息 ,请参阅创建 ManagedClusterSetBinding 资源。
在以下部分了解更多有关策略设置结构的详细信息:
2.3.3.1. 策略设置 YAML 结构 复制链接链接已复制到粘贴板!
您的策略集可能类似以下 YAML 文件:
2.3.3.2. 策略设置表 复制链接链接已复制到粘贴板!
查看以下参数表以获详细信息:
| 字段 | 可选或必需的 | 描述 |
|---|---|---|
|
| 必填 |
将值设为 |
|
| 必填 |
将值设为 |
|
| 必填 | 用于标识策略资源的名称。 |
|
| 必填 | 添加策略的配置详情。 |
|
| 选填 | 要在策略集合中分组的策略列表。 |
2.3.3.3. 策略示例 复制链接链接已复制到粘贴板!
2.3.3.4. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅 Red Hat OpenShift Platform Plus 策略集。
- 请参阅管理安全策略部分中的创建策略部分。
-
另外,查看 stable
PolicySets,它要求 Policy Generator 用于部署,PolicySets- Stable。 - 返回到此主题的开头,策略设置控制器。
2.3.4. Operator 策略控制器 复制链接链接已复制到粘贴板!
Operator 策略控制器允许您在集群中监控和安装 Operator Lifecycle Manager Operator。使用 Operator 策略控制器来监控 Operator 的各种部分的健康状况,并指定如何自动处理 Operator 更新。
您还可以使用监管框架将 operator 策略分发到受管集群,并将策略添加到 hub 集群上的策略的 policy-templates 字段中。
您还可以使用 operator 策略的 operatorGroup 和 subscription 字段中的模板值。如需更多信息,请参阅模板处理。
2.3.4.1. 先决条件 复制链接链接已复制到粘贴板!
- Operator Lifecycle Manager 必须在受管集群中可用。这在 Red Hat OpenShift Container Platform 上默认启用。
- 需要的访问权限:集群管理员
2.3.4.2. Operator 策略 YAML 表 复制链接链接已复制到粘贴板!
| 字段 | 可选或必需的 | 描述 |
|---|---|---|
|
| 必填 |
将值设为 |
|
| 必填 |
将值设为 |
|
| 必填 | 用于标识策略资源的名称。 |
|
| 必填 |
如果将 operator 策略的 |
|
| 选填 |
默认情况下,如果没有指定 |
|
| 必填 |
指定集群上 Operator 的所需状态。如果设置为 |
|
| 选填 |
当您强制定义 |
|
| 必填 | 定义用于创建 operator 订阅的配置。在以下字段中添加信息以创建 operator 订阅。如果没有条目,会为几个项目选择默认选项:
|
|
| 选填 |
使用此参数定义与操作器关联的特定场景的合规性行为。您可以单独设置以下选项,其中支持的值为
|
|
| 必填 |
如果 |
|
| 选填 |
声明哪些 Operator 版本合规。如果字段为空,则集群中运行的任何版本都被视为合规。如果该字段不为空,则受管集群上的版本必须与列表中的一个版本匹配,以便策略兼容。如果策略被设置为 |
2.3.4.3. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅模板处理。
-
如需了解更多详细信息 ,请参阅使用
OperatorPolicy资源 安装 Operator。 - 请参阅 OpenShift Container Platform 文档中的 Subscription 主题。
- 如需了解更多详细信息,请参阅 Operator Lifecycle Manager (OLM)。
- 如需有关 OLM 的常规信息,请参阅 在集群中添加 Operator 文档。