Policy Controller の概要
Anthos Config Management の Policy Controller を使用すると、完全にプログラム可能なポリシーをクラスタに適用できます。こうしたポリシーは「ガードレール」として機能し、Kubernetes API の構成に対する変更がセキュリティ、運用、コンプライアンスの管理に違反することを防止します。
ポリシーを遵守していない API リクエストを積極的にブロックするように、または単にクラスタ構成を監査し違反を報告するように、ポリシーを設定できます。Policy Controller は、オープンソースの Open Policy Agent Gatekeeper プロジェクトをベースにしています。事前構築されたポリシーの完全なライブラリが付属し、共通のセキュリティ / コンプライアンス制御を実装できます。
Kubernetes 環境をアクティブにコントロールするだけでなく、デプロイ前にコンプライアンスのために構成を分析する方法として、必要に応じて Policy Controller を使用できます。これにより、構成変更の過程で貴重なフィードバックが得られます。また、ポリシーを遵守していない変更を、適用時に拒否される前に早期に発見できます。
制約
Policy Controller は、制約と呼ばれるオブジェクトを使用してクラスタにポリシーを遵守させます。たとえば、次の制約を使用できます。
- 各名前空間に 1 つ以上のラベルがあることを必須とする制約。この制約を使用して、GKE 使用状況測定の使用時にリソースの使用量を正確にトラッキングできます。
- PodSecurityPolicies と同じ要件の多くを適用できますが、適用前に構成を監査できる機能を追加することで、ポリシーの変更がワークロードの実行に影響しないようにします。
- 指定されたコンテナ イメージを pull できるリポジトリを制限する制約。この制約により、不明なソースからコンテナを pull しようとすると拒否し、悪意のあるソフトウェアが実行されないようクラスタを保護します。
これらは、Policy Controller のインストールに含まれる制約ライブラリの一部として提供される制約の一部にすぎません。このライブラリには、ベスト プラクティスの実施とリスクの制限に役立つ多数のポリシーが含まれています。
制約は Kubernetes API を使用してクラスタに直接適用することも、Config Sync を使用して中央 Git リポジトリからクラスタのセットに分散することもできます。
詳細については、制約の作成をご覧ください。
制約テンプレート
Policy Controller では、制約テンプレートを作成して独自のカスタム ポリシーを追加することもできます。制約テンプレートは、ポリシー パラメータ、エラー メッセージ、カスタム ロジックを定義します。
これらのテンプレートが作成されると、誰でも制約を使用してポリシーを呼び出すことができます。制約はパラメータを設定し、ポリシーが適用されるリソースと名前空間のスコープを定義します。この分離により、対象分野の専門家がポリシーを一度記述すると、他のユーザーはポリシーコードを記述または管理することなく、さまざまなコンテキストでポリシーを使用できます。
詳細については、制約テンプレートの作成をご覧ください。
Policy Controller の RBAC と権限
Policy Controller には、高い特権を持つワークロードが含まれています。これらのワークロードの権限は、Open Policy Agent の Gatekeeper オペレーションのドキュメントで説明されています。
次のステップ
- Policy Controller のインストール方法を確認する。
- Google が提供する制約テンプレート ライブラリを使用する。
- PodSecurityPolicies の代わりに制約を使用する方法を学ぶ。