2.5. サポート対象のポリシー


Red Hat Advanced Cluster Management for Kubernetes でポリシーの作成および管理時に、ハブクラスターでのルール、プロセス、制御の定義方法を説明するサポート対象のポリシーを確認します。

Note: ポリシー YAML に既存のポリシーをコピーアンドペーストします。パラメーターフィールドの値は、既存のポリシーを貼り付けると自動的に入力されます。検索機能で、ポリシー YAML ファイルの内容も検索できます。

2.5.1. 追加設定なしに使用可能なポリシーのサポートマトリックス

Expand
ポリシーRed Hat OpenShift Container Platform 3.11Red Hat OpenShift Container Platform 4

メモリー使用状況のポリシー

x

x

Namespace ポリシー

x

x

イメージ脆弱性ポリシー

x

x

Pod ポリシー

x

x

Pod セキュリティーポリシー (非推奨)

  

ロールポリシー

x

x

Role binding ポリシー

x

x

SCC (Security Context Constraints) ポリシー

x

x

ETCD 暗号化ポリシー

 

x

gatekeeper ポリシー

 

x

コンプライアンス Operator ポリシー

 

x

E8 スキャンポリシー

 

x

OpenShift CIS スキャンポリシー

 

x

ポリシーセット

 

x

Kyverno 追加ネットワーク

 

x

Kyverno 追加クォータ

 

x

Kyverno 同期シークレット

 

x

以下のポリシーサンプルを参照し、特定のポリシーの適用方法を確認します。

他のトピックについては、ガバナンス を参照してください。

2.5.2. メモリー使用状況のポリシー

Kubernetes 設定ポリシーコントローラーは、メモリー使用状況ポリシーのステータスを監視します。メモリー使用状況ポリシーを使用して、メモリーおよびコンピュートの使用量を制限または制約します。詳細は、Kubernetes ドキュメントLimit Ranges を参照してください。

以下のセクションでは、メモリー使用状況ポリシーの設定について説明します。

2.5.2.1. メモリー使用状況ポリシー YAML の設定

メモリー使用状況ポリシーは、以下の YAML ファイルのようになります。

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-limitrange
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        apiVersion:
        kind:
        metadata:
          name:
        spec:
          limits:
          - default:
              memory:
            defaultRequest:
              memory:
            type:
        ...
Copy to Clipboard Toggle word wrap

2.5.2.2. メモリー使用状況のポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.2.3. メモリー使用状況ポリシーの例

ポリシーのサンプルを確認するには、policy-limitmemory.yaml を参照してください。詳細については、セキュリティーポリシーの管理 を参照してください。設定コントローラーによって監視されるその他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.3. Namespace ポリシー

Kubernetes 設定ポリシーコントローラーは、namespace ポリシーのステータスを監視します。Namespace ポリシーを適用し、namespace の特定のルールを定義します。

以下のセクションでは namespace ポリシーの設定について説明します。

2.5.3.1. Namespace ポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-namespace-1
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        kind:
        apiVersion:
        metadata:
          name:
    ...
Copy to Clipboard Toggle word wrap

2.5.3.2. Namespace ポリシー YAML の表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.3.3. Namespace ポリシーの例

ポリシーのサンプルを確認するには、policy-namespace.yaml を参照してください。

詳細については、セキュリティーポリシーの管理 を参照してください。他の設定ポリシーの詳細は、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.4. イメージ脆弱性ポリシー

イメージ脆弱性ポリシーを適用し、コンテナーセキュリティー Operator を利用してコンテナーイメージに脆弱性があるかどうかを検出します。このポリシーは、コンテナーセキュリティー Operator がインストールされていない場合は、これをマネージドクラスターにインストールします。

イメージ脆弱性ポリシーは、Kubernetes 設定ポリシーコントローラーがチェックします。セキュリティー Operator の詳細は、Quay リポジトリーコンテナーセキュリティー Operator を参照してください。

注記:

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

