5.5. Compliance Operator の管理


5.5.1. Compliance Operator のインストール

Compliance Operator を使用する前に、これがクラスターにデプロイされていることを確認する必要があります。

重要

Compliance Operator は、OpenShift Dedicated、Red Hat OpenShift Service on AWS Classic、Azure Red Hat OpenShift などのマネージドプラットフォームで誤った結果を報告する場合があります。詳細は、ナレッジベースの記事 Compliance Operator reports incorrect results on Managed Services を参照してください。

重要

Compliance Operator をデプロイする前に、raw の結果出力を保存するためにクラスター内に永続ストレージを定義する必要があります。詳細は、永続ストレージの概要 および デフォルトのストレージクラスの管理 を参照してください。

5.5.1.1. Web コンソールを使用した Compliance Operator のインストール

前提条件

  • admin 権限がある。
  • StorageClass リソースが設定されている。

手順

  1. OpenShift Container Platform Web コンソールで、Operators OperatorHub ページに移動します。
  2. Compliance Operator を検索し、Install をクリックします。
  3. Installation mode および namespace のデフォルトの選択を維持し、Operator が openshift-compliance namespace にインストールされていることを確認します。
  4. Install をクリックします。

検証

インストールが正常に行われたことを確認するには、以下を実行します。

  1. Operators Installed Operators ページに移動します。
  2. Compliance Operator が openshift-compliance namespace にインストールされ、そのステータスが Succeeded であることを確認します。

Operator が正常にインストールされていない場合、以下を実行します。

  1. Operators Installed Operators ページに移動し、Status 列でエラーまたは失敗の有無を確認します。
  2. Workloads Pods ページに移動し、openshift-compliance プロジェクトの Pod で問題を報告しているログの有無を確認します。
重要

restricted な Security Context Constraints (SCC) が system:authenticated グループを含むように変更されているか、requiredDropCapabilities を追加している場合、権限の問題により Compliance Operator が正しく機能しない可能性があります。

Compliance Operator スキャナー Pod サービスアカウント用のカスタム SCC を作成できます。詳細は Compliance Operator のカスタム SCC の作成 を参照してください。

5.5.1.2. CLI を使用した Compliance Operator のインストール

前提条件

  • admin 権限がある。
  • StorageClass リソースが設定されている。

手順

  1. Namespace オブジェクトを定義します。

    namespace-object.yaml の例

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged 1
      name: openshift-compliance

    1
    OpenShift Container Platform 4.16 では、Pod セキュリティーラベルを namespace レベルで privileged に設定する必要があります。
  2. Namespace オブジェクトを作成します。

    $ oc create -f namespace-object.yaml
  3. OperatorGroup オブジェクトを定義します。

    operator-group-object.yaml の例

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance

  4. OperatorGroup オブジェクトを作成します。

    $ oc create -f operator-group-object.yaml
  5. Subscription オブジェクトを定義します。

    subscription-object.yaml の例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace

  6. Subscription オブジェクトを作成します。

    $ oc create -f subscription-object.yaml
注記

グローバルスケジューラー機能を設定する際に、defaultNodeSelector を有効にする場合、namespace を手動で作成し、openshift-compliance のアノテーションを更新するか、openshift.io/node-selector: “" を使用して Compliance Operator がインストールされている namespace のアノテーションを更新する必要があります。これにより、デフォルトのノードセレクターが削除され、デプロイメントの失敗を防ぐことができます。

検証

  1. CSV ファイルを確認して、インストールが正常に完了したことを確認します。

    $ oc get csv -n openshift-compliance
  2. Compliance Operator が稼働していることを確認します。

    $ oc get deploy -n openshift-compliance

5.5.1.3. ROSAHosted Control Plane (HCP) への Compliance Operator のインストール

Compliance Operator 1.5.0 リリース以降、Operator は Hosted Control Plane を使用して AWS 上の Red Hat OpenShift Service に対してテストされています。

Red Hat OpenShift Service on AWS Hosted Control Plane クラスターは、Red Hat によって管理されるコントロールプレーンへのアクセスが制限されています。デフォルトでは、Compliance Operator は master ノードプール内のノードにスケジュールしますが、これは Red Hat OpenShift Service on AWS では使用できません。これには、Operator が利用可能なノードプールでスケジュールできるように Subscription オブジェクトを設定する必要があります。この手順は、AWS Hosted Control Plane クラスター上の Red Hat OpenShift Service を正常にインストールするために必要です。

