5.6. 管理 Compliance Operator

本节介绍安全性内容的生命周期,包括如何使用合规性内容的更新版本以及如何创建自定义 ProfileBundle 对象。

5.6.1. 更新安全性内容

安全性内容作为 ProfileBundle 对象引用的容器镜像提供。要准确跟踪从捆绑包(如 Rules 或 Profiles)解析的 ProfileBundles 和 CustomResources 的更新,请使用摘要而不是标签来识别包含合规性内容的容器镜像:

输出示例

  apiVersion: compliance.openshift.io/v1alpha1
  kind: ProfileBundle
  metadata:
    name: rhcos4
  spec:
    contentImage: quay.io/user/ocp4-openscap-content@sha256:a1749f5150b19a9560a5732fe48a89f07bffc79c0832aa8c49ee5504590ae687 1
    contentFile: ssg-rhcos4-ds.xml

1
安全性容器镜像。

每个 ProfileBundle 都由一个部署来支持。当 Compliance Operator 检测到容器镜像摘要已更改时,会更新部署来反映内容的变化并再次解析内容。使用摘要而不是标签可确保您使用稳定且可预测的配置集集合。

5.6.2. 使用镜像流

contentImage 引用指向一个有效的 ImageStreamTag,而 Compliance Operator 可确保内容自动更新。

注意

ProfileBundle 对象还接受 ImageStream 引用。

镜像流示例

$ oc get is -n openshift-compliance

输出示例

NAME           	   IMAGE REPOSITORY                                                                       	TAGS     UPDATED
openscap-ocp4-ds   image-registry.openshift-image-registry.svc:5000/openshift-compliance/openscap-ocp4-ds   latest   32 seconds ago

流程

  1. 确保将查询策略设置为 local:

    $ oc patch is openscap-ocp4-ds \
        -p '{"spec":{"lookupPolicy":{"local":true}}}' \
        --type=merge
        imagestream.image.openshift.io/openscap-ocp4-ds patched
        -n openshift-compliance
  2. 通过检索 istag 名称,对 ProfileBundle 使用 ImageStreamTag 的名称:

    $ oc get istag -n openshift-compliance

    输出示例

    NAME                  	IMAGE REFERENCE                                                                                                                                              	UPDATED
    openscap-ocp4-ds:latest   image-registry.openshift-image-registry.svc:5000/openshift-compliance/openscap-ocp4-ds@sha256:46d7ca9b7055fe56ade818ec3e62882cfcc2d27b9bf0d1cbae9f4b6df2710c96   3 minutes ago

  3. 创建 ProfileBundle

    $ cat << EOF | oc create -f -
    apiVersion: compliance.openshift.io/v1alpha1
    kind: ProfileBundle
    metadata:
      name: mybundle
       spec:
         contentImage: openscap-ocp4-ds:latest
         contentFile: ssg-rhcos4-ds.xml
    EOF

这个 ProfileBundle 将跟踪镜像,对其应用的所有更改,如更新标签以指向其他散列,将立即反映在 ProfileBundle 中。

5.6.3. ProfileBundle CR 示例

捆绑包对象需要两条信息:包含 contentImage 的容器镜像的 URL 和包含合规性内容的文件。contentFile 参数相对于文件系统的根目录。内置的 rhcos4 ProfileBundle 对象可以在以下示例中定义:

  apiVersion: compliance.openshift.io/v1alpha1
  kind: ProfileBundle
  metadata:
    name: rhcos4
  spec:
    contentImage: quay.io/complianceascode/ocp4:latest 1
    contentFile: ssg-rhcos4-ds.xml 2
1
内容镜像位置。
2
包含合规性内容的文件位置。
重要

用于内容镜像的基础镜像必须包含 coreutils

5.6.4. 其他资源