5.8. 定制 Compliance Operator
虽然 Compliance Operator 附带随时可用的配置集,但必须对其进行修改才能满足机构的需求和要求。修改配置集的过程称为定制。
Compliance Operator 提供了 TailoredProfile
对象来帮助定制配置集。
5.8.1. 创建新的定制配置集
您可以使用 TailoredProfile
对象从头开始编写定制的配置集。设置适当的 title
和 description
,并将 extends
字段留空。向 Compliance Operator 指明此自定义配置集将生成的扫描类型:
- 节点扫描:扫描操作系统。
- Platform 扫描:扫描 OpenShift Container Platform 配置。
流程
-
在
TailoredProfile
对象中设置以下注解:
new-profile.yaml
示例
apiVersion: compliance.openshift.io/v1alpha1 kind: TailoredProfile metadata: name: new-profile annotations: compliance.openshift.io/product-type: Node 1 spec: extends: ocp4-cis-node 2 description: My custom profile 3 title: Custom profile 4 enableRules: - name: ocp4-etcd-unique-ca rationale: We really need to enable this disableRules: - name: ocp4-file-groupowner-cni-conf rationale: This does not apply to the cluster
5.8.2. 使用定制配置集扩展现有 ProfileBundle
尽管 TailoredProfile
CR 支持最常见的定制操作,但 XCCDF 标准在定制 OpenSCAP 配置集方面具有更大的灵活性。此外,如果您的机构之前一直使用 OpenScap,则您可能有一个现有的 XCCDF 定制文件可重复使用。
ComplianceSuite
对象包含可指向自定义定制文件的可选 TailoringConfigMap
属性。TailoringConfigMap
属性的值是一个配置映射的名称,它必须包含名为 tailoring.xml
的键,这个键的值是定制内容。
流程
浏览 Red Hat Enterprise Linux CoreOS (RHCOS)
ProfileBundle
的可用规则:$ oc get rules.compliance -n openshift-compliance -l compliance.openshift.io/profile-bundle=rhcos4
浏览同一
ProfileBundle
中的可用变量:$ oc get variables.compliance -n openshift-compliance -l compliance.openshift.io/profile-bundle=rhcos4
创建名为
nist-moderate-modified
的定制配置集:选择您要添加到
nist-moderate-modified
定制配置集中的规则。这个示例通过禁用两个规则并更改一个值来扩展rhcos4-moderate
配置集。使用rationale
值描述进行这些更改的原因:new-profile-node.yaml
示例apiVersion: compliance.openshift.io/v1alpha1 kind: TailoredProfile metadata: name: nist-moderate-modified spec: extends: rhcos4-moderate description: NIST moderate profile title: My modified NIST moderate profile disableRules: - name: rhcos4-file-permissions-var-log-messages rationale: The file contains logs of error messages in the system - name: rhcos4-account-disable-post-pw-expiration rationale: No need to check this as it comes from the IdP setValues: - name: rhcos4-var-selinux-state rationale: Organizational requirements value: permissive
表 5.2. spec 变量的属性 属性 描述 extends
构建此
TailoredProfile
的Profile
对象的名称。title
TailoredProfile
的人类可读标题.disableRules
名称和理由对列表。每个名称引用要禁用的规则对象的名称。合理值是人类可读的文本,描述禁用规则的原因。
manualRules
名称和理由对列表。添加手动规则时,检查结果状态始终是
manual
,且不会生成补救。此属性是自动的,在默认情况下,设置手动规则时没有值。enableRules
名称和理由对列表。每个名称引用要启用的规则对象的名称。合理值是人类可读的文本,描述启用规则的原因。
description
描述
TailoredProfile
的人类可读文本.setValues
名称、理由和值分组列表。每个名称都引用值集的名称。理由是人类可读的文本描述该集合。值是实际设置。
添加
tailoredProfile.spec.manualRules
属性:示例
tailoredProfile.spec.manualRules.yaml
apiVersion: compliance.openshift.io/v1alpha1 kind: TailoredProfile metadata: name: ocp4-manual-scc-check spec: extends: ocp4-cis description: This profile extends ocp4-cis by forcing the SCC check to always return MANUAL title: OCP4 CIS profile with manual SCC check manualRules: - name: ocp4-scc-limit-container-allowed-capabilities rationale: We use third party software that installs its own SCC with extra privileges
创建
TailoredProfile
对象:$ oc create -n openshift-compliance -f new-profile-node.yaml 1
- 1
TailoredProfile
对象在默认的openshift-compliance
命名空间中创建。
输出示例
tailoredprofile.compliance.openshift.io/nist-moderate-modified created
定义
ScanSettingBinding
对象,将新的nist-moderate-modified
定制配置集绑定到默认的ScanSetting
对象。new-scansettingbinding.yaml
示例apiVersion: compliance.openshift.io/v1alpha1 kind: ScanSettingBinding metadata: name: nist-moderate-modified profiles: - apiGroup: compliance.openshift.io/v1alpha1 kind: Profile name: ocp4-moderate - apiGroup: compliance.openshift.io/v1alpha1 kind: TailoredProfile name: nist-moderate-modified settingsRef: apiGroup: compliance.openshift.io/v1alpha1 kind: ScanSetting name: default
创建
ScanSettingBinding
对象:$ oc create -n openshift-compliance -f new-scansettingbinding.yaml
输出示例
scansettingbinding.compliance.openshift.io/nist-moderate-modified created