2.5.4.1. イメージ脆弱性ポリシーの YAML 設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-imagemanifestvulnpolicy
  namespace: default
  annotations:
    policy.open-cluster-management.io/standards: NIST-CSF
    policy.open-cluster-management.io/categories: DE.CM Security Continuous Monitoring
    policy.open-cluster-management.io/controls: DE.CM-8 Vulnerability Scans
spec:
  remediationAction:
  disabled:
  policy-templates:
  - objectDefinition:
      apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name:
      spec:
        remediationAction:
        severity: high
        object-templates:
          - complianceType:
            objectDefinition:
              apiVersion: operators.coreos.com/v1alpha1
              kind: Subscription
              metadata:
                name: container-security-operator
                namespace:
              spec:
                channel:
                installPlanApproval:
                name:
                source:
                sourceNamespace:
  - objectDefinition:
      apiVersion: policy.open-cluster-management.io/v1
      kind: ConfigurationPolicy
      metadata:
        name:
      spec:
        remediationAction:
        severity:
        namespaceSelector:
          exclude:
          include:
        object-templates:
          - complianceType:
            objectDefinition:
              apiVersion: secscan.quay.redhat.com/v1alpha1
              kind: ImageManifestVuln # checking for a kind
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-policy-imagemanifestvulnpolicy
  namespace: default
placementRef:
  name:
  kind:
  apiGroup:
subjects:
- name:
  kind:
  apiGroup:
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
  name: placement-policy-imagemanifestvulnpolicy
  namespace: default
spec:
  clusterConditions:
  - status:
    type:
  clusterSelector:
    matchExpressions:
      []  # selects all clusters if not specified
Copy to Clipboard Toggle word wrap

2.5.4.2. イメージ脆弱性ポリシー YAML の表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.4.3. イメージ脆弱性ポリシーの例

policy-imagemanifestvuln.yaml を参照してください。詳細は、セキュリティーポリシーの管理 を参照してください。

コントローラーによって監視されるその他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.5. Pod ポリシー

Kubernetes 設定ポリシーコントローラーは、ロールポリシーのステータスを監視します。Pod ポリシーを適用し、Pod のコンテナールールを定義します。この情報を使用するには、Pod がクラスターに存在している必要があります。

以下のセクションでは、Pod ポリシーの設定について説明します。

2.5.5.1. Pod ポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-pod
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        apiVersion:
        kind: Pod # pod must exist
        metadata:
          name:
        spec:
          containers:
          - image:
            name:
            ports:
            - containerPort:
    ...
Copy to Clipboard Toggle word wrap

2.5.5.2. Pod ポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.5.3. Pod ポリシーの例

ポリシーのサンプルを確認するには、 policy-pod.yaml を参照してください。

コントローラーによって監視されるその他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー を参照してください。他のポリシーの管理については、設定ポリシーの管理 を参照してください。

2.5.6. Pod のセキュリティーポリシー

Kubernetes 設定ポリシーコントローラーは、Pod セキュリティーポリシーのステータスを監視します。Pod のセキュリティーポリシーを適用して Pod およびコンテナーのセキュリティーを保護します。詳細は、Kubernetes ドキュメントPod Security Policies を参照してください。

以下のセクションでは、Pod セキュリティーポリシーの設定について説明します。

2.5.6.1. Pod セキュリティーポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-podsecuritypolicy
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        apiVersion:
        kind: PodSecurityPolicy # no privileged pods
        metadata:
          name:
          annotations:
        spec:
          privileged:
          allowPrivilegeEscalation:
          allowedCapabilities:
          volumes:
          hostNetwork:
          hostPorts:
          hostIPC:
          hostPID:
          runAsUser:
            rule:
          seLinux:
            rule:
          supplementalGroups:
            rule:
          fsGroup:
            rule:
     ...
Copy to Clipboard Toggle word wrap

2.5.6.2. Pod セキュリティーポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.6.3. Pod セキュリティーポリシーの例

サンプルポリシーを確認するには、policy-psp.yaml を参照してください。詳細は、設定ポリシーの管理 を参照してください。

設定コントローラーによって監視されるその他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.7. ロールポリシー

