2.3. ポリシーコントローラー
ポリシーコントローラーは、クラスターがポリシーに準拠しているかどうかを監視し、報告します。未設定のポリシーテンプレートを使用して事前定義のポリシーコントローラーおよびポリシーを適用し、Red Hat Advanced Cluster Management for Kubernetes ポリシーフレームワークを使用します。ポリシーコントローラーは Kubernetes の CustomResourceDefinition (CRD) インスタンスです。CRD の詳細は、「Extend the Kubernetes API with CustomResourceDefinitions」を参照してください。ポリシーコントローラーは、ポリシー違反を修正し、クラスターのステータスを準拠させます。
製品ポリシーフレームワークを使用して、カスタムポリシーおよびポリシーコントローラーを作成できます。詳細は、「カスタムポリシーコントローラーの作成」を参照してください。
重要: 設定ポリシーコントローラーだけが enforce 機能をサポートしています。ポリシーコントローラーが enforce 機能をサポートしないポリシーを手動で修正する必要があります。
Red Hat Advanced Cluster Management for Kubernetes の以下のポリシーコントローラーについては、次のトピックを参照してください。
ポリシー管理の他のトピックについては、「ガバナンスおよびリスク」を参照してください。
2.3.1. Kubernetes 設定ポリシーコントローラー
設定ポリシーコントローラーを使用して、Kubernetes リソースを設定し、クラスター全体にセキュリティーポリシーを適用できます。
設定ポリシーコントローラーは、ローカルの Kubernetes API サーバーと通信し、クラスターにある設定の一覧を取得します。CRD の詳細は、「Extend the Kubernetes API with CustomResourceDefinitions」を参照してください。
設定ポリシーコントローラーは、インストール時にハブクラスターに作成されます。設定ポリシーコントローラーは、enforce 機能をサポートし、以下のポリシーのコンプライアンスを監視します。
設定ポリシーの remediationAction が enforce に設定されている場合には、コントローラーはターゲットのマネージドクラスターで複製ポリシーを作成します。
2.3.1.1. 設定ポリシーコントローラーの YAML 構成
Name: configuration-policy-example
Namespace:
Labels:
APIVersion: policy.open-cluster-management.io/v1
Kind: ConfigPolicy
Metadata:
Finalizers:
finalizer.policy.open-cluster-management.io
Spec:
Conditions:
Ownership:
NamespaceSelector:
Exclude:
Include:
RemediationAction:
Status:
CompliancyDetails:
Configuration-Policy-Example:
Default:
Kube - Public:
Compliant: Compliant
Events:2.3.1.2. 設定ポリシーの例
apiVersion: policy.open-cluster-management.io/v1
kind: ConfigPolicy
metadata:
name: policy-config
spec:
namespaceSelector:
include: ["default"]
exclude: []
remediationAction: inform
severity: low
object-templates:
- complianceType: musthave
objectDefinition:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- image: nginx:1.7.9
name: nginx
ports:
- containerPort: 802.3.1.3. 設定ポリシーの YAML の表
表2.1 パラメーターの表
| フィールド | 説明 |
|---|---|
| apiVersion |
必須。この値は |
| kind |
必須。ポリシーのタイプを指定するには、値を |
| metadata.name | 必須。ポリシーの名前。 |
| spec | 必須。監視する設定ポリシーと設定ポリシーの修正方法に関する仕様。 |
| spec.namespaceSelector |
必須。ポリシーの適用先のハブクラスター内にある namespace。 |
| spec.remediationAction |
必須。ポリシーの修正を指定します。 |
| remediationAction.severity |
必須。ポリシーがコンプライアンス違反の場合に重大度を指定します。パラメーター値 |
| remediationAction.complianceType | 必須。マネージドクラスターに評価または適用する必要のあるロールおよび他の Kubernetes オブジェクトの予想される動作をリストするために使用されます。以下の動詞をパラメーター値として使用する必要があります。
|
ハブクラスターでポリシーを適用する方法を説明します。詳細は、「 ポリシーサンプル 」を参照してください。ポリシーを作成してカスタマイズする方法は、「セキュリティーポリシーの管理」を参照してください。
コントローラーの詳細は、「 ポリシーコントローラー 」を参照してください。