4.15. セキュリティーポリシーの管理


指定したセキュリティー標準、カテゴリー、および制御に基づいてクラスターのコンプライアンスを報告および検証するためのセキュリティーポリシーを作成します。

以下のセクションを参照してください。

4.15.1. セキュリティーポリシーの作成

セキュリティーポリシーは、コマンドラインまたはコンソールから作成できます。

必要なアクセス権: クラスター管理者

重要: * ポリシーを特定のクラスターに適用するには、配置および配置バインディングを定義する必要があります。PlacementBinding リソースは配置をバインドします。クラスターの Label selector フィールドに有効な値を入力して、Placement および PlacementBinding リソースを定義してください。* Placement リソースを使用するには、ManagedClusterSetBinding リソースを使用して、ManagedClusterSet リソースを Placement リソースの namespace にバインドする必要があります。詳細は、ManagedClusterSetBinding リソースの作成 を参照してください。

4.15.1.1. コマンドラインインターフェイスからのセキュリティーポリシーの作成

コマンドラインからポリシーを作成するには、次の手順を実行します。

  1. 以下のコマンドを実行してポリシーを作成します。

    oc create -f policy.yaml -n <policy-namespace>
    Copy to Clipboard Toggle word wrap
  2. ポリシーが使用するテンプレートを定義します。YAML ファイルを編集し、policy-templates フィールドを追加してテンプレートを定義します。ポリシーは以下の YAML ファイルのようになります。

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy1
    spec:
      remediationAction: "enforce" # or inform
      disabled: false # or true
      namespaceSelector:
        include:
        - "default"
        - "my-namespace"
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: operator
              # namespace: # will be supplied by the controller via the namespaceSelector
            spec:
              remediationAction: "inform"
              object-templates:
              - complianceType: "musthave" # at this level, it means the role must exist and must have the following rules
                apiVersion: rbac.authorization.k8s.io/v1
                kind: Role
                metadata:
                  name: example
                objectDefinition:
                  rules:
                    - complianceType: "musthave" # at this level, it means if the role exists the rule is a musthave
                      apiGroups: ["extensions", "apps"]
                      resources: ["deployments"]
                      verbs: ["get", "list", "watch", "create", "delete","patch"]
    Copy to Clipboard Toggle word wrap
  3. PlacementBinding リソースを定義して、ポリシーを Placement リソースにバインドします。PlacementBinding リソースは、次の YAML の例のようになります。

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding1
    placementRef:
      name: placement1
      apiGroup: cluster.open-cluster-management.io
      kind: Placement
    subjects:
    - name: policy1
      apiGroup: policy.open-cluster-management.io
      kind: Policy
    Copy to Clipboard Toggle word wrap
4.15.1.1.1. コマンドラインからセキュリティーポリシーを表示する

コマンドラインからセキュリティーポリシーを表示するには、次の手順を実行します。

  1. 以下のコマンドを実行して、特定のセキュリティーポリシーの詳細を表示します。

    oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> -o yaml
    Copy to Clipboard Toggle word wrap
  2. 以下のコマンドを実行して、セキュリティーポリシーの詳細を表示します。

    oc describe policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>
    Copy to Clipboard Toggle word wrap

4.15.1.2. コンソールからのクラスターセキュリティーポリシーの作成

