4.16. セキュリティーポリシーの管理
指定したセキュリティー標準、カテゴリー、および制御に基づいてクラスターのコンプライアンスを報告および検証するためのセキュリティーポリシーを作成します。
以下のセクションを参照してください。
4.16.1. セキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーポリシーは、コマンドラインまたはコンソールから作成できます。
必要なアクセス権: クラスター管理者
重要: * ポリシーを特定のクラスターに適用するには、配置および配置バインディングを定義する必要があります。PlacementBinding リソースは配置をバインドします。クラスターの Label selector フィールドに有効な値を入力して、Placement および PlacementBinding リソースを定義してください。* Placement リソースを使用するには、ManagedClusterSetBinding リソースを使用して、ManagedClusterSet リソースを Placement リソースの namespace にバインドする必要があります。詳細は、ManagedClusterSetBinding リソースの作成 を参照してください。
4.16.1.1. コマンドラインインターフェイスからのセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインからポリシーを作成するには、次の手順を実行します。
以下のコマンドを実行してポリシーを作成します。
oc create -f policy.yaml -n <policy-namespace>ポリシーが使用するテンプレートを定義します。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"]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
4.16.1.1.1. コマンドラインからセキュリティーポリシーを表示する リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインからセキュリティーポリシーを表示するには、次の手順を実行します。
以下のコマンドを実行して、特定のセキュリティーポリシーの詳細を表示します。
oc get policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace> -o yaml以下のコマンドを実行して、セキュリティーポリシーの詳細を表示します。
oc describe policies.policy.open-cluster-management.io <policy-name> -n <policy-namespace>
4.16.1.2. コンソールからのクラスターセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management にログインしたら、Governance ページに移動し、Create policy をクリックします。コンソールから新規ポリシーを作成すると、YAML エディターで YAML ファイルも作成されます。YAML エディターを表示するには、Create policy フォームの最初にトグルを選択して有効にします。
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" tolerations: - key: cluster.open-cluster-management.io/unavailable operator: Exists - key: cluster.open-cluster-management.io/unreachable operator: Exists- オプション: ポリシーの説明を追加します。
- Create Policy をクリックします。コンソールからセキュリティーポリシーが作成されました。
4.16.1.2.1. コンソールからのセキュリティーポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
コンソールからセキュリティーポリシーとステータスを表示します。
- Governance ページに移動し、ポリシー表の一覧を表示します。注記: ポリシー表の一覧をフィルタリングするには、Policies タブまたは Cluster violations タブを選択します。
-
詳細を表示するポリシーを 1 つ選択します。Details、Clusters、および Templates タブが表示されます。クラスターまたはポリシーのステータスを判断できない場合は、
No statusメッセージが表示されます。 - または、Policies タブを選択してポリシーのリストを表示します。ポリシーの行を展開すると、Description、Standards、Controls、および Categories の詳細が表示されます。
4.16.1.3. コマンドラインからポリシーセットを作成する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、ポリシーまたは配置のないポリシーセットが作成されます。ポリシーセットの配置を作成し、クラスターに存在するポリシーを 1 つ以上設定する必要があります。ポリシーセットを作成する場合は、多くのポリシーを追加できます。
コマンドラインからポリシーセットを作成するには、次のコマンドを実行します。
oc apply -f <policyset-filename>
4.16.1.4. コンソールからのポリシーセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
- ナビゲーションメニューから Governance を選択します。
- Policy sets タブを選択します。
- Create policy set ボタンを選択し、フォームを完了します。
- ポリシーセットの詳細を追加し、送信 ボタンを選択します。
ポリシーがポリシーテーブルからリスト表示されます。