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
リソースが設定されている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub ページに移動します。 - Compliance Operator を検索し、Install をクリックします。
-
Installation mode および namespace のデフォルトの選択を維持し、Operator が
openshift-compliance
namespace にインストールされていることを確認します。 - Install をクリックします。
検証
インストールが正常に行われたことを確認するには、以下を実行します。
-
Operators
Installed Operators ページに移動します。 -
Compliance Operator が
openshift-compliance
namespace にインストールされ、そのステータスがSucceeded
であることを確認します。
Operator が正常にインストールされていない場合、以下を実行します。
-
Operators
Installed Operators ページに移動し、 Status
列でエラーまたは失敗の有無を確認します。 -
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
リソースが設定されている。
手順
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
に設定する必要があります。
Namespace
オブジェクトを作成します。$ oc create -f namespace-object.yaml
OperatorGroup
オブジェクトを定義します。operator-group-object.yaml
の例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
OperatorGroup
オブジェクトを作成します。$ oc create -f operator-group-object.yaml
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
Subscription
オブジェクトを作成します。$ oc create -f subscription-object.yaml
グローバルスケジューラー機能を設定する際に、defaultNodeSelector
を有効にする場合、namespace を手動で作成し、openshift-compliance
のアノテーションを更新するか、openshift.io/node-selector: “"
を使用して Compliance Operator がインストールされている namespace のアノテーションを更新する必要があります。これにより、デフォルトのノードセレクターが削除され、デプロイメントの失敗を防ぐことができます。
検証
CSV ファイルを確認して、インストールが正常に完了したことを確認します。
$ oc get csv -n openshift-compliance
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
リソースが設定されている。
手順
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
に設定する必要があります。
次のコマンドを実行して、
Namespace
オブジェクトを作成します。$ oc create -f namespace-object.yaml
OperatorGroup
オブジェクトを定義します。operator-group-object.yaml
ファイルの例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
以下のコマンドを実行して
OperatorGroup
オブジェクトを作成します。$ oc create -f operator-group-object.yaml
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
ノードにデプロイします。
以下のコマンドを実行して
Subscription
オブジェクトを作成します。$ oc create -f subscription-object.yaml
検証
次のコマンドを実行してクラスターサービスバージョン (CSV) ファイルを調べ、インストールが成功したことを確認します。
$ oc get csv -n openshift-compliance
次のコマンドを使用して、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
権限がある。
手順
以下のような
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
に設定する必要があります。
次のコマンドを実行して、
Namespace
オブジェクトを作成します。$ oc create -f namespace-object.yaml
OperatorGroup
オブジェクトを定義します。operator-group-object.yaml
の例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: compliance-operator namespace: openshift-compliance spec: targetNamespaces: - openshift-compliance
以下のコマンドを実行して
OperatorGroup
オブジェクトを作成します。$ oc create -f operator-group-object.yaml
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"
以下のコマンドを実行して
Subscription
オブジェクトを作成します。$ oc create -f subscription-object.yaml
検証
以下のコマンドを実行して CSV ファイルを検査し、インストールが正常に完了したことを確認します。
$ oc get csv -n openshift-compliance
次のコマンドを実行して、Compliance Operator が稼働していることを確認します。
$ oc get deploy -n openshift-compliance
5.5.1.5. 関連情報
- Compliance Operator はネットワークが制限された環境でサポートされています。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
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.2
、1.3
) またはリリース頻度 (stable
、fast
) に基づく可能性があります。
インストールされた 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。
手順
-
Web コンソールの Administrator パースペクティブで、Operators
Installed Operators に移動します。 - 更新チャネルを変更する Operator の名前をクリックします。
- Subscription タブをクリックします。
- Update channel の下にある更新チャネルの名前をクリックします。
- 変更する新しい更新チャネルをクリックし、Save をクリックします。
Automatic 承認ストラテジーのあるサブスクリプションの場合、更新は自動的に開始します。Operators
Installed Operators ページに戻り、更新の進捗をモニターします。完了時に、ステータスは Succeeded および Up to date に変更されます。 Manual 承認ストラテジーのあるサブスクリプションの場合、Subscription タブから更新を手動で承認できます。
5.5.2.3. 保留中の Operator 更新の手動による承認
インストールされた Operator のサブスクリプションの承認ストラテジーが Manual に設定されている場合、新規の更新が現在の更新チャネルにリリースされると、インストールを開始する前に更新を手動で承認する必要があります。
前提条件
- Operator Lifecycle Manager (OLM) を使用して以前にインストールされている Operator。
手順
-
OpenShift Container Platform Web コンソールの Administrator パースペクティブで、Operators
Installed Operators に移動します。 - 更新が保留中の Operator は Upgrade available のステータスを表示します。更新する Operator の名前をクリックします。
- Subscription タブをクリックします。承認が必要な更新は、Upgrade status の横に表示されます。たとえば、1 requires approval が表示される可能性があります。
- 1 requires approval をクリックしてから、Preview Install Plan をクリックします。
- 更新に利用可能なリソースとして一覧表示されているリソースを確認します。問題がなければ、Approve をクリックします。
-
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
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. 関連情報
- Compliance Operator はネットワークが制限された環境でサポートされています。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。
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 を削除するには、以下を行います。
Operators
Installed Operators Compliance Operator ページに移動します。 - All instances をクリックします。
- All namespaces で、 オプションメニューをクリックし、すべての ScanSettingBinding、ComplainceSuite、ComplianceScan、および ProfileBundle オブジェクトを削除します。
-
Administration
Operators Installed Operators ページに切り替えます。 - Compliance Operator エントリーのオプションメニュー をクリックして Uninstall Operator を選択します。
-
Home
Projects ページに切り替えます。 - 'compliance' を検索します。
openshift-compliance プロジェクトの横にある Options メニュー をクリックし、Delete Project を選択します。
-
ダイアログボックスに
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 をインストールする必要があります。
手順
namespace のすべてのオブジェクトを削除します。
ScanSettingBinding
オブジェクトを削除します。$ oc delete ssb --all -n openshift-compliance
ScanSetting
オブジェクトを削除します。$ oc delete ss --all -n openshift-compliance
ComplianceSuite
オブジェクトを削除します。$ oc delete suite --all -n openshift-compliance
ComplianceScan
オブジェクトを削除します。$ oc delete scan --all -n openshift-compliance
ProfileBundle
オブジェクトを削除します。$ oc delete profilebundle.compliance --all -n openshift-compliance
Subscription オブジェクトを削除します。
$ oc delete sub --all -n openshift-compliance
CSV オブジェクトを削除します。
$ oc delete csv --all -n openshift-compliance
プロジェクトを削除します。
$ oc delete project openshift-compliance
出力例
project.project.openshift.io "openshift-compliance" deleted
検証
namespace が削除されていることを確認します。
$ oc get project/openshift-compliance
出力例
Error from server (NotFound): namespaces "openshift-compliance" not found