検索

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

download PDF

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

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

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

コマンドラインインターフェイス (CLI) またはコンソールからセキュリティーポリシーを作成できます。

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

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

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

コマンドラインインターフェイス (CLI) からポリシーを作成するには、以下の手順を実行します。

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

    oc create -f policy.yaml -n <policy-namespace>
  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"]
  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
2.9.1.1.1. CLI からのセキュリティーポリシーの表示

以下の手順を実行して、CLI からセキュリティーポリシーを表示します。

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

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

    oc describe policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>

2.9.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

    次の 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

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

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

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

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

2.9.1.3. CLI からのポリシーセットの作成

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

以下のコマンドを実行して CLI からポリシーセットを作成します。

oc apply -f <policyset-filename>

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

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

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

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

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

2.9.2.1. CLI からのポリシーセットへのポリシーの追加

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

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

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

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

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

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

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

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

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

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

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

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

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

  • CLI からセキュリティーポリシーを削除します。

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

      oc delete policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>

      ポリシーを削除すると、ターゲットクラスターから削除されます。oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> コマンドを実行して、ポリシーが削除されたことを確認します。

  • コンソールからセキュリティーポリシーを削除します。

    ナビゲーションメニューから Governance をクリックし、ポリシー表のリストを表示します。ポリシー違反表で、削除するポリシーの Actions アイコンをクリックします。

    Remove をクリックします。Remove policy ダイアログボックスから、Remove policy をクリックします。

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

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

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

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

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

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

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

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

注記:

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

2.9.5. 関連情報

2.9.6. 設定ポリシーの管理

設定ポリシーの作成、適用、表示、および更新を説明します。

必要なアクセス権限: 管理者およびクラスター管理者

2.9.6.1. 設定ポリシーの作成

設定ポリシーの YAML ファイルは、コマンドラインインターフェイス (CLI) またはコンソールから作成できます。

既存の Kubernetes マニフェストがある場合は、ポリシージェネレーターを使用して、ポリシーにマニフェストを自動的に含めることを検討してください。ポリシージェネレーター ドキュメントを参照してください。設定ポリシーの作成は、以下のセクションを参照してください。

2.9.6.1.1. CLI からの設定ポリシーの作成

CLI から設定ポリシーを作成するには、以下の手順を実行します。

  1. 設定ポリシーの YAML ファイルを作成します。以下のコマンドを実行します。

    oc create -f configpolicy-1.yaml

    設定ポリシーは以下のようになります。

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-1
      namespace: my-policies
    policy-templates:
    - apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name: mustonlyhave-configuration
      spec:
        namespaceSelector:
          include: ["default"]
          exclude: ["kube-system"]
        remediationAction: inform
        disabled: false
        complianceType: mustonlyhave
        object-templates:
  2. 以下のコマンドを実行してポリシーを適用します。

    oc apply -f <policy-file-name>  --namespace=<namespace>
  3. 以下のコマンドを実行してポリシーのリストを確認します。

    oc get policies.policy.open-cluster-management.io --namespace=<namespace>

設定ポリシーが作成されました。

2.9.6.1.2. CLI からの設定ポリシーの表示

CLI から設定ポリシーを表示するには、以下の手順を実行します。

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

    oc get policies.policy.open-cluster-management.io <policy-name> -n <namespace> -o yaml
  2. 以下のコマンドを実行して、設定ポリシーの詳細を表示します。

    oc describe policies.policy.open-cluster-management.io <name> -n <namespace>
2.9.6.1.3. コンソールからの設定ポリシーの作成

コンソールから設定ポリシーを作成すると、YAML エディターで YAML ファイルも作成されます。

  1. コンソールからクラスターにログインし、ナビゲーションメニューから Governance を選択します。
  2. Create policy をクリックします。仕様パラメーターの設定ポリシーのいずれかを選択して、作成するポリシーを指定します。
  3. ポリシーフォームを完了して、設定ポリシーの作成を続行します。以下のフィールドに適切な値を入力するか、選択します。

    • 名前
    • Specifications
    • Cluster selector
    • Remediation action
    • Standards
    • Categories
    • Controls
  4. Create をクリックします。設定ポリシーが作成されました。
2.9.6.1.4. コンソールからの設定ポリシーの表示

コンソールから設定ポリシーおよびそのステータスを表示します。

コンソールからクラスターにログインしたら、Governance を選択してポリシー表の一覧を表示します。注記: ポリシー表の一覧をフィルタリングするには、All policies タブまたは Cluster violations タブを選択します。

詳細を表示するポリシーを 1 つ選択します。DetailsClusters、および Templates タブが表示されます。

2.9.6.2. 設定ポリシーの更新

設定ポリシーの更新については、以下のセクションを参照してください。

2.9.6.2.1. 設定ポリシーの無効化

設定ポリシーを無効にします。前述の説明と同様に、ログインして ガバナンス ページに移動し、タスクを完了します。

  1. 表リストから設定ポリシーの Actions アイコンを選択し、Disable をクリックします。Disable Policy ダイアログボックスが表示されます。
  2. Disable policy をクリックします。

ポリシーは無効になっていますが、削除されていません。

2.9.6.3. 設定ポリシーの削除

CLI またはコンソールから設定ポリシーを削除します。

  • 次の手順で、CLI から設定ポリシーを削除します。

    1. 次のコマンドを実行して、1 つまたは複数のターゲットクラスターからポリシーを削除します。

      oc delete policies.policy.open-cluster-management.io <policy-name> -n <namespace>
    2. 以下のコマンドを実行して、ポリシーが削除されていることを確認します。
    oc get policies.policy.open-cluster-management.io <policy-name> -n <namespace>
  • 次の手順で、コンソールから設定ポリシーを削除します。

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

ポリシーが削除されました。

2.9.6.4. 関連情報

2.9.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. ソースが利用可能であることを検証するには、イメージコンテンツソースポリシーの設定 を参照してください。イメージコンテンツソースポリシーは、切断されたマネージドクラスターのそれぞれに存在する必要があり、プロセスを簡素化するためにポリシーを使用してデプロイできます。次のイメージソースの場所の表を参照してください。

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

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

    registry.redhat.io/quay

    コンプライアンス

    registry.redhat.io/compliance

    ゲートキーパー

    registry.redhat.io/rhacm2

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

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

2.9.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"]}
  2. コマンドラインインターフェイスから以前の YAML を適用するには、以下のコマンドを実行します。

    oc apply -f policy-configure-subscription-admin-hub.yaml
  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
  5. 次のコマンドを実行して、コマンドラインインターフェイスから ManagedClusterSetBinding リソースを適用します。

    oc apply -f managed-cluster.yaml

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

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

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

    kustomize build --enable-alpha-plugins  | oc apply -f -

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

2.9.8.3. 関連情報

2.9.9. OperatorPolicy リソースを使用してオペレーターをインストールする (テクノロジープレビュー)

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

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

Red Hat Operator カタログを使用して stable-3.11 チャネルに最新の 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
          subscription:
            channel: stable-3.11
            installPlanApproval: Automatic
            name: quay-operator
            source: redhat-operators
            sourceNamespace: openshift-marketplace

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

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

oc -n <managed cluster namespace> get operatorpolicy install-quay

2.9.9.2. 関連情報

Operator ポリシーコントローラー (テクノロジープレビュー) を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.