Kubernetes 設定ポリシーコントローラーは、ロールポリシーのステータスを監視します。object-template にロールを定義して、クラスター内の特定ロールのルールおよびパーミッションを設定します。

以下のセクションでは、ロールポリシーの設定について説明します。

2.5.7.1. ロールポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-role
  namespace:
  annotations:
    policy.open-cluster-management.io/standards: NIST-CSF
    policy.open-cluster-management.io/categories: PR.AC Identity Management Authentication and Access Control
    policy.open-cluster-management.io/controls: PR.AC-4 Access Control
spec:
  remediationAction: inform
  disabled: false
  policy-templates:
    - objectDefinition:
        apiVersion: policy.open-cluster-management.io/v1
        kind: ConfigurationPolicy
        metadata:
          name: policy-role-example
        spec:
          remediationAction: inform # will be overridden by remediationAction in parent policy
          severity: high
          namespaceSelector:
            include: ["default"]
          object-templates:
            - complianceType: mustonlyhave # role definition should exact match
              objectDefinition:
                apiVersion: rbac.authorization.k8s.io/v1
                kind: Role
                metadata:
                  name: sample-role
                rules:
                  - apiGroups: ["extensions", "apps"]
                    resources: ["deployments"]
                    verbs: ["get", "list", "watch", "delete","patch"]
---
apiVersion: policy.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
  name: binding-policy-role
  namespace:
placementRef:
  name: placement-policy-role
  kind: PlacementRule
  apiGroup: apps.open-cluster-management.io
subjects:
- name: policy-role
  kind: Policy
  apiGroup: policy.open-cluster-management.io
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
  name: placement-policy-role
  namespace:
spec:
  clusterConditions:
    - type: ManagedClusterConditionAvailable
      status: "True"
  clusterSelector:
    matchExpressions:
      []

         ...
Copy to Clipboard Toggle word wrap

2.5.7.2. ロールポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.7.3. ロールポリシーの例

ロールポリシーを適用して、クラスター内の特定のロールのルールおよびパーミッションを設定します。ロールの詳細は、ロールベースのアクセス制御 を参照してください。ロールポリシーのサンプルを確認するには policy-role.yaml を参照してください。

ロールポリシーの管理方法は、設定ポリシーの管理 を参照してください。コントローラーが監視する他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー ページを参照してください。

2.5.8. Role binding ポリシー

Kubernetes 設定ポリシーコントローラーは、role binding ポリシーのステータスを監視します。Role Binding ポリシーを適用し、ポリシーをマネージドクラスターの namespace にバインドします。

以下のセクションでは namespace ポリシーの設定について説明します。

2.5.8.1. Role Binding ポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name:
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        kind: RoleBinding # role binding must exist
        apiVersion: rbac.authorization.k8s.io/v1
        metadata:
          name: operate-pods-rolebinding
        subjects:
        - kind: User
          name: admin # Name is case sensitive
          apiGroup:
        roleRef:
          kind: Role #this must be Role or ClusterRole
          name: operator # this must match the name of the Role or ClusterRole you wish to bind to
          apiGroup: rbac.authorization.k8s.io
    ...
Copy to Clipboard Toggle word wrap

2.5.8.2. Role Binding ポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別するための名前。

metadata.namespaces

必須。ポリシーが作成されるマネージドクラスター内の namespace。

spec

必須。コンプライアンス違反を特定して修正する方法の仕様。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.complianceType

必須。値は "musthave" に設定します。

spec.namespace

必須。ポリシーを適用するマネージドクラスターの namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

spec.remediationAction

必須。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。

spec.object-template

必須。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

2.5.8.3. Role Binding ポリシーの例

ポリシーのサンプルを確認するには、policy-rolebinding.yaml を参照してください。他のポリシーの管理に関する詳細は、設定ポリシーの管理 を参照してください。

他の設定ポリシーの詳細は、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.9. SCC (Security Context Constraints) ポリシー

Kubernetes 設定ポリシーコントローラーは、SCC (Security Context Constraints) ポリシーのステータスを監視します。SCC (Security Context Constraints) ポリシーを適用し、ポリシーで条件を定義して Pod のパーミッションを制御します。

