第 1 章 监管
对于在私有云、多云和混合云环境中部署的工作负载,企业必须满足内部对软件工程、安全工程、弹性、安全性以及规范标准的要求。Red Hat Advanced Cluster Management for Kubernetes 监管功能为企业引进自己的安全策略提供了一个可扩展的策略框架。
继续阅读 Red Hat Advanced Cluster Management 监管框架的相关主题:
1.1. 策略控制器 复制链接链接已复制到粘贴板!
策略控制器监控并报告集群是否合规。使用 Red Hat Advanced Cluster Management for Kubernetes 策略框架,使用支持的策略模板应用由这些控制器管理的策略。策略控制器管理 Kubernetes 自定义资源定义实例。
策略控制器检查策略违反情况,如果控制器支持强制功能,可以使集群状态合规。查看以下主题以了解有关以下 Red Hat Advanced Cluster Management for Kubernetes 策略控制器的更多信息:
重要: 只有配置策略控制器策略支持 enforce
功能。当策略控制器不支持 enforce
功能时,您必须手动修复策略。
1.1.1. Kubernetes 配置策略控制器 复制链接链接已复制到粘贴板!
使用配置策略控制器来配置任何 Kubernetes 资源,并在集群中应用安全策略。配置策略控制器与本地 Kubernetes API 服务器通信,以便您可以获取集群中的配置列表。
在安装过程中,配置策略控制器是在受管集群上创建的。配置策略在 hub 集群上的策略的 policy-templates
字段中提供,并由监管框架传播到所选受管集群。
当配置策略控制器的 remediationAction
设置为 InformOnly
时,父策略不会强制执行配置策略,即使父策略中的 remediationAction
被设置为 enforce
。
如果您想将现有的 Kubernetes 清单放入到一个策略,则策略生成器是完成此任务的有用工具。
1.1.1.1. 配置策略 YAML 结构 复制链接链接已复制到粘贴板!
您可以通过运行 oc explain --api-version=policy.open-cluster-management.io/v1 ConfigurationPolicy.<field-path>
; 命令来查找受管集群上的字段描述。将 <field-path
> 替换为您需要的字段的路径。
1.1.1.2. 配置策略 YAML 标 复制链接链接已复制到粘贴板!
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 策略的名称。 |
| 没有指定命名空间的命名空间对象是必需的 |
决定对象要应用到的受管集群中的命名空间。 |
| 必填 |
指定当策略不合规时要执行的操作。使用以下参数值: |
| 选填 |
根据当前的合规性,配置配置策略发送的合规性消息。每个消息配置都是可以包含 Go 模板的字符串。 [source,yaml] ---- .Policy.status.relatedObjects[*].object ----
如果您设置了 |
| 选填 | 为合规配置策略配置自定义消息。Go 模板和 UTF-8 编码字符(包括 emoji 和外字符)是支持的值。 |
| 选填 | 为不合规的配置策略配置自定义消息。Go 模板和 UTF-8 编码字符(包括 emoji 和外字符)是支持的值。 |
| 必填 |
当策略不合规时,指定严重性。使用以下参数值: |
| 选填 |
指定处于特定合规状态时要评估的策略的频率。使用
当受管集群具有较低资源时,可以将评估间隔设置为长时间轮询间隔,以减少 Kubernetes API 和策略控制器上的 CPU 和内存使用情况。这是持续时间的格式。例如, |
| 选填 |
指定合规策略的评估频率。要启用前面的轮询行为,请将此参数设置为 |
| 选填 |
指定不合规策略的评估频率。要启用前面的轮询行为,请将此参数设置为 |
| 选填 |
用于控制器的 Kubernetes 对象数组(已定义或包含字段子集),以便与受管集群上的对象进行比较。注: 虽然 |
| 选填 |
用于使用原始 YAML 字符串设置对象模板。指定对象模板的条件,其中支持 if-else 语句和 {{- if eq .metadata.name "policy-grc-your-meta-data-name" }} replicas: 2 {{- else }} replicas: 1 {{- end }}
注: 虽然 |
| 必填 | 在受管集群中定义 Kubernetes 对象的所需状态。使用以下动词之一作为参数值:
|
| 选填 |
当将清单的 metadata 部分与集群中的对象比较时覆盖 |
| 选填 |
使用此参数指定是否和在哪里显示集群中的对象与策略中的
默认情况下,如果控制器没有检测区别中的敏感数据,则此参数被设置为 |
| 选填 |
描述在需要更新时删除和重新创建对象的时间。当您将对象设置为 |
| 必填 | 用于控制器的 Kubernetes 对象数组(完整定义或包含字段子集),以便与受管集群上的对象进行比较。 |
| 选填 | 决定在从受管集群中删除策略时是否清理与策略相关的资源。 |
1.1.1.3. 其他资源 复制链接链接已复制到粘贴板!
如需更多信息,请参阅以下主题:
- 请参阅创建配置策略。
- 有关 hub 集群策略的详情,请参阅 Hub 集群策略框架。
-
请参阅
CM-Configuration-Management
文件夹 中的使用 NIST Special Publication 800-53 (Rev. 4) 的策略示例。 - 有关空运行支持的详情,请查看 Kubernetes 文档 Dry-run。
- 了解策略如何应用到您的 hub 集群,请参阅支持的策略以了解更多详细信息。
- 有关控制器的详情,请参阅策略控制器。
- 自定义策略控制器配置。请参阅策略控制器高级配置。
- 参阅清理由策略创建的资源文档中的有关清理资源及其他相关的内容。
- 请参阅策略生成器。
- 了解如何创建和自定义策略,请参阅监管仪表板。
- 请参阅模板处理。
1.1.2. 证书策略控制器 复制链接链接已复制到粘贴板!
您可以使用证书策略控制器来检测接近到期的证书,持续时间(小时)过长,或者包含无法与指定模式匹配的 DNS 名称。您可以将证书策略添加到 hub 集群上的策略的 policy-templates
字段中,它使用监管框架传播到所选受管集群。如需有关 hub 集群策略的更多详情,请参阅 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
中。
1.1.2.1. 证书策略控制器 YAML 结构 复制链接链接已复制到粘贴板!
查看证书策略的以下示例,并查看 YAML 表中的元素:
1.1.2.1.1. 证书策略控制器 YAML 表 复制链接链接已复制到粘贴板!
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略的名称。 |
| 选填 |
在证书策略中, |
| 必填 |
决定监控 secret 的受管集群中的命名空间。
注: 如果证书策略控制器的 |
| 选填 | 指定识别对象属性。请参阅 Kubernetes 标签和选择器文档。 |
| 必填 |
指定您的策略的修复。将参数值设置为 |
| 选填 |
当策略不合规时,会告知用户的严重性。使用以下参数值: |
| 必填 |
如果没有指定值,则默认为 |
| 选填 |
设定一个与其他证书不同的值来标识可能很快过期的签名证书。如果没有指定参数值,则 CA 证书过期时间作为 |
| 选填 | 指定一个值来标识创建的时间超过您所期望的限制值的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 |
| 选填 | 创建一个值来标识创建的时间超过您定义的限制值的签名的证书。参数使用 Golang 的持续时间格式。如需更多信息,请参阅 Golang 解析持续时间。 |
| 选填 | 正则表达式,必须与您证书中定义的每个 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。如需更多信息,请参阅 Golang 郑则表达式语法。 |
| 选填 | 正则表达式,不能与证书中定义的任何 SAN 条目匹配。这个参数会根据特征检查 DNS 名称。
注:要检测通配符证书,请使用以下 SAN 模式: 如需更多信息,请参阅 Golang 郑则表达式语法。 |
1.1.2.2. 证书策略示例 复制链接链接已复制到粘贴板!
当在 hub 集群上创建证书策略控制器时,会在受管集群上创建复制策略。请参阅 policy-certificate.yaml
查看证书策略示例。
1.1.2.3. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅管理安全策略以了解更多详细信息。
- 如需更多主题,请参阅策略控制器介绍。
- 返回 证书简介。
1.1.3. 策略控制器 复制链接链接已复制到粘贴板!
策略控制器将策略状态范围聚合到同一命名空间中定义的策略。创建策略集合(PolicySet
),以对同一命名空间中的策略进行分组。PolicySet
中的所有策略都放在选定集群中,方法是创建一个 PlacementBinding
来绑定 PolicySet
和 Placement
。策略集已部署到 hub 集群。
另外,当策略是多个策略集的一部分时,现有和新的 Placement
资源保留在策略中。当用户从策略集合中删除策略时,策略不会应用到在策略集合中选择的集群,但放置会保留。策略控制器只检查包括策略设置放置的集群中的违反情况。
备注:
- Red Hat Advanced Cluster Management 示例策略集使用集群放置。如果使用集群放置,请将包含策略的命名空间绑定到受管集群集。有关使用集群放置的详情,请参阅在集群中部署策略。
-
要使用
放置资源
,ManagedClusterSet
资源必须绑定到带有ManagedClusterSetBinding
资源的Placement
资源的命名空间。如需了解更多详细信息 ,请参阅创建 ManagedClusterSetBinding 资源。
在以下部分了解更多有关策略设置结构的详细信息:
1.1.3.1. 策略设置 YAML 结构 复制链接链接已复制到粘贴板!
您的策略集可能类似以下 YAML 文件:
1.1.3.2. 策略设置表 复制链接链接已复制到粘贴板!
查看以下参数表以获详细信息:
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 添加策略的配置详情。 |
| 选填 | 要在策略集合中分组的策略列表。 |
1.1.3.3. 策略示例 复制链接链接已复制到粘贴板!
1.1.3.4. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅 Red Hat OpenShift Platform Plus 策略集。
- 请参阅管理安全策略部分中的创建策略部分。
-
另外,查看 stable
PolicySets
,这需要用于部署的 Policy Generator,PolicySets-table。
1.1.4. Operator 策略控制器 复制链接链接已复制到粘贴板!
Operator 策略控制器允许您在集群中监控和安装 Operator Lifecycle Manager operator。使用 Operator 策略控制器来监控操作器的不同部分的健康状况,并指定如何自动处理对 Operator 的更新。
您还可以使用监管框架将 Operator 策略分发到受管集群,并将策略添加到 hub 集群上的策略的 policy-templates
字段中。
您还可以使用 operator 策略的 operatorGroup
和 subscription
字段中的模板值。如需更多信息,请参阅模板处理。
1.1.4.1. 先决条件 复制链接链接已复制到粘贴板!
- Operator Lifecycle Manager 必须在受管集群中可用。这在 Red Hat OpenShift Container Platform 中默认启用。
- 需要的访问权限:集群管理员
1.1.4.2. Operator 策略 YAML 表 复制链接链接已复制到粘贴板!
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 |
如果将 operator 策略的 |
| 选填 |
默认情况下,如果没有指定
|
| 必填 |
指定集群上 Operator 的所需状态。如果设置为 |
| 选填 |
当您强制定义
|
| 必填 | 定义创建 operator 订阅的配置。在以下字段中添加信息以创建 operator 订阅。查看以下参数描述:
注: 如果您在此参数中为 |
| 选填 |
使用此参数定义与操作器关联的特定场景的合规性行为。您可以单独设置以下选项,其中支持的值为
|
| 必填 |
如果 |
| 选填 |
声明哪些 Operator 版本合规。如果字段为空,则集群中运行的任何版本都被视为合规。如果该字段不为空,则受管集群上的版本必须与列表中的一个版本匹配,以便策略兼容。如果策略被设置为 |
1.1.4.3. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅模板处理。
-
如需了解更多详细信息 ,请参阅使用
OperatorPolicy
资源 安装 Operator。 - 请参阅 在断开连接的环境中管理 Operator 策略。
- 请参阅 OpenShift Container Platform 文档中的 Subscription 主题。
- 如需了解更多详细信息,请参阅 Operator Lifecycle Manager (OLM)。
- 如需有关 OLM 的常规信息,请参阅 在集群中添加 Operator 文档。