前提条件

  • admin 権限がある。
  • StorageClass リソースが設定されている。

手順

  1. Namespace オブジェクトを定義します。

    namespace-object.yaml ファイルの例

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged 1
      name: openshift-compliance

    1
    OpenShift Container Platform 4.16 では、Pod セキュリティーラベルを namespace レベルで privileged に設定する必要があります。
  2. 次のコマンドを実行して、Namespace オブジェクトを作成します。

    $ oc create -f namespace-object.yaml
  3. OperatorGroup オブジェクトを定義します。

    operator-group-object.yaml ファイルの例

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance

  4. 以下のコマンドを実行して OperatorGroup オブジェクトを作成します。

    $ oc create -f operator-group-object.yaml
  5. Subscription オブジェクトを定義します。

    subscription-object.yaml ファイルの例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: "" 1

    1
    Operator デプロイメントを更新して、worker ノードにデプロイします。
  6. 以下のコマンドを実行して Subscription オブジェクトを作成します。

    $ oc create -f subscription-object.yaml

検証

  1. 次のコマンドを実行してクラスターサービスバージョン (CSV) ファイルを調べ、インストールが成功したことを確認します。

    $ oc get csv -n openshift-compliance
  2. 次のコマンドを使用して、Compliance Operator が起動して実行されていることを確認します。

    $ oc get deploy -n openshift-compliance
重要

restricted な Security Context Constraints (SCC) が system:authenticated グループを含むように変更されているか、requiredDropCapabilities を追加している場合、権限の問題により Compliance Operator が正しく機能しない可能性があります。

Compliance Operator スキャナー Pod サービスアカウント用のカスタム SCC を作成できます。詳細は Compliance Operator のカスタム SCC の作成 を参照してください。

5.5.1.4. Hypershift Hosted Control Plane への Compliance Operator のインストール

Compliance Operator は、Subscription ファイルを作成して OperatorHub を使用して Hosted Control Plane にインストールできます。

重要

Hosted Control Plane は、テクノロジープレビュー機能としてのみ利用できます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • admin 権限がある。

手順

  1. 以下のような Namespace オブジェクトを定義します。

    namespace-object.yaml の例

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
        pod-security.kubernetes.io/enforce: privileged 1
      name: openshift-compliance

    1
    OpenShift Container Platform 4.16 では、Pod セキュリティーラベルを namespace レベルで privileged に設定する必要があります。
  2. 次のコマンドを実行して、Namespace オブジェクトを作成します。

    $ oc create -f namespace-object.yaml
  3. OperatorGroup オブジェクトを定義します。

    operator-group-object.yaml の例

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: compliance-operator
      namespace: openshift-compliance
    spec:
      targetNamespaces:
      - openshift-compliance

  4. 以下のコマンドを実行して OperatorGroup オブジェクトを作成します。

    $ oc create -f operator-group-object.yaml
  5. Subscription オブジェクトを定義します。

    subscription-object.yaml の例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: compliance-operator-sub
      namespace: openshift-compliance
    spec:
      channel: "stable"
      installPlanApproval: Automatic
      name: compliance-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      config:
        nodeSelector:
          node-role.kubernetes.io/worker: ""
        env:
        - name: PLATFORM
          value: "HyperShift"

  6. 以下のコマンドを実行して Subscription オブジェクトを作成します。

    $ oc create -f subscription-object.yaml

検証

  1. 以下のコマンドを実行して CSV ファイルを検査し、インストールが正常に完了したことを確認します。

    $ oc get csv -n openshift-compliance
  2. 次のコマンドを実行して、Compliance Operator が稼働していることを確認します。

    $ oc get deploy -n openshift-compliance

5.5.1.5. 関連情報

5.5.2. Compliance Operator の更新

クラスター管理者は、OpenShift Container Platform クラスターで Compliance Operator を更新できます。

重要

OpenShift Container Platform クラスターをバージョン 4.14 に更新すると、Compliance Operator が期待どおりに動作しなくなる可能性があります。これは継続中の既知の問題が原因です。詳細は、OCPBUGS-18025 を参照してください。

5.5.2.1. Operator 更新の準備