以下のセクションで、SCC ポリシーについての詳細を説明します。

2.5.9.1. SCC ポリシー YAML の設定

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: policy-scc
  namespace: open-cluster-management-policies
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        apiVersion:
        kind: SecurityContextConstraints # restricted scc
        metadata:
          annotations:
            kubernetes.io/description:
          name: sample-restricted-scc
        allowHostDirVolumePlugin:
        allowHostIPC:
        allowHostNetwork:
        allowHostPID:
        allowHostPorts:
        allowPrivilegeEscalation:
        allowPrivilegedContainer:
        allowedCapabilities:
        defaultAddCapabilities:
        fsGroup:
         type:
        groups:
        - system:
        priority:
        readOnlyRootFilesystem:
        requiredDropCapabilities:
        runAsUser:
          type:
        seLinuxContext:
          type:
        supplementalGroups:
          type:
        users:
        volumes:
Copy to Clipboard Toggle word wrap

2.5.9.2. SCC ポリシーの表

Expand
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。ポリシーのタイプを指定するには、値を Policy に設定します。

metadata.name

必須。ポリシーリソースを識別するための名前。

metadata.namespace

必須。ポリシーが作成されるマネージドクラスター内の namespace。

spec.complianceType

必須。値は "musthave" に設定します。

spec.remediationAction

必須。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。重要: ポリシーによっては、enforce 機能をサポートしない場合があります。

spec.namespace

必須。ポリシーを適用するマネージドクラスターの namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

spec.object-template

必須。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。

SCC ポリシーの内容の説明は、OpenShift Container Platform ドキュメントの SCC (Security Context Constraints) の管理 を参照してください。

2.5.9.3. SCC ポリシーの例

SCC (Security Context Constraints) ポリシーを適用し、ポリシーで条件を定義して Pod のパーミッションを制御します。詳細は、SCC (Security Context Constraints) の管理 を参照してください。

ポリシーのサンプルを確認するには、 policy-scc.yaml を参照してください。他のポリシーの管理に関する詳細は、設定ポリシーの管理 を参照してください。

他の設定ポリシーの詳細は、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.10. ETCD 暗号化ポリシー

etcd-encryption ポリシーを適用して、ETCD データストアで機密データを検出するか、機密データの暗号化を有効にします。Kubernetes 設定ポリシーコントローラーは、etcd-encryption ポリシーのステータスを監視します。詳細は、OpenShift Container Platform ドキュメント の etcd データの暗号化 を参照してください。注記: ETCD 暗号化ポリシーは、Red Hat OpenShift Container Platform 4 以降のみをサポートします。

以下のセクションでは、 etcd-encryption ポリシーの設定について説明します。

2.5.10.1. ETCD 暗号化ポリシーの YAML 設定

etcd-encryption ポリシーは、以下の YAML ファイルのようになります。

apiVersion: policy.open-cluster-management.io/v1
kind: ConfigurationPolicy
metadata:
  name: policy-etcdencryption
  namespace:
spec:
  complianceType:
  remediationAction:
  namespaces:
    exclude:
    include:
  object-templates:
    - complianceType:
      objectDefinition:
        apiVersion: config.openshift.io/v1
        kind: APIServer
        metadata:
          name: cluster
        spec:
          encryption:
            type:
        ...
Copy to Clipboard Toggle word wrap

2.5.10.2. ETCD 暗号化ポリシーの表

Expand
表2.5 パラメーターの表
フィールド説明

apiVersion

必須。この値は policy.open-cluster-management.io/v1 に設定します。

kind

必須。この値を Policy に設定して ConfigurationPolicy などのポリシーの種類を指定します。

metadata.name

必須。ポリシーリソースを識別する名前。

metadata.namespaces

任意。

spec.namespace

必須。ポリシーの適用先のハブクラスター内にある namespace。include には、ポリシーを適用する namespace のパラメーター値を入力します。exclude パラメーターには、ポリシーを明示的に適用しない namespace を指定します。注記: ポリシーコントローラーのオブジェクトテンプレートで指定される namespace は、対応する親ポリシーの namespace を上書きします。

