5.6. コンプライアンス Operator の管理

本セクションでは、コンプライアンスコンテンツの更新されたバージョンを使用する方法や、カスタム ProfileBundle オブジェクトを作成する方法など、セキュリティーコンテンツのライフサイクルについて説明します。

5.6.1. セキュリティーコンテンツの更新

セキュリティーコンテンツは、ProfileBundle オブジェクトが参照するコンテナーイメージとして提供されます。ProfileBundles や、ルールまたはプロファイルなどのバンドルから解析されたカスタムリソースへの更新を正確に追跡するには、タグの代わりにダイジェストを使用してコンプライアンスコンテンツを持つコンテナーイメージを識別します。

出力例

  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 はデプロイメントでサポートされます。コンプライアンス Operator がコンテナーイメージダイジェストが変更されたことを検知すると、デプロイメントは変更を反映し、コンテンツを再び解析するように更新されます。タグの代わりにダイジェストを使用すると、安定した予測可能なプロファイルセットを使用できます。

5.6.2. イメージストリームの使用

contentImage 参照は有効な ImageStreamTag を参照し、コンプライアンス 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 名を取得して、ProfileBundleImageStreamTag の名前を使用します。

    $ 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 とコンプライアンスコンテンツが含まれるファイルの 2 つの情報が必要です。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. 関連情報