インストールされた Operator のサブスクリプションは、Operator の更新を追跡および受信する更新チャネルを指定します。更新チャネルを変更して、新しいチャネルからの更新の追跡と受信を開始できます。

サブスクリプションの更新チャネルの名前は Operator 間で異なる可能性がありますが、命名スキーム通常、特定の Operator 内の共通の規則に従います。たとえば、チャネル名は Operator によって提供されるアプリケーションのマイナーリリース更新ストリーム (1.21.3) またはリリース頻度 (stablefast) に基づく可能性があります。

注記

インストールされた Operator は、現在のチャネルよりも古いチャネルに切り換えることはできません。

Red Hat Customer Portal Labs には、管理者が Operator の更新を準備するのに役立つ以下のアプリケーションが含まれています。

このアプリケーションを使用して、Operator Lifecycle Manager ベースの Operator を検索し、OpenShift Container Platform の異なるバージョン間で更新チャネルごとに利用可能な Operator バージョンを確認できます。Cluster Version Operator ベースの Operator は含まれません。

5.5.2.2. Operator の更新チャネルの変更

OpenShift Container Platform Web コンソールを使用して、Operator の更新チャネルを変更できます。

ヒント

サブスクリプションの承認ストラテジーが Automatic に設定されている場合、アップグレードプロセスは、選択したチャネルで新規 Operator バージョンが利用可能になるとすぐに開始します。承認ストラテジーが Manual に設定されている場合は、保留中のアップグレードを手動で承認する必要があります。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して以前にインストールされている Operator。

手順

  1. Web コンソールの Administrator パースペクティブで、Operators Installed Operators に移動します。
  2. 更新チャネルを変更する Operator の名前をクリックします。
  3. Subscription タブをクリックします。
  4. Update channel の下にある更新チャネルの名前をクリックします。
  5. 変更する新しい更新チャネルをクリックし、Save をクリックします。
  6. Automatic 承認ストラテジーのあるサブスクリプションの場合、更新は自動的に開始します。Operators Installed Operators ページに戻り、更新の進捗をモニターします。完了時に、ステータスは Succeeded および Up to date に変更されます。

    Manual 承認ストラテジーのあるサブスクリプションの場合、Subscription タブから更新を手動で承認できます。

5.5.2.3. 保留中の Operator 更新の手動による承認

インストールされた Operator のサブスクリプションの承認ストラテジーが Manual に設定されている場合、新規の更新が現在の更新チャネルにリリースされると、インストールを開始する前に更新を手動で承認する必要があります。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して以前にインストールされている Operator。

手順

  1. OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators Installed Operators に移動します。
  2. 更新が保留中の Operator は Upgrade available のステータスを表示します。更新する Operator の名前をクリックします。
  3. Subscription タブをクリックします。承認が必要な更新は、Upgrade status の横に表示されます。たとえば、1 requires approval が表示される可能性があります。
  4. 1 requires approval をクリックしてから、Preview Install Plan をクリックします。
  5. 更新に利用可能なリソースとして一覧表示されているリソースを確認します。問題がなければ、Approve をクリックします。
  6. Operators Installed Operators ページに戻り、更新の進捗をモニターします。完了時に、ステータスは Succeeded および Up to date に変更されます。

5.5.3. Compliance Operator の管理

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

5.5.3.1. ProfileBundle CR の例

ProfileBundle オブジェクトには、contentImage が含まれるコンテナーイメージの URL と、コンプライアンスコンテンツが含まれるファイルの 2 つの情報が必要です。contentFile パラメーターはファイルシステムのルートに相対します。以下の例のように、ビルトインの rhcos4 ProfileBundle オブジェクトを定義できます。

apiVersion: compliance.openshift.io/v1alpha1
kind: ProfileBundle
metadata:
  creationTimestamp: "2022-10-19T12:06:30Z"
  finalizers:
  - profilebundle.finalizers.compliance.openshift.io
  generation: 1
  name: rhcos4
  namespace: openshift-compliance
  resourceVersion: "46741"
  uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d
spec:
  contentFile: ssg-rhcos4-ds.xml 1
  contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 2
status:
  conditions:
  - lastTransitionTime: "2022-10-19T12:07:51Z"
    message: Profile bundle successfully parsed
    reason: Valid
    status: "True"
    type: Ready
  dataStreamStatus: VALID