remediationAction

任意。ポリシーの修正を指定します。パラメーターの値は enforce および inform です。重要: ポリシーによっては、enforce 機能をサポートしない場合があります。

disabled

必須。この値は true または false に設定します。disabled パラメーターを使用すると、ポリシーを有効または無効にすることができます。

spec.complianceType

必須。値は "musthave" に設定します。

spec.object-template

任意。マネージドクラスターを評価するか、マネージドクラスターに適用する必要がある他の Kubernetes オブジェクトを一覧表示するのに使用します。OpenShift Container Platform ドキュメントの etcd データの暗号化 を参照してください。

2.5.10.3. etcd 暗号化ポリシーの例

ポリシーのサンプルについては、policy-etcdencryption.yaml を参照してください。詳細は、セキュリティーポリシーの管理 を参照してください。

設定コントローラーによって監視されるその他の設定ポリシーについては、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.11. コンプライアンス Operator ポリシー

コンプライアンス Operator は、OpenSCAP を実行する Operator で、Red Hat OpenShift Container Platform クラスターを必要なセキュリティーベンチマークに常に準拠させることができます。コンプライアンス Operator ポリシーを使用して、マネージドクラスターにコンプライアンス Operator をインストールできます。

コンプライアンス Operator ポリシーは、Kubernetes 設定ポリシーとして Red Hat Advanced Cluster Management に作成されます。コンプライアンス Operator ポリシーは、OpenShift Container Platform 4.6 および 4.7 でサポートされます。詳細は、OpenShift Container Platform ドキュメントの コンプライアンス Operator について を参照してください。

注記: コンプライアンス Operator ポリシー は、IBM Power または IBM Z アーキテクチャーではサポートされていない OpenShift Container Platform コンプライアンス Operator に依存します。コンプライアンス Operator の詳細は、OpenShift Container Platform ドキュメントの コンプライアンス Operator について を参照してください。

2.5.11.1. コンプライアンス Operator のリソース

コンプライアンス Operator ポリシーを作成すると、次のリソースが作成されます。

  • Operator インストール用のコンプライアンス Operator namespace (openshift-compliance):
apiVersion: policy.open-cluster-management.io/v1
kind: ConfigurationPolicy
metadata:
  name: comp-operator-ns
spec:
  remediationAction: inform # will be overridden by remediationAction in parent policy
  severity: high
  object-templates:
    - complianceType: musthave
      objectDefinition:
        apiVersion: v1
        kind: Namespace
        metadata:
          name: openshift-compliance
Copy to Clipboard Toggle word wrap
  • 対象の namespace を指定する Operator グループ (compliance-operator):
apiVersion: policy.open-cluster-management.io/v1
kind: ConfigurationPolicy
metadata:
  name: comp-operator-operator-group
spec:
  remediationAction: inform # will be overridden by remediationAction in parent policy
  severity: high
  object-templates:
    - complianceType: musthave
      objectDefinition:
        apiVersion: operators.coreos.com/v1
        kind: OperatorGroup
        metadata:
          name: compliance-operator
          namespace: openshift-compliance
        spec:
          targetNamespaces:
            - openshift-compliance
Copy to Clipboard Toggle word wrap
  • 名前とチャネルを参照するためのサブスクリプション (comp-operator-subscription)。サブスクリプションは、サポートするプロファイルをコンテナーとしてプルします。
apiVersion: policy.open-cluster-management.io/v1
kind: ConfigurationPolicy
metadata:
  name: comp-operator-subscription
spec:
  remediationAction: inform  # will be overridden by remediationAction in parent policy
  severity: high
  object-templates:
    - complianceType: musthave
      objectDefinition:
        apiVersion: operators.coreos.com/v1alpha1
        kind: Subscription
        metadata:
          name: compliance-operator
          namespace: openshift-compliance
        spec:
          channel: "4.7"
          installPlanApproval: Automatic
          name: compliance-operator
          source: redhat-operators
          sourceNamespace: openshift-marketplace
Copy to Clipboard Toggle word wrap

