2.6.6. セキュリティーポリシーの管理
セキュリティーポリシーを作成して、指定のセキュリティー標準、カテゴリー、制御をもとにクラスターのコンプライアンスを報告して検証します。Red Hat Advanced Cluster Management for Kubernetes のポリシーを作成するには、マネージドクラスターで YAML ファイルを作成する必要があります。
Note: ポリシー YAML に既存のポリシーをコピーアンドペーストします。パラメーターフィールドの値は、既存のポリシーを貼り付けると自動的に入力されます。検索機能で、ポリシー YAML ファイルの内容も検索できます。
以下のセクションを参照してください。
2.6.6.1. セキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) またはコンソールからセキュリティーポリシーを作成できます。クラスター管理者のアクセス権限が必要です。
重要: ポリシーを特定のクラスターに適用するには、配置ルールおよび配置バインディングを定義する必要があります。Cluster selector フィールドに値を入力して、PlacementRule と PlacementBinding を定義します。有効な式については、Kubernetes ドキュメントの セットベースの要件をサポートするリソース を参照してください。Red Hat Advanced Cluster Management for Kubernetes ポリシーに必要なオブジェクトの定義を表示します。
- PlacementRule: ポリシーをデプロイする必要のある クラスターセレクター を定義します。
- PlacementBinding: 配置を配置ルールにバインドします。
ポリシー YAML ファイルに関する詳細は、ポリシーの概要 を参照してください。
2.6.6.1.1. コマンドラインインターフェイスからのセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) からポリシーを作成するには、以下の手順を実行します。
以下のコマンドを実行してポリシーを作成します。
kubectl create -f policy.yaml -n <namespace>ポリシーが使用するテンプレートを定義します。
.yamlファイルを編集し、templatesフィールドを追加してテンプレートを定義します。ポリシーは以下の YAML ファイルのようになります。apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: policy1 spec: remediationAction: "enforce" # or inform disabled: false # or true namespaces: include: ["default"] exclude: ["kube*"] policy-templates: - objectDefinition: apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: namespace: kube-system # will be inferred name: operator 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"]PlacementRuleを定義します。PlacementRuleを変更して、clusterNamesまたはclusterLabelsで、ポリシーを適用する必要のあるクラスターを指定します。配置ルールの例の概要 を確認してください。PlacementRuleは以下のようになります。apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: placement1 spec: clusterConditions: - type: ManagedClusterConditionAvailable status: "True" clusterNames: - "cluster1" - "cluster2" clusterLabels: matchLabels: cloud: IBMPlacementBindingを定義して、ポリシーとPlacementRuleをバインドします。PlacementBindingは以下の YAML の例のようになります。apiVersion: policy.open-cluster-management.io/v1 kind: PlacementBinding metadata: name: binding1 placementRef: name: placement1 apiGroup: apps.open-cluster-management.io kind: PlacementRule subjects: - name: policy1 apiGroup: policy.open-cluster-management.io kind: Policy
2.6.6.1.1.1. CLI からのセキュリティーポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を実行して、CLI からセキュリティーポリシーを表示します。
以下のコマンドを実行して、特定のセキュリティーポリシーの詳細を表示します。
kubectl get securitypolicy <policy-name> -n <namespace> -o yaml以下のコマンドを実行して、セキュリティーポリシーの詳細を表示します。
kubectl describe securitypolicy <name> -n <namespace>
2.6.6.1.2. コンソールからのクラスターセキュリティーポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
コンソールから新規ポリシーを作成すると、YAML エディターで YAML ファイルも作成されます。
Governance ページに移動し、Create policy をクリックします。
必要なポリシーを入力するか、または選択します。ポリシーを選択すると、パラメーターの値が自動的に入力されます。
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'
spec:
complianceType: musthave
namespaces:
exclude: ["kube*"]
include: ["default"]
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
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementBinding
metadata:
name: binding-pod
placementRef:
name: placement-pod
kind: PlacementRule
apiGroup: apps.open-cluster-management.io
subjects:
- name: policy-pod
kind: Policy
apiGroup: policy.open-cluster-management.io
---
apiVersion: apps.open-cluster-management.io/v1
kind: PlacementRule
metadata:
name: placement-pod
spec:
clusterConditions:
- type: ManagedClusterConditionAvailable
status: "True"
clusterLabels:
matchLabels:
cloud: "IBM"
Create Policy をクリックします。コンソールからセキュリティーポリシーが作成されました。
2.6.6.1.2.1. コンソールからのセキュリティーポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
コンソールからセキュリティーポリシーおよびそのステータスを表示します。
Governance ページに移動し、ポリシー表の一覧を表示します。注記: ポリシー表の一覧をフィルターリングするには、Policies タブまたは Cluster violations タブを選択します。
詳細を表示するポリシーを 1 つ選択します。Details、Clusters、および Templates タブが表示されます。クラスターまたはポリシーのステータスを判断できない場合は、No status メッセージが表示されます。