2.5. 支持的策略
查看支持的策略示例,了解如何在 Red Hat Advanced Cluster Management for Kubernetes 中创建和管理策略时如何在 hub 集群上定义规则、流程和控制。
2.5.1. 配置策略示例策略表
查看以下示例配置策略:
策略示例 | 描述 |
---|---|
命名空间策略 | 确保环境与命名空间一致。请参阅 Kubernetes 命名空间文档。 |
Pod 策略 | 确保集群工作负载配置。请参阅 Kubernetes Pod 文档。 |
内存用量策略 | 使用限制范围限制工作负载资源使用情况。请参阅限制范围文档。 |
Pod 安全策略(已弃用) | 确保工作负载安全性一致。请参阅 Kubernetes Pod 安全策略文档。 |
角色策略 | 使用角色和角色绑定管理角色绑定。请参阅 Kubernetes RBAC 文档。 |
安全内容约束 (SCC) 策略 | 使用安全性上下文约束管理工作负载权限。请参阅 OpenShift Container Platform 文档中的管理安全性上下文约束文档。 |
ETCD 加密策略 | 确保通过 etcd 加密的数据安全性。请参阅 OpenShift Container Platform 文档中的加密 etcd 数据。 |
Compliance operator 策略 | 部署 Compliance Operator,以利用 OpenSCAP 扫描并强制实施集群的合规性状态。请参阅 OpenShift Container Platform 文档中的了解 Compliance Operator 部分。 |
Compliance operator E8 扫描 | 应用 Compliance operator 策略后,部署 Essential 8 (E8) 扫描来检查 E8 安全配置集的合规性。请参阅 OpenShift Container Platform 文档中的了解 Compliance Operator 部分。 |
Compliance operator CIS 扫描 | 应用 Compliance operator 策略后,部署互联网安全中心 (CIS) 扫描,以检查与 CIS 安全配置集的合规性。请参阅 OpenShift Container Platform 文档中的了解 Compliance Operator 部分。 |
镜像漏洞策略 | 部署 Container Security Operator,并检测集群中运行的 pod 中的已知镜像漏洞。请参阅 Container Security Operator GitHub 仓库。 |
Gatekeeper operator 部署 | Gatekeeper 是一个准入 Webhook,它强制执行基于自定义资源定义的策略,由 Open Policy Agent (OPA)策略引擎运行。请参阅 Gatekeeper 文档。 |
Gatekeeper 合规策略 | 将 Gatekeeper 部署到集群后,部署此示例 Gatekeeper 策略以确保在集群中创建的命名空间标记为指定。 |
Red Hat OpenShift Platform Plus 策略集 |
Red Hat OpenShift Platform Plus 是混合云套件,用于为多个基础架构安全构建、部署、运行和管理应用程序。您可以使用通过 Red Hat Advanced Cluster Management 应用程序提供的 |
2.5.2. 开箱即用策略的支持列表
策略 | Red Hat OpenShift Container Platform 3.11 | Red Hat OpenShift Container Platform 4 |
---|---|---|
内存用量策略 | x | x |
命名空间策略 | x | x |
镜像漏洞策略 | x | x |
Pod 策略 | x | x |
Pod 安全策略(已弃用) | ||
角色策略 | x | x |
角色绑定策略 | x | x |
安全性上下文约束策略(SCC) | x | x |
ETCD 加密策略 | x | |
Gatekeeper 策略 | x | |
Compliance operator 策略 | x | |
E8 扫描策略 | x | |
OpenShift CIS 扫描策略 | x | |
策略设置 | x |
查看以下策略示例以查看如何应用特定策略:
更多主题,请参阅监管。
2.5.3. 命名空间策略
Kubernetes 配置策略控制器负责监控命名空间策略的状态。应用命名空间策略来为您的命名空间定义特定规则。
在以下部分了解更多有关命名空间策略结构的详细信息:
2.5.3.1. 命名空间策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: object-templates: - complianceType: objectDefinition: kind: Namespace apiVersion: v1 metadata: name: ...
2.5.3.2. 命名空间策略 YAML 表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.3.3. 命名空间策略示例
请参阅 policy-namespace.yaml
以查看策略示例。
如需了解更多详细信息,请参阅管理安全策略。请参阅策略概述文档,以及 Kubernetes 配置策略控制器,以了解其他配置策略。
2.5.4. Pod 策略
Kubernetes 配置策略控制器负责监控 Pod 策略的状态。应用 Pod 策略来为 Pod 定义容器规则。集群中必须存在 pod 才能使用此信息。
在以下部分了解更多有关 pod 策略结构的详细信息:
2.5.4.1. Pod 策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: objectDefinition: apiVersion: v1 kind: Pod metadata: name: spec: containers: - image: name: ...
2.5.4.2. Pod 策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.4.3. Pod 策略示例
请参阅 policy-pod.yaml
查看策略示例。
请参阅 Kubernetes 配置策略控制器,以查看配置控制器监控的其他配置策略,并查看 Policy 概述文档,以查看策略 YAML 结构和其他字段的完整描述。返回到管理配置策略文档,以管理其他策略。
2.5.5. 内存用量策略
Kubernetes 配置策略控制器负责监控内存用量策略的状态。使用内存用量策略来限制或约束您的内存和计算用量。如需更多信息,请参阅 Kubernetes 文档中的限制范围。
在以下部分了解更多有关内存用量策略结构的详细信息:
2.5.5.1. 内存用量策略 YAML 结构
您的内存用量策略可能类似以下 YAML 文件:
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: mustonlyhave objectDefinition: apiVersion: v1 kind: LimitRange metadata: name: spec: limits: - default: memory: defaultRequest: memory: type: ...
2.5.5.2. 内存用量策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.5.3. 内存用量策略示例
请参阅 policy-limitmemory.yaml
查看策略示例。如需了解更多详细信息,请参阅管理安全策略。请参阅策略概述文档,以及 Kubernetes 配置策略控制器,以查看控制器监控的其他配置策略。
2.5.6. Pod 安全策略(已弃用)
Kubernetes 配置策略控制器负责监控 Pod 安全策略的状态。应用 Pod 安全策略来保护 Pod 和容器。
在以下部分了解更多有关 Pod 安全策略结构的详细信息:
2.5.6.1. Pod 安全策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: objectDefinition: apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: spec: privileged: allowPrivilegeEscalation: allowedCapabilities: volumes: hostNetwork: hostPorts: hostIPC: hostPID: runAsUser: seLinux: supplementalGroups: fsGroup: ...
2.5.6.2. Pod 安全策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.6.3. Pod 安全策略示例
对 Pod 安全策略的支持已从 OpenShift Container Platform 4.12 及更新的版本中删除,并从 Kubernetes v1.25 及之后的版本中删除。如果应用 PodSecurityPolicy
资源,您可能会收到以下不合规的信息:
violation - couldn't find mapping resource with kind PodSecurityPolicy, please check if you have CRD deployed
- 有关包括弃用通知的更多信息,请参阅 Kubernetes 文档中的 Pod 安全策略。
-
请参阅
policy-psp.yaml
以查看示例策略。如需更多信息,请参阅管理配置策略。 - 如需有关策略 YAML 结构的完整描述,请参阅策略概述文档,以及 Kubernetes 配置策略控制器,以查看控制器监控的其他配置策略。
2.5.7. 角色策略
Kubernetes 配置策略控制器负责监控角色策略的状态。在 object-template
中定义角色来为集群中的特定角色设置规则和权限。
在以下部分了解更多有关角色策略结构的详细信息:
2.5.7.1. 角色策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: objectDefinition: apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: rules: - apiGroups: resources: verbs: ... --- apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding-policy-role namespace: placementRef: name: placement-policy-role kind: PlacementRule apiGroup: apps.open-cluster-management.io subjects: - name: policy-role kind: Policy apiGroup: policy.open-cluster-management.io --- apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement-policy-role namespace: spec: clusterConditions: - type: ManagedClusterConditionAvailable status: "True" clusterSelector: matchExpressions: [] ...
2.5.7.2. 角色策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.7.3. 角色策略示例
应用角色策略来为集群中的特定角色设置规则和权限。如需有关角色的更多信息,请参阅基于角色的访问控制。查看角色策略示例,请参阅 policy-role.yaml
。
要了解如何管理角色策略,请参阅管理配置策略以了解更多信息。请参阅 Kubernetes 配置策略控制器,以查看监控控制器的其他配置策略。
2.5.8. 角色绑定策略
Kubernetes 配置策略控制器负责监控角色绑定策略的状态。应用角色绑定策略,将策略绑定到受管集群中的命名空间。
在以下部分了解更多有关命名空间策略结构的详细信息:
2.5.8.1. 角色绑定策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: objectDefinition: kind: RoleBinding # role binding must exist apiVersion: rbac.authorization.k8s.io/v1 metadata: name: subjects: - kind: name: apiGroup: roleRef: kind: name: apiGroup: ...
2.5.8.2. 角色绑定策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.8.3. 角色绑定策略示例
请参阅 policy-rolebinding.yaml
查看策略示例。有关策略 YAML 结构和其他字段的完整描述,请参阅策略概述文档。请参阅 Kubernetes 配置策略控制器文档,以了解其他配置策略。
2.5.9. 安全性上下文约束策略
Kubernetes 配置策略控制器负责监控安全性上下文约束 (SCC) 策略的状态。应用安全性上下文约束 (SCC) 策略,通过在策略中定义条件来控制 Pod 的权限。
在以下部分了解更多有关 SCC 策略的详细信息:
2.5.9.1. SCC 策略 YAML 结构
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: namespaceSelector: exclude: include: matchLabels: matchExpressions: object-templates: - complianceType: objectDefinition: apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints metadata: name: allowHostDirVolumePlugin: allowHostIPC: allowHostNetwork: allowHostPID: allowHostPorts: allowPrivilegeEscalation: allowPrivilegedContainer: fsGroup: readOnlyRootFilesystem: requiredDropCapabilities: runAsUser: seLinuxContext: supplementalGroups: users: volumes: ...
2.5.9.2. SCC 策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
有关 SCC 策略内容的解释,请参阅 OpenShift Container Platform 文档中的管理安全性上下文约束。
2.5.9.3. SCC 策略示例
应用安全性上下文约束 (SCC) 策略,通过在策略中定义条件来控制 Pod 的权限。如需更多信息,请参阅管理安全性上下文约束(SCC)。
请参阅 policy-scc.yaml
查看策略示例。有关策略 YAML 结构和其他字段的完整描述,请参阅策略概述文档。请参阅 Kubernetes 配置策略控制器文档,以了解其他配置策略。
2.5.10. ETCD 加密策略
应用 etcd-encryption
策略,在 ETCD 数据存储中检测或启用敏感数据的加密。Kubernetes 配置策略控制器负责监控 etcd-encryption
策略的状态。如需更多信息,请参阅 OpenShift Container Platform 文档中的加密 etcd 数据。注 :ETCD 加密策略只支持 Red Hat OpenShift Container Platform 4 及更新的版本。
在以下部分了解更多有关 etcd-encryption
策略结构的详细信息:
2.5.10.1. ETCD 加密策略 YAML 结构
etcd-encryption
策略可能类似以下 YAML 文件:
apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: namespace: annotations: policy.open-cluster-management.io/standards: policy.open-cluster-management.io/categories: policy.open-cluster-management.io/controls: policy.open-cluster-management.io/description: spec: remediationAction: disabled: policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: spec: remediationAction: severity: object-templates: - complianceType: objectDefinition: apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: spec: encryption: ...
2.5.10.2. ETCD 加密策略表
字段 | 可选或必需的 | 描述 |
---|---|---|
| 必填 |
将值设置为 |
| 必填 |
将值设为 |
| 必填 | 用于标识策略资源的名称。 |
| 必填 | 策略的命名空间。 |
| 选填 |
指定您的策略的修复。参数值是 |
| 必填 |
将值设为 |
| 必填 | 用于列出包含必须接受评估或应用到受管集群的 Kubernetes 对象的配置策略。 |
2.5.10.3. ETCD 加密策略示例
如需策略示例,请参阅 policy-etcdencryption.yaml
。请参阅策略概述文档 和 Kubernetes 配置策略控制器,以查看策略和配置策略字段的更多详情。
2.5.11. Compliance Operator 策略
您可以使用 Compliance Operator 自动检查许多技术实施,并将其与行业标准、基准和基准的某些方面进行比较。Compliance Operator 不是一个审核员(auditor)。要符合这些各种标准,您需要与授权的审核员(如限定安全评估器(QSA)、联合授权局(JAB)或其他行业认可的规范机构)合作来评估您的环境。
来自 Compliance Operator 生成的建议基于有关此类标准的一般信息和实践,并可能帮助您进行补救,但实际的合规性是您的责任。与授权的审核员合作来实现符合标准的合规性。
有关最新更新,请参阅 Compliance Operator 发行注记。
2.5.11.1. Compliance Operator 策略概述
您可以使用 Compliance Operator 策略在受管集群上安装 Compliance Operator。Compliance Operator 策略在 Red Hat Advanced Cluster Management 中作为 Kubernetes 配置策略创建。OpenShift Container Platform 支持 Compliance Operator 策略。
注: Compliance operator 策略依赖于 OpenShift Container Platform Compliance Operator,它不受 IBM Power 或 IBM Z 架构的支持。如需有关 Compliance Operator 的更多信息,请参阅 OpenShift Container Platform 文档中的了解 Compliance Operator。
2.5.11.2. Compliance operator 资源
在创建 Compliance Operator 策略时,会创建以下资源:
-
Operator 安装的 Compliance Operator 命名空间(
openshift-compliance
):
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: comp-operator-ns spec: remediationAction: inform # will be overridden by remediationAction in parent policy severity: high object-templates: - complianceType: musthave objectDefinition: apiVersion: v1 kind: Namespace metadata: name: openshift-compliance
-
用于指定目标命名空间的 operator 组(
compliance-operator
):
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: comp-operator-operator-group spec: remediationAction: inform # will be overridden by remediationAction in parent policy severity: high object-templates: - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
-
用于引用名称和频道的订阅(
comp-operator-subscription
)。订阅会拉取配置集作为一个容器,它支持:
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: comp-operator-subscription spec: remediationAction: inform # will be overridden by remediationAction in parent policy severity: high object-templates: - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: compliance-operator namespace: openshift-compliance spec: channel: "4.7" installPlanApproval: Automatic name: compliance-operator source: redhat-operators sourceNamespace: openshift-marketplace
2.5.11.3. 其他资源
- 如需更多信息,请参阅 OpenShift Container Platform 文档中的管理 Compliance Operator 部分以了解更多详细信息。
-
安装 Compliance Operator 策略后,会创建以下 pod:
compliance-operator
、ocp4
和rhcos4
。请参阅policy-compliance-operator-install.yaml
示例。 - 安装 Compliance Operator 后,您还可以创建并应用 E8 扫描策略和 OpenShift CIS 扫描策略。如需更多信息,请参阅 E8 扫描策略和 OpenShift CIS 扫描策略。
- 要了解有关管理 Compliance Operator 策略的信息,请参阅管理安全策略 以了解更多详细信息。有关配置策略的更多主题,请参阅 Kubernetes 配置策略控制器。
2.5.12. E8 扫描策略
一个 Essential 8(E8)扫描策略会部署一个扫描,检查 master 和 worker 节点是否满足 E8 安全配置集。您必须安装 Compliance Operator 以应用 E8 扫描策略。
E8 扫描策略在 Red Hat Advanced Cluster Management 中作为 Kubernetes 配置策略创建。OpenShift Container Platform 4.7 和 4.6 支持 E8 扫描策略。如需更多信息,请参阅 OpenShift Container Platform 文档中的了解 Compliance Operator 部分以了解更多详细信息。
2.5.12.1. E8 扫描策略资源
当您创建 E8 扫描策略时,会创建以下资源:
ScanSettingBinding
资源 (e8
) 用于识别要扫描的配置集:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-suite-e8 spec: remediationAction: inform severity: high object-templates: - complianceType: musthave # this template checks if scan has completed by checking the status field objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ScanSettingBinding metadata: name: e8 namespace: openshift-compliance profiles: - apiGroup: compliance.openshift.io/v1alpha1 kind: Profile name: ocp4-e8 - apiGroup: compliance.openshift.io/v1alpha1 kind: Profile name: rhcos4-e8 settingsRef: apiGroup: compliance.openshift.io/v1alpha1 kind: ScanSetting name: default
一个
ComplianceSuite
资源 (compliance-suite-e8
),用于通过检查status
字段来验证扫描是否已完成:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-suite-e8 spec: remediationAction: inform severity: high object-templates: - complianceType: musthave # this template checks if scan has completed by checking the status field objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ComplianceSuite metadata: name: e8 namespace: openshift-compliance status: phase: DONE
一个
ComplianceCheckResult
资源 (compliance-suite-e8-results
),它通过检查ComplianceCheckResult
自定义资源 (CR) 来报告扫描套件的结果:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-suite-e8-results spec: remediationAction: inform severity: high object-templates: - complianceType: mustnothave # this template reports the results for scan suite: e8 by looking at ComplianceCheckResult CRs objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ComplianceCheckResult metadata: namespace: openshift-compliance labels: compliance.openshift.io/check-status: FAIL compliance.openshift.io/suite: e8
注: 支持自动补救。将补救操作设置为 enforce
以创建 ScanSettingBinding
资源。
请参阅 policy-compliance-operator-e8-scan.yaml
示例。如需更多信息,请参阅管理安全策略。注: 删除 E8 策略后,它会从目标集群或集群中移除。
2.5.13. OpenShift CIS 扫描策略
OpenShift CIS 扫描策略会部署一个扫描来检查 master 和 worker 节点是否与 OpenShift CIS 安全基准相符。您必须安装 Compliance operator 以应用 OpenShift CIS 策略。
OpenShift CIS 扫描策略在 Red Hat Advanced Cluster Management 中作为 Kubernetes 配置策略创建。OpenShift Container Platform 4.9、4.7 和 4.6 支持 OpenShift CIS 扫描策略。如需更多信息,请参阅 OpenShift Container Platform 文档中的 了解 Compliance Operator 部分以了解更多详细信息。
2.5.13.1. OpenShift CIS 资源
创建 OpenShift CIS 扫描策略时,会创建以下资源:
用于识别要扫描的配置集的
ScanSettingBinding
资源 (cis
):apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-cis-scan spec: remediationAction: inform severity: high object-templates: - complianceType: musthave # this template creates ScanSettingBinding:cis objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ScanSettingBinding metadata: name: cis namespace: openshift-compliance profiles: - apiGroup: compliance.openshift.io/v1alpha1 kind: Profile name: ocp4-cis - apiGroup: compliance.openshift.io/v1alpha1 kind: Profile name: ocp4-cis-node settingsRef: apiGroup: compliance.openshift.io/v1alpha1 kind: ScanSetting name: default
一个
ComplianceSuite
资源 (compliance-suite-cis
),用于通过检查status
字段来验证扫描是否已完成:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-suite-cis spec: remediationAction: inform severity: high object-templates: - complianceType: musthave # this template checks if scan has completed by checking the status field objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ComplianceSuite metadata: name: cis namespace: openshift-compliance status: phase: DONE
一个
ComplianceCheckResult
资源 (compliance-suite-cis-results
),它通过检查ComplianceCheckResult
自定义资源 (CR) 来报告扫描套件的结果:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: compliance-suite-cis-results spec: remediationAction: inform severity: high object-templates: - complianceType: mustnothave # this template reports the results for scan suite: cis by looking at ComplianceCheckResult CRs objectDefinition: apiVersion: compliance.openshift.io/v1alpha1 kind: ComplianceCheckResult metadata: namespace: openshift-compliance labels: compliance.openshift.io/check-status: FAIL compliance.openshift.io/suite: cis
请参阅 policy-compliance-operator-cis-scan.yaml
文件示例。有关创建策略的更多信息,请参阅管理安全策略。
2.5.14. 镜像漏洞策略
应用镜像漏洞策略,以利用 Container Security Operator 来检测容器镜像是否有漏洞。如果没有安装 Container Security Operator,该策略会在受管集群上安装它。
镜像漏洞策略由 Kubernetes 配置策略控制器负责检查。有关 Security Operator 的更多信息,请参阅 Quay 存储库中的 Container Security Operator。
备注:
- 镜像漏洞策略在断开连接的安装过程中无法正常工作。
-
IBM Power 和 IBM Z 架构不支持 镜像漏洞策略。它依赖于 Quay Container Security Operator。container-security-operator registry 中没有
ppc64le
或s390x
镜像。
查看以下部分以了解更多信息:
2.5.14.1. 镜像漏洞策略 YAML 结构
在创建容器安全 Operator 策略时,它会涉及以下策略:
创建订阅的策略 (
container-security-operator
) 来引用名称和频道。此配置策略必须将spec.remediationAction
设置为enforce
来创建资源。订阅会拉取配置集,作为订阅支持的容器。查看以下示例:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-imagemanifestvuln-example-sub spec: remediationAction: enforce # will be overridden by remediationAction in parent policy severity: high object-templates: - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: container-security-operator namespace: openshift-operators spec: # channel: quay-v3.3 # specify a specific channel if desired installPlanApproval: Automatic name: container-security-operator source: redhat-operators sourceNamespace: openshift-marketplace
一个
inform
配置策略来审核ClusterServiceVersion
,以确保容器安全 Operator 安装成功。查看以下示例:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-imagemanifestvuln-status spec: remediationAction: inform # will be overridden by remediationAction in parent policy severity: high object-templates: - complianceType: musthave objectDefinition: apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: namespace: openshift-operators spec: displayName: Red Hat Quay Container Security Operator status: phase: Succeeded # check the CSV status to determine if operator is running or not
一个
inform
配置策略,用于审核镜像漏洞扫描创建的任何ImageManifestVuln
对象。查看以下示例:apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-imagemanifestvuln-example-imv spec: remediationAction: inform # will be overridden by remediationAction in parent policy severity: high namespaceSelector: exclude: ["kube-*"] include: ["*"] object-templates: - complianceType: mustnothave # mustnothave any ImageManifestVuln object objectDefinition: apiVersion: secscan.quay.redhat.com/v1alpha1 kind: ImageManifestVuln # checking for a Kind
2.5.14.2. 镜像漏洞策略示例
请参阅 policy-imagemanifestvuln.yaml
。如需更多信息,请参阅管理安全策略。请参阅 Kubernetes 配置策略控制器,以查看配置控制器监控的其他配置策略。
2.5.15. Red Hat OpenShift Platform Plus 策略集
配置并应用 OpenShift Platform Plus 策略集 (openshift-plus
) 来安装 Red Hat OpenShift Platform Plus。
OpenShift Platform Plus 策略集包含两个部署的 PolicySets
。OpenShift Plus 策略集应用设置为安装 OpenShift Platform Plus 产品的多个策略。Red Hat Advanced Cluster Security 安全集群服务和 Compliance Operator 部署到所有 OpenShift Container Platform 受管集群。
2.5.15.1. 先决条件
- 在 Amazon Web Services (AWS) 环境中安装 Red Hat OpenShift Container Platform 4.12 或更高版本。
- 安装 Red Hat Advanced Cluster Management for Kubernetes 2.7 或更高版本。
- 安装策略生成器 Kustomize 插件。如需更多信息,请参阅策略生成器文档。
2.5.15.2. OpenShift Platform Plus 策略设置组件
当您将策略设置为 hub 集群时,会安装以下 OpenShift Platform Plus 组件:
组件 | 策略 | 描述 |
---|---|---|
Red Hat Advanced Cluster Security |
| 用于将中央服务器安装到 Red Hat Advanced Cluster Management for Kubernetes hub 集群和受管集群的策略。 |
| 用于接收 Red Hat Advanced Cluster Security 状态的部署。 | |
| 配置 Red Hat Advanced Cluster Security central operator。 | |
| 用于验证 Red Hat Advanced Cluster Security 资源是否已创建的策略。 | |
OpenShift Container Platform |
| 受管 hub 集群。受管集群的管理器。 |
Compliance operator |
| 用于安装 Compliance operator 的策略。 |
Red Hat Quay |
| Red Hat Quay 的配置策略。 |
| 用于安装 Red Hat Quay 的策略。 | |
| 安装到 Red Hat Advanced Cluster Management hub 集群中。 | |
Red Hat Advanced Cluster Management |
| 设置 Red Hat Advanced Cluster Management observability 服务。 |
Red Hat OpenShift Data Platform |
| Red Hat Advanced Cluster Management observability 和 Quay 使用的 hub 集群组件的可用存储。 |
| 用于配置 Red Hat OpenShift Data Platform 状态的策略。 |
2.5.15.3. 其他资源
- 请参阅使用策略集安装 Red Hat OpenShift Platform Plus。
- 返回到 Policy set controller。
-
查看策略集中包含的所有策略的
openshift-plus
策略示例。