1
コンプライアンスコンテンツが含まれるファイルの場所。
2
コンテンツイメージの場所。
重要

コンテンツイメージに使用されるベースイメージには、coreutils が含まれる必要があります。

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

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

$ oc -n openshift-compliance get profilebundles rhcos4 -oyaml

出力例

apiVersion: compliance.openshift.io/v1alpha1
kind: ProfileBundle
metadata:
  creationTimestamp: "2022-10-19T12:06:30Z"
  finalizers:
  - profilebundle.finalizers.compliance.openshift.io
  generation: 1
  name: rhcos4
  namespace: openshift-compliance
  resourceVersion: "46741"
  uid: 22350850-af4a-4f5c-9a42-5e7b68b82d7d
spec:
  contentFile: ssg-rhcos4-ds.xml
  contentImage: registry.redhat.io/compliance/openshift-compliance-content-rhel8@sha256:900e... 1
status:
  conditions:
  - lastTransitionTime: "2022-10-19T12:07:51Z"
    message: Profile bundle successfully parsed
    reason: Valid
    status: "True"
    type: Ready
  dataStreamStatus: VALID

1
セキュリティーコンテナーイメージ。

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

5.5.3.3. 関連情報

5.5.4. Compliance Operator のアンインストール

OpenShift Container Platform Web コンソールまたは CLI を使用して、クラスターから OpenShift Compliance Operator を削除できます。

5.5.4.1. Web コンソールを使用した OpenShift Container Platform からの OpenShift Compliance Operator のアンインストール

Compliance Operator を削除するには、まず namespace のオブジェクトを削除する必要があります。オブジェクトが削除されたら、openshift-compliance プロジェクトを削除することで、Operator とその namespace を削除できます。

前提条件

  • cluster-admin パーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
  • OpenShift Compliance Operator をインストールする必要があります。

手順

OpenShift Container Platform Web コンソールを使用して Compliance Operator を削除するには、以下を行います。

  1. Operators Installed Operators Compliance Operator ページに移動します。

    1. All instances をクリックします。
    2. All namespaces で、 kebab オプションメニューをクリックし、すべての ScanSettingBinding、ComplainceSuite、ComplianceScan、および ProfileBundle オブジェクトを削除します。
  2. Administration Operators Installed Operators ページに切り替えます。
  3. Compliance Operator エントリーのオプションメニュー kebab をクリックして Uninstall Operator を選択します。
  4. Home Projects ページに切り替えます。
  5. 'compliance' を検索します。
  6. openshift-compliance プロジェクトの横にある Options メニュー kebab をクリックし、Delete Project を選択します。

    1. ダイアログボックスに openshift-compliance と入力して削除を確認し、Delete をクリックします。

5.5.4.2. CLI を使用した OpenShift Container Platform からの OpenShift Compliance Operator のアンインストール

Compliance Operator を削除するには、まず namespace のオブジェクトを削除する必要があります。オブジェクトが削除されたら、openshift-compliance プロジェクトを削除することで、Operator とその namespace を削除できます。

前提条件

  • cluster-admin パーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
  • OpenShift Compliance Operator をインストールする必要があります。

手順

  1. namespace のすべてのオブジェクトを削除します。

    1. ScanSettingBinding オブジェクトを削除します。

      $ oc delete ssb --all -n openshift-compliance
    2. ScanSetting オブジェクトを削除します。

      $ oc delete ss --all -n openshift-compliance
    3. ComplianceSuite オブジェクトを削除します。

      $ oc delete suite --all -n openshift-compliance
    4. ComplianceScan オブジェクトを削除します。

      $ oc delete scan --all -n openshift-compliance
    5. ProfileBundle オブジェクトを削除します。

      $ oc delete profilebundle.compliance --all -n openshift-compliance
  2. Subscription オブジェクトを削除します。

    $ oc delete sub --all -n openshift-compliance
  3. CSV オブジェクトを削除します。

    $ oc delete csv --all -n openshift-compliance
  4. プロジェクトを削除します。

    $ oc delete project openshift-compliance

    出力例

    project.project.openshift.io "openshift-compliance" deleted

検証

  1. namespace が削除されていることを確認します。

    $ oc get project/openshift-compliance

    出力例

    Error from server (NotFound): namespaces "openshift-compliance" not found

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.