2.5. セキュリティーポリシーの管理
セキュリティーポリシーおよびポリシー違反の作成、表示、および管理には、ガバナンスおよびリスクのダッシュボードを使用します。CLI およびコンソールからポリシーの YAML ファイルを作成できます。
ガバナンスおよびリスク ページでは、カテゴリーや基準で違反をフィルタリングして概要ビューをカスタマイズしたり、概要ビューを折りたたみ表示数を減らしたりだけでなく、ポリシーの検索も可能です。ポリシーまたはクラスターの違反別に、違反の表のビューもフィルタリングできます。
ポリシーの表では、Policy name、Namespace、Remediation、Cluster violation、Standards、Categories および Controls のポリシーの情報を表示します。Actions アイコンを選択すると、ポリシーの編集、無効化、通知、または削除が可能です。
表一覧でポリシーを選択すると、コンソールで、以下の情報タブが表示されます。
- 詳細: Details タブを選択して、ポリシーの情報、配置の情報、_Policy テンプレートの表一覧を表示します。
- Status: Status タブを選択して、違反の表一覧を表示します。Clusters または Templates 別にビューをフィルタリングできます。ポリシーのコンプライアンスステータスを表示するには、Status タブを選択します。View history リンクをクリックして、違反メッセージの一覧を表示します。
- YAML: YAML タブを選択して、ポリシーを表示するか、エディターでポリシーを編集します。YAML の切り替えを選択してエディターを表示または非表示にします。
セキュリティーポリシーの作成および更新の詳細は、以下のトピックを参照してください。
他のトピックについては、「ガバナンスおよびリスク」を参照してください。
2.5.1. セキュリティーポリシーの管理
セキュリティーポリシーを作成して、指定のセキュリティー標準、カテゴリー、制御をもとにクラスターのコンプライアンスを報告して検証します。Red Hat Advanced Cluster Management for Kubernetes のポリシーを作成するには、マネージドクラスターで YAML ファイルを作成する必要があります。
Note: ポリシー YAML に既存のポリシーをコピーアンドペーストします。パラメーターフィールドの値は、既存のポリシーを貼り付けると自動的に入力されます。検索機能で、ポリシー YAML ファイルの内容も検索できます。
2.5.1.1. セキュリティーポリシーの作成
コマンドラインインターフェース (CLI) またはコンソールからセキュリティーポリシーを作成できます。クラスター管理者のアクセス権限が必要です。
重要: ポリシーを特定のクラスターに適用するには、PlacementPolicy および PlacementBinding を定義する必要があります。Cluster binding フィールドに値を入力して、PlacementPolicy と PlacementBinding を定義します。Red Hat Advanced Cluster Management for Kubernetes ポリシーに必要なオブジェクトの定義を表示します。
- PlacementRule: ポリシーをデプロイする必要のある クラスターセレクター を定義します。
- PlacementBinding: 配置を PlacementPolicy にバインドします。
ポリシー YAML ファイルに関する詳細は、「ポリシーの概要」を参照してください。
2.5.1.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: IBM
PlacementBinding
を定義して、ポリシーと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.mcm.ibm.com kind: Policy
2.5.1.1.1.1. CLI からのセキュリティーポリシーの表示
以下の手順を実行して、CLI からセキュリティーポリシーを表示します。
以下のコマンドを実行して、特定のセキュリティーポリシーの詳細を表示します。
kubectl get securitypolicy <policy-name> -n <namespace> -o yaml
以下のコマンドを実行して、セキュリティーポリシーの詳細を表示します。
kubectl describe securitypolicy <name> -n <namespace>
2.5.1.1.2. コンソールからのクラスターセキュリティーポリシーの作成
コンソールから新規ポリシーを作成すると、YAML エディターで YAML ファイルも作成されます。
- ナビゲーションメニューから Govern risk をクリックします。
- ポリシーを作成するには、Create policy をクリックします。
以下のパラメーターの値を入力または選択します。
- Name (名前)
- Specifications (仕様)
- Cluster selector (クラスターセレクター)
- Remediation action (修復アクション)
- Standards (標準)
- Categories (カテゴリー)
- Controls (制御)
以下で、Red Hat Advanced Cluster Management for Kubernetes セキュリティーポリシー定義の例を表示します。次に、ポリシーの YAML ファイルをコピーアンドペーストします。
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: nginx1 spec: containers: - name: nginx image: 'nginx:1.7.9' 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.mcm.ibm.com --- 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.5.1.1.2.1. コンソールからのセキュリティーポリシーの表示
コンソールからセキュリティーポリシーおよびそのステータスを表示できます。
- コンソールからクラスターにログインします。
ナビゲーションメニューから、Governance and risk をクリックして、ポリシー表の一覧を表示します。
注記: ポリシー表の一覧をフィルタリングするには、Policies タブまたは Cluster violations タブを選択します。
- 詳細を表示するポリシーを 1 つ選択します。Overview タブ、Status タブ、および YAML タブが表示されます。
2.5.1.2. セキュリティーポリシーの更新
以下のセクションを参照して、セキュリティーポリシーを更新します。
2.5.1.2.1. セキュリティーポリシーの無効化
デフォルトでは、ポリシーは有効です。ポリシーを無効にするには、以下の手順を実行します。
- Red Hat Advanced Cluster Management for Kubernetes コンソールにログインします。
- ナビゲーションメニューから Govern risk をクリックし、ポリシー表の一覧を表示します。
- Options icon > Disable policy の順にクリックして、ポリシーを無効化します。Disable Policy ダイアログボックスが表示されます。
- Disable policy をクリックします。
ポリシーが無効化されました。
2.5.1.2.2. セキュリティーポリシーの削除
CLI またはコンソールからセキュリティーポリシーを削除します。
CLI からセキュリティーポリシーを削除します。
- 以下のコマンドを実行してセキュリティーポリシーを削除します。
kubectl delete policy <securitypolicy-name> -n <open-cluster-management-namespace>
+ ポリシーの削除後に、これはターゲットクラスターから削除されます。
kubectl get policy <securitypolicy-name> -n <open-cluster-management-namespace>
のコマンドを実行して、ポリシーが削除されていることを確認します。コンソールからセキュリティーポリシーを削除します。
- ナビゲーションメニューから Govern risk をクリックし、ポリシー表の一覧を表示します。
- ポリシー違反表で、削除するポリシーの Actions アイコンをクリックします。
- Remove をクリックします。
- Remove policy ダイアログボックスから Remove policy をクリックします。
他のポリシーの管理については、「セキュリティーポリシーの管理」を参照してください。ポリシーに関する他のトピックについては、「ガバナンスおよびリスク」を参照してください。