5.8. 定制 Compliance Operator

虽然 Compliance Operator 附带随时可用的配置集,但必须对其进行修改才能满足机构的需求和要求。修改配置集的过程称为定制

Compliance Operator 提供了 TailoredProfile 对象来帮助定制配置集。

5.8.1. 创建新的定制配置集

您可以使用 TailoredProfile 对象从头开始编写定制的配置集。设置适当的 titledescription,并将 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

1
相应地设置 NodePlatform
2
extends 字段是可选的。
3
使用 description 字段描述新的 TailoredProfile 对象的功能。
4
使用 title 字段为您的 TailoredProfile 对象指定一个标题。
注意

TailoredProfile 对象的 name 字段中添加 -node 后缀与添加 Node 产品类型注解类似,会生成 Operating System 扫描。

5.8.2. 使用定制配置集扩展现有 ProfileBundle

尽管 TailoredProfile CR 支持最常见的定制操作,但 XCCDF 标准在定制 OpenSCAP 配置集方面具有更大的灵活性。此外,如果您的机构之前一直使用 OpenScap,则您可能有一个现有的 XCCDF 定制文件可重复使用。

ComplianceSuite 对象包含可指向自定义定制文件的可选 TailoringConfigMap 属性。TailoringConfigMap 属性的值是一个配置映射的名称,它必须包含名为 tailoring.xml 的键,这个键的值是定制内容。

流程

  1. 浏览 Red Hat Enterprise Linux CoreOS (RHCOS) ProfileBundle 的可用规则:

    $ oc get rules.compliance -n openshift-compliance -l compliance.openshift.io/profile-bundle=rhcos4
  2. 浏览同一 ProfileBundle 中的可用变量:

    $ oc get variables.compliance -n openshift-compliance -l compliance.openshift.io/profile-bundle=rhcos4
  3. 创建名为 nist-moderate-modified 的定制配置集:

    1. 选择您要添加到 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

      构建此 TailoredProfileProfile 对象的名称。

      title

      TailoredProfile 的人类可读标题.

      disableRules

      名称和理由对列表。每个名称引用要禁用的规则对象的名称。合理值是人类可读的文本,描述禁用规则的原因。

      manualRules

      名称和理由对列表。添加手动规则时,检查结果状态始终是 manual,且不会生成补救。此属性是自动的,在默认情况下,设置手动规则时没有值。

      enableRules

      名称和理由对列表。每个名称引用要启用的规则对象的名称。合理值是人类可读的文本,描述启用规则的原因。

      description

      描述 TailoredProfile 的人类可读文本.

      setValues

      名称、理由和值分组列表。每个名称都引用值集的名称。理由是人类可读的文本描述该集合。值是实际设置。

    2. 添加 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

    3. 创建 TailoredProfile 对象:

      $ oc create -n openshift-compliance -f new-profile-node.yaml 1
      1
      TailoredProfile 对象在默认的 openshift-compliance 命名空间中创建。

      输出示例

      tailoredprofile.compliance.openshift.io/nist-moderate-modified created

  4. 定义 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

  5. 创建 ScanSettingBinding 对象:

    $ oc create -n openshift-compliance -f new-scansettingbinding.yaml

    输出示例

    scansettingbinding.compliance.openshift.io/nist-moderate-modified created