コンプライアンス Operator ポリシーをインストールすると、compliance-operatorocp4 、および rhcos4 の Pod が作成されます。policy-compliance-operator-install.yaml のサンプルを参照してください。

コンプライアンス Operator をインストールした後に、E8 スキャンポリシーと OpenShift CIS スキャンポリシーを作成して適用することもできます。詳細は、E8 スキャンポリシー および OpenShift CIS スキャンポリシー を参照してください。

コンプライアンス Operator ポリシーの管理に関する詳細は、セキュリティポリシーの管理 を参照してください。設定ポリシーの他のトピックについては、Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.12. E8 スキャンポリシー

Essential 8 (E8) スキャンポリシーは、マスターノードとワーカーノードが E8 セキュリティープロファイルに準拠しているかどうかを確認するスキャンをデプロイします。E8 スキャンポリシーを適用するには、コンプライアンス Operator をインストールする必要があります。

E8 スキャンポリシーは、Kubernetes 設定ポリシーとして Red Hat Advanced Cluster Management に作成されます。E8 スキャンポリシーは OpenShift Container Platform 4.6 および 4.7 でサポートされます。詳細は、OpenShift Container Platform ドキュメントコンプライアンス Operator についてを参照してください。

2.5.12.1. E8 スキャンポリシーリソース

E8 スキャンポリシーを作成すると、次のリソースが作成されます。

  • スキャンするプロファイルを特定する ScanSettingBinding リソース (e8):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-suite-e8
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: musthave # this template checks if scan has completed by checking the status field
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ScanSettingBinding
            metadata:
              name: e8
              namespace: openshift-compliance
            profiles:
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: ocp4-e8
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: rhcos4-e8
            settingsRef:
              apiGroup: compliance.openshift.io/v1alpha1
              kind: ScanSetting
              name: default
    Copy to Clipboard Toggle word wrap
  • status フィールドを確認してスキャンが完了したかどうかを確認する ComplianceSuite リソース (compliance-suite-e8):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-suite-e8
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: musthave # this template checks if scan has completed by checking the status field
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ComplianceSuite
            metadata:
              name: e8
              namespace: openshift-compliance
            status:
              phase: DONE
    Copy to Clipboard Toggle word wrap
  • ComplianceCheckResult カスタムリソース (CR) を確認してスキャンスイートの結果を報告する ComplianceCheckResult リソース (compliance-suite-e8-results):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-suite-e8-results
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: mustnothave # this template reports the results for scan suite: e8 by looking at ComplianceCheckResult CRs
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ComplianceCheckResult
            metadata:
              namespace: openshift-compliance
              labels:
                compliance.openshift.io/check-status: FAIL
                compliance.openshift.io/suite: e8
    Copy to Clipboard Toggle word wrap

注記: 自動修復はサポート対象です。ScanSettingBinding リソースを作成するには修復アクションを enforce に設定します。

policy-compliance-operator-e8-scan.yaml の サンプルを参照してください。詳細は、セキュリティーポリシーの管理 を参照してください。注記: E8 ポリシーの削除後に、これはターゲットクラスターから削除されます。

2.5.13. OpenShift CIS スキャンポリシー

OpenShift CIS スキャンポリシーは、マスターとワーカーノードをチェックして、OpenShift CIS セキュリティーベンチマークに準拠しているかどうかを確認するスキャンをデプロイします。OpenShift CIS ポリシーを適用するには、コンプライアンス Operator をインストールする必要があります。

OpenShift CIS ポリシーは、Kubernetes 設定ポリシーとして Red Hat Advanced Cluster Management に作成されます。OpenShift CIS スキャンポリシーは OpenShift Container Platform 4.6 および 4.7、4.9 でサポートされます。詳細は、OpenShift Container Platform ドキュメントの コンプライアンス Operator について を参照してください。

2.5.13.1. OpenShift CIS リソース