Red Hat Advanced Cluster Management にログインしたら、Governance ページに移動し、Create policy をクリックします。コンソールから新規ポリシーを作成すると、YAML エディターで YAML ファイルも作成されます。YAML エディターを表示するには、Create policy フォームの最初にトグルを選択して有効にします。

  1. Create policy フォームに入力し、Submit ボタンを選択します。YAML ファイルは以下のポリシーのようになります。

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-pod
      annotations:
        policy.open-cluster-management.io/categories: 'SystemAndCommunicationsProtections,SystemAndInformationIntegrity'
        policy.open-cluster-management.io/controls: 'control example'
        policy.open-cluster-management.io/standards: 'NIST,HIPAA'
        policy.open-cluster-management.io/description:
    spec:
      complianceType: musthave
      namespaces:
        exclude: ["kube*"]
        include: ["default"]
        pruneObjectBehavior: None
      object-templates:
      - complianceType: musthave
        objectDefinition:
          apiVersion: v1
          kind: Pod
          metadata:
            name: pod1
          spec:
            containers:
            - name: pod-name
              image: 'pod-image'
              ports:
              - containerPort: 80
      remediationAction: enforce
      disabled: false
    Copy to Clipboard Toggle word wrap

    次の PlacementBinding の例を参照してください。

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-pod
    placementRef:
      name: placement-pod
      kind: Placement
      apiGroup: cluster.open-cluster-management.io
    subjects:
    - name: policy-pod
      kind: Policy
      apiGroup: policy.open-cluster-management.io
    Copy to Clipboard Toggle word wrap

    次の Placement の例を参照してください。

    apiVersion: cluster.open-cluster-management.io/v1beta1
     kind: Placement
     metadata:
       name: placement-pod
    spec:
      predicates:
      - requiredClusterSelector:
          labelSelector:
            matchLabels:
              cloud: "IBM"
        tolerations:
            - key: cluster.open-cluster-management.io/unavailable
              operator: Exists
            - key: cluster.open-cluster-management.io/unreachable
              operator: Exists
    Copy to Clipboard Toggle word wrap
  2. オプション: ポリシーの説明を追加します。
  3. Create Policy をクリックします。コンソールからセキュリティーポリシーが作成されました。
4.15.1.2.1. コンソールからのセキュリティーポリシーの表示

コンソールからセキュリティーポリシーとステータスを表示します。

  1. Governance ページに移動し、ポリシー表の一覧を表示します。注記: ポリシー表の一覧をフィルタリングするには、Policies タブまたは Cluster violations タブを選択します。
  2. 詳細を表示するポリシーを 1 つ選択します。DetailsClusters、および Templates タブが表示されます。クラスターまたはポリシーのステータスを判断できない場合は、No status メッセージが表示されます。
  3. または、Policies タブを選択してポリシーのリストを表示します。ポリシーの行をデプロイメントすると、DescriptionStandardsControls、および Categories の詳細が表示されます。

4.15.1.3. コマンドラインからポリシーセットを作成する

デフォルトでは、ポリシーまたは配置のないポリシーセットが作成されます。ポリシーセットの配置を作成し、クラスターに存在するポリシーを 1 つ以上設定する必要があります。ポリシーセットを作成する場合は、多くのポリシーを追加できます。

コマンドラインからポリシーセットを作成するには、次のコマンドを実行します。

oc apply -f <policyset-filename>
Copy to Clipboard Toggle word wrap

4.15.1.4. コンソールからのポリシーセットの作成

  1. ナビゲーションメニューから Govern を選択します。
  2. Policy sets タブを選択します。
  3. Create policy set ボタンを選択し、フォームを完了します。
  4. ポリシーセットの詳細を追加し、送信 ボタンを選択します。

ポリシーがポリシーテーブルからリスト表示されます。

4.15.2. セキュリティーポリシーの更新

セキュリティーポリシーを更新する方法を学びます。

4.15.2.1. コマンドラインからポリシーセットにポリシーを追加する

  1. 次のコマンドを実行して、ポリシーセットを編集します。

    oc edit policysets <your-policyset-name>
    Copy to Clipboard Toggle word wrap
  2. ポリシーセットの policies セクションのリストにポリシー名を追加します。
  3. 次のコマンドを使用して、追加したポリシーをポリシーセットの配置セクションに適用します。
oc apply -f <your-added-policy.yaml>
Copy to Clipboard Toggle word wrap

PlacementBindingPlacement の両方が作成されます。

注記: 配置バインディングを削除すると、ポリシーはポリシーセットによって配置されます。

4.15.2.2. コンソールからのポリシーセットへのポリシーの追加

  1. Policy sets タブを選択して、ポリシーセットにポリシーを追加します。
  2. Actions アイコンを選択し、Edit を選択します。Edit policy set フォームが表示されます。
  3. フォームの Policies セクションに移動し、ポリシーセットに追加するポリシーを選択します。

4.15.2.3. セキュリティーポリシーの無効化

デフォルトでは、ポリシーは有効です。コンソールからポリシーを無効にします。

Red Hat Advanced Cluster Management for Kubernetes コンソールにログインしたら、Governance ページに移動し、ポリシー表のリストを表示します。

Actions アイコン > Disable policy の順に選択します。Disable Policy ダイアログボックスが表示されます。

Disable policy をクリックします。ポリシーが無効化されました。

4.15.3. セキュリティーポリシーの削除