OpenShift CIS スキャンポリシーを作成すると、次のリソースが作成されます。

  • スキャンするプロファイルを特定する ScanSettingBinding リソース (cis):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-cis-scan
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: musthave # this template creates ScanSettingBinding:cis
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ScanSettingBinding
            metadata:
              name: cis
              namespace: openshift-compliance
            profiles:
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: ocp4-cis
            - apiGroup: compliance.openshift.io/v1alpha1
              kind: Profile
              name: ocp4-cis-node
            settingsRef:
              apiGroup: compliance.openshift.io/v1alpha1
              kind: ScanSetting
              name: default
    Copy to Clipboard Toggle word wrap
  • status フィールドを確認してスキャンが完了したかどうかを確認する ComplianceSuite リソース (compliance-suite-cis):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-suite-cis
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: musthave # this template checks if scan has completed by checking the status field
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ComplianceSuite
            metadata:
              name: cis
              namespace: openshift-compliance
            status:
              phase: DONE
    Copy to Clipboard Toggle word wrap
  • ComplianceCheckResult カスタムリソース (CR) を確認してスキャンスイートの結果を報告する ComplianceCheckResult リソース (compliance-suite-cis-results):

    apiVersion: policy.open-cluster-management.io/v1
    kind: ConfigurationPolicy
    metadata:
      name: compliance-suite-cis-results
    spec:
      remediationAction: inform
      severity: high
      object-templates:
        - complianceType: mustnothave # this template reports the results for scan suite: cis by looking at ComplianceCheckResult CRs
          objectDefinition:
            apiVersion: compliance.openshift.io/v1alpha1
            kind: ComplianceCheckResult
            metadata:
              namespace: openshift-compliance
              labels:
                compliance.openshift.io/check-status: FAIL
                compliance.openshift.io/suite: cis
    Copy to Clipboard Toggle word wrap

policy-compliance-operator-cis-scan.yaml ファイルのサンプルを参照してください。ポリシーの作成に関する詳細は、セキュリティーポリシーの管理 を参照してください。

2.5.14. Kyverno 追加ネットワークポリシー

Kyverno 追加ネットワークポリシーは、新しい namespace を作成するときにすべてのトラフィックを拒否する default-deny と呼ばれる NetworkPolicy リソースを新規設定します。Kyverno ポリシーを使用するには、Kyverno コントローラーをインストールする必要があります。インストールポリシーについては、policy-install-kyverno.yaml を参照してください。

次のセクションで、policy-kyverno-add-network-policy ポリシー構造の詳細を確認してください。

2.5.14.1. Kyverno 追加ネットワークポリシーの YAML 構造

policy-kyverno-add-network-policy ポリシーは、次の YAML ファイルのようになります。

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: add-networkpolicy
  annotations:
    policies.kyverno.io/title: Add Network Policy
    policies.kyverno.io/category: Multi-Tenancy
    policies.kyverno.io/subject: NetworkPolicy
    policies.kyverno.io/description: >-
      By default, Kubernetes allows communications across all Pods within a cluster.
      The NetworkPolicy resource and a CNI plug-in that supports NetworkPolicy must be used to restrict
      communications. A default NetworkPolicy should be configured for each Namespace to
      default deny all ingress and egress traffic to the Pods in the Namespace. Application
      teams can then configure additional NetworkPolicy resources to allow desired traffic
      to application Pods from select sources. This policy will create a new NetworkPolicy resource
      named `default-deny` which will deny all traffic anytime a new Namespace is created.
spec:
  rules:
  - name: default-deny
    match:
      resources:
        kinds:
        - Namespace
    generate:
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      name: default-deny
      namespace: "{{request.object.metadata.name}}"
      synchronize: true
      data:
        spec:
          # select all pods in the namespace
          podSelector: {}
          # deny all traffic
          policyTypes:
          - Ingress
          - Egress
Copy to Clipboard Toggle word wrap

2.5.14.2. Kyverno 追加ネットワークポリシーのサンプル

ポリシーのサンプルについては、 policy-kyverno-add-network-policy.yaml を参照してください。ポリシーおよび設定ポリシーフィールドの詳細は、ポリシーの概要 ドキュメントと Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.15. Kyverno 追加クォータポリシー

Kyverno 追加クォータポリシーは、新しい namespace を作成するときに、ResourceQuota および LimitRange リソースを新規設定します。Kyverno ポリシーを使用するには、Kyverno コントローラーをインストールする必要があります。インストールポリシーについては、policy-install-kyverno.yaml を参照してください。

次のセクションで、policy-kyverno-add-quota ポリシー構造の詳細を確認してください。

2.5.15.1. Kyverno 追加クォータポリシーの YAML 構造

policy-kyverno-add-quota ポリシーは、次の YAML ファイルのようになります。

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: add-ns-quota
  annotations:
    policies.kyverno.io/title: Add Quota
    policies.kyverno.io/category: Multi-Tenancy
    policies.kyverno.io/subject: ResourceQuota, LimitRange
    policies.kyverno.io/description: >-
      To better control the number of resources that can be created in a given
      Namespace and provide default resource consumption limits for Pods,
      ResourceQuota and LimitRange resources are recommended.
      This policy will generate ResourceQuota and LimitRange resources when
      a new Namespace is created.
spec:
  rules:
  - name: generate-resourcequota
    match:
      resources:
        kinds:
        - Namespace
    generate:
      apiVersion: v1
      kind: ResourceQuota
      name: default-resourcequota
      synchronize: true
      namespace: "{{request.object.metadata.name}}"
      data:
        spec:
          hard:
            requests.cpu: '4'
            requests.memory: '16Gi'
            limits.cpu: '4'
            limits.memory: '16Gi'
  - name: generate-limitrange
    match:
      resources:
        kinds:
        - Namespace
    generate:
      apiVersion: v1
      kind: LimitRange
      name: default-limitrange
      synchronize: true
      namespace: "{{request.object.metadata.name}}"
      data:
        spec:
          limits:
          - default:
              cpu: 500m
              memory: 1Gi
            defaultRequest:
              cpu: 200m
              memory: 256Mi
            type: Container
Copy to Clipboard Toggle word wrap

2.5.15.2. Kyverno 追加クォータポリシーポリシーのサンプル

ポリシーのサンプルについては、policy-kyverno-add-quota.yaml を参照してください。ポリシーおよび設定ポリシーフィールドの詳細は、ポリシーの概要 ドキュメントと Kubernetes 設定ポリシーコントローラー を参照してください。

2.5.16. Kyverno 同期シークレットポリシー

Kyverno 同期シークレットポリシーは、default の namespace に存在する regcred という名前のシークレットを、作成した新しい namespace にコピーし、変更が検出されたときにシークレットを更新します。Kyverno ポリシーを使用するには、Kyverno コントローラーをインストールする必要があります。インストールポリシーについては、policy-install-kyverno.yaml を参照してください。

次のセクションで、policy-kyverno-sync-secrets ポリシー構造の詳細を確認してください。

2.5.16.1. Kyverno 同期シークレットポリシーの YAML 構造

policy-kyverno-sync-secrets ポリシーは、次の YAML ファイルのようになります。

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: sync-secrets
  annotations:
    policies.kyverno.io/title: Sync Secrets
    policies.kyverno.io/category: Sample
    policies.kyverno.io/subject: Secret
    policies.kyverno.io/description: >-
      Secrets like registry credentials often need to exist in multiple
      Namespaces so Pods there have access. Manually duplicating those Secrets
      is time consuming and error prone. This policy will copy a
      Secret called `regcred` which exists in the `default` Namespace to
      new Namespaces when they are created. It will also push updates to
      the copied Secrets should the source Secret be changed.
spec:
  rules:
  - name: sync-image-pull-secret
    match:
      resources:
        kinds:
        - Namespace
    generate:
      apiVersion: v1
      kind: Secret
      name: regcred
      namespace: "{{request.object.metadata.name}}"
      synchronize: true
      clone:
        namespace: default
        name: regcred
Copy to Clipboard Toggle word wrap

2.5.16.2. Kyverno 同期シークレットポリシーポリシーのサンプル

ポリシーのサンプルについては、policy-kyverno-sync-secrets.yaml を参照してください。ポリシーおよび設定ポリシーフィールドの詳細は、ポリシーの概要 ドキュメントと Kubernetes 設定ポリシーコントローラー を参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る