コマンドラインまたはコンソールからセキュリティーポリシーを削除します。

コマンドラインから削除するには、次の手順に従います。

  1. 以下のコマンドを実行してセキュリティーポリシーを削除します。

    oc delete policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>
    Copy to Clipboard Toggle word wrap
  2. oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> コマンドを実行して、ポリシーが削除されたことを確認します。

コンソールからセキュリティーポリシーを削除するには、次の手順を使用します。

  1. ナビゲーションメニューから Governance をクリックし、ポリシー表のリストを表示します。
  2. ポリシー違反表で、削除するポリシーの Actions アイコンをクリックします。
  3. Remove をクリックします。
  4. Remove policy ダイアログボックスから、Remove policy をクリックします。

4.15.3.1. コンソールからのポリシーセットの削除

  1. Policy sets タブから、ポリシーセットの Actions アイコンを選択します。Delete をクリックすると、Permanently delete Policyset? ダイアログボックスが表示されます。
  2. Delete ボタンをクリックします。

4.15.4. ポリシーによって作成されたリソースのクリーンアップ

ポリシーによって作成されたリソースをクリーンアップするには、設定ポリシーで pruneObjectBehavior パラメーターを使用します。pruneObjectBehavior が設定されていると、関連するオブジェクトは、関連する設定ポリシー (または親ポリシー) が削除された後にのみクリーンアップされます。

パラメーターに使用できる値は、次の説明を参照してください。

  • DeleteIfCreated: ポリシーによって作成されたすべてのリソースをクリーンアップします。
  • DeleteAll: ポリシーによって管理されるすべてのリソースをクリーンアップします。
  • None: これはデフォルト値であり、関連するリソースが削除されない以前のリリースと同じ動作を維持します。

コマンドラインからポリシーを作成するときに、YAML ファイルに値を直接設定できます。

コンソールから、Policy templates ステップの Prune Object Behavior セクションで値を選択できます。

注記:

  • Operator をインストールするポリシーに pruneObjectBehavior パラメーターが定義されている場合は、Operator のアンインストールを完了するのに追加のクリーンアップが必要です。このクリーンアップの一環として、Operator の ClusterServiceVersion オブジェクトを削除する必要がある場合があります。
  • マネージドクラスターで config-policy-addon リソースを無効にすると、pruneObjbectBehavior は無視されます。ポリシーの関連リソースを自動的にクリーンアップするには、アドオンを無効にする前に、マネージドクラスターからポリシーを削除する必要があります。

4.15.5. ポリシーコマンドラインツール

policytools コマンドラインツールを使用すると、ポリシーをローカルで操作して、作成とデバッグを支援できます。policytools コマンドラインツールは、ハブクラスターコンソールからダウンロードできます。コマンドラインツール を参照してください。

template-resolver

template-resolver はポリシーに埋め込まれているマネージドクラスターとハブクラスターテンプレートを解決する policytools のサブコマンドです。template-resolver は、ファイルまたは標準入力から読み取ります。

ハブクラスターテンプレートを使用してポリシーを解決するには、Red Hat Advanced Cluster Management にインポートされるマネージドクラスターの名前を --cluster-name 引数に指定する必要があります。また、ハブクラスターを参照する kubeconfig ファイルへのパスを --hub-kubeconfig 引数に指定する必要があります。

入力ポリシーで .ObjectName または .ObjectNamespace テンプレート変数が使用されている場合は、--object-name および --object-namespace 引数を使用して値を設定する必要があります。

template-resolver サブコマンドは、マネージドクラスターとハブクラスターに接続して、テンプレートを解決するために必要な情報を取得します。--save-resources および --save-hub-resources 引数を使用してパスを指定し、template-resolver が取得するリソースを保存します。保存されたファイルは、dryrun サブコマンドの入力として使用できます。

dryrun

dryrun は、クラスターの状態の静的入力リソースを使用して、ConfigurationPolicy リソースをローカルで評価する policytools のサブコマンドです。

ポリシーを実行するには、--policy フラグを使用して ConfigurationPolicy YAML にパスを追加します。現在のクラスターの状態として使用される追加のリソース YAML ファイルを提供できます。たとえば、ポリシーで namespace の特定の設定を定義する場合は、現在の namespace の状態を指定して、ポリシーが何を行うかを確認します。同じリソースファイル内に複数のリソースを含めることができます。

デフォルトでは、dryrun は、ポリシーで定義されたオブジェクトの望ましい状態とそれらのリソースの現在の状態の違い、および ConfigurationPolicy によって作成されるコンプライアンスメッセージを出力します。コンプライアンスメッセージを別のファイルに保存するには、--messages-path 引数を使用します。関連オブジェクトに関する追加情報を含む完全なポリシーステータスを保存するには、--status-path 引数を使用します。

入力に基づいてポリシーが NonCompliant の場合、ツールはゼロ以外の終了コードを返します。結果のステータスを既知のステータスと比較するには、--desired-status 引数を使用します。たとえば、ポリシーが不足しているリソースを報告していることを確認するには、不足しているリソースを .relatedObjects リスト内に含める YAML ファイルを提供します。ポリシーが NonCompliant であることを確認するには、compliant: NonCompliant 行を含む YAML ファイルを作成します。

4.15.6. 関連情報

4.15.7. 非接続環境での Operator ポリシーの管理

インターネットに接続していない (切断状態の) Red Hat OpenShift Container Platform クラスターへの Red Hat Advanced Cluster Management for Kubernetes ポリシーのデプロイが必要になる場合があります。デプロイするポリシーを、Operator Lifecycle Manager Operator をインストールするポリシーのデプロイに使用する場合は、Operator カタログのミラーリング の手順に従う必要があります。

Operator イメージへのアクセスを検証するには、次の手順を実行します。

  1. ポリシーで使用するために必要なパッケージが利用可能であることを検証するには、必要なパッケージが利用可能であることの確認 を参照してください。次のポリシーがデプロイされているマネージドクラスターで使用される各イメージレジストリーの可用性を検証する必要があります。

    • container-security-operator
    • 非推奨: gatekeeper-operator-product
    • compliance-operator
  2. ソースが利用可能であることを検証するには、イメージコンテンツソースポリシーの設定 を参照してください。イメージコンテンツソースポリシーは、切断されたマネージドクラスターのそれぞれに存在する必要があり、プロセスを簡素化するためにポリシーを使用してデプロイできます。次のイメージソースの場所の表を参照してください。

    Expand
    ガバナンスポリシーの種類イメージソースの場所

    コンテナーのセキュリティー

    registry.redhat.io/quay

    コンプライアンス

    registry.redhat.io/compliance

    ゲートキーパー

    registry.redhat.io/rhacm2

4.15.8. ポリシーセットを使用した Red Hat OpenShift Platform Plus のインストール

Red Hat Openshift Platform Plus ポリシーセットを適用するためのガイダンスは、引き続きお読みください。Red Hat OpenShift ポリシーセットを適用すると、Red Hat Advanced Cluster Security で保護されたクラスターサービスと Compliance Operator がすべての OpenShift Container Platform マネージドクラスターにデプロイされます。

4.15.8.1. 前提条件

ポリシーセットを適用する前に、次の手順を完了してください。

  1. サブスクリプションをクラスターに適用できるようにするには、policy-configure-subscription-admin-hub.yaml ポリシーを適用し、修復アクションを enforce に設定する必要があります。次の YAML をコピーして、コンソールの YAML エディターに貼り付けます。

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-configure-subscription-admin-hub
      annotations:
        policy.open-cluster-management.io/standards: NIST SP 800-53
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    spec:
      remediationAction: inform
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-configure-subscription-admin-hub
            spec:
              remediationAction: inform
              severity: low
              object-templates:
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: rbac.authorization.k8s.io/v1
                    kind: ClusterRole
                    metadata:
                      name: open-cluster-management:subscription-admin
                    rules:
                    - apiGroups:
                      - app.k8s.io
                      resources:
                      - applications
                      verbs:
                      - '*'
                    - apiGroups:
                      - apps.open-cluster-management.io
                      resources:
                      - '*'
                      verbs:
                      - '*'
                    - apiGroups:
                      - ""
                      resources:
                      - configmaps
                      - secrets
                      - namespaces
                      verbs:
                      - '*'
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: rbac.authorization.k8s.io/v1
                    kind: ClusterRoleBinding
                    metadata:
                      name: open-cluster-management:subscription-admin
                    roleRef:
                      apiGroup: rbac.authorization.k8s.io
                      kind: ClusterRole
                      name: open-cluster-management:subscription-admin
                    subjects:
                    - apiGroup: rbac.authorization.k8s.io
                      kind: User
                      name: kube:admin
                    - apiGroup: rbac.authorization.k8s.io
                      kind: User
                      name: system:admin
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-policy-configure-subscription-admin-hub
    placementRef:
      name: placement-policy-configure-subscription-admin-hub
      kind: Placement
      apiGroup: cluster.open-cluster-management.io
    subjects:
    - name: policy-configure-subscription-admin-hub
      kind: Policy
      apiGroup: policy.open-cluster-management.io
    ---
    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-policy-configure-subscription-admin-hub
    spec:
      predicates:
      - requiredClusterSelector:
          labelSelector:
            matchExpressions:
            - {key: name, operator: In, values: ["local-cluster"]}
        tolerations:
            - key: cluster.open-cluster-management.io/unavailable
              operator: Exists
            - key: cluster.open-cluster-management.io/unreachable
              operator: Exists
    Copy to Clipboard Toggle word wrap
  2. コマンドラインインターフェイスから以前の YAML を適用するには、以下のコマンドを実行します。

    oc apply -f policy-configure-subscription-admin-hub.yaml
    Copy to Clipboard Toggle word wrap
  3. Policy Generator kustomize プラグインをインストールします。Kustomize v4.5 以降を使用してください。Operator をインストールするためのポリシーの生成 を参照してください。
  4. ポリシーは policies namespace にインストールされます。その namespace を ClusterSet にバインドする必要があります。たとえば、以下のサンプル YAML をコピーして適用し、namespace をデフォルトの ClusterSet にバインドします。

    apiVersion: cluster.open-cluster-management.io/v1beta2
    kind: ManagedClusterSetBinding
    metadata:
        name: default
        namespace: policies
    spec:
        clusterSet: default
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、コマンドラインインターフェイスから ManagedClusterSetBinding リソースを適用します。

    oc apply -f managed-cluster.yaml
    Copy to Clipboard Toggle word wrap

前提条件を満たしたら、ポリシーセットを適用できます。

4.15.8.2. Red Hat OpenShift Platform Plus ポリシーセットの適用

  1. Red Hat OpenShift Plus の前提条件設定が含まれている openshift-plus/policyGenerator.yaml ファイルを使用します。
  2. Kustomize コマンドを使用して、ポリシーをハブクラスターに適用します。

    kustomize build --enable-alpha-plugins  | oc apply -f -
    Copy to Clipboard Toggle word wrap

    注記: インストールしたくない OpenShift Platform Plus のコンポーネントは、policyGenerator.yaml ファイルを編集し、それらのコンポーネントのポリシーを削除またはコメントアウトします。

4.15.8.3. 関連情報

4.15.9. OperatorPolicy リソースを使用して Operator をインストールする

マネージドクラスターに Operator Lifecycle Manager (OLM) マネージドオペレーターをインストールするには、Policy 定義で OperatorPolicy ポリシーテンプレートを使用します。

4.15.9.1. Quay をインストールするための OperatorPolicy リソースの作成

Red Hat Operator カタログを使用して channel チャネルに最新の Quay Operator をインストールする次の Operator ポリシーサンプルを参照してください。

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: install-quay
  namespace: open-cluster-management-global-set
spec:
  disabled: false
  policy-templates:
    - objectDefinition:
        apiVersion: policy.open-cluster-management.io/v1beta1
        kind: OperatorPolicy
        metadata:
          name: install-quay
        spec:
          remediationAction: enforce
          severity: critical
          complianceType: musthave
          upgradeApproval: None
          subscription:
            channel: <stable-version>
            name: quay-operator
            source: redhat-operators
            sourceNamespace: openshift-marketplace
Copy to Clipboard Toggle word wrap

OperatorPolicy ポリシーテンプレートを追加すると、コントローラーを使用してクラスター上に operatorGroup オブジェクトおよび subscription オブジェクトが作成されます。その結果、インストールの残りの部分は OLM によって完了します。マネージドクラスターの OperatorPolicy リソースの .status.Conditions フィールドと .status.relatedObjects フィールドで、所有リソースの正常性を確認できます。

Operator ポリシーのステータスを確認するには、マネージドクラスターで次のコマンドを実行します。

oc -n <managed cluster namespace> get operatorpolicy install-quay
Copy to Clipboard Toggle word wrap

4.15.9.2. 関連情報

Operator ポリシーコントローラー を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat