Policy Controller の概要

このページでは、Policy Controller の概要と、このコントローラを使用して Kubernetes クラスタとワークロードを安全かつ規制遵守で実行する方法について説明します。

Policy Controller は、Kubernetes クラスタへのプログラム可能なポリシーの利用と適用を可能にします。ポリシーはガードレールとして機能し、クラスタとフリートのベスト プラクティス、セキュリティ、コンプライアンス管理に役立ちます。オープンソースの Open Policy Agent Gatekeeper プロジェクトに基づいて、Policy Controller は Google Cloud と完全に統合されています。オブザーバビリティ用の組み込みダッシュボードと、一般的なセキュリティ管理とコンプライアンス管理を行うためのビルド済みポリシーの完全なライブラリを備えています。

Policy Controller は、Google Kubernetes Engine(GKE)Enterprise エディションのライセンスで利用可能です。

Policy Controller のメリット

  • Google Cloud との統合: プラットフォーム管理者は、フリートに接続されている任意のクラスタで、Google Cloud コンソール、Terraform、または Google Cloud CLI を使用して、Policy Controller をインストールできます。Policy Controller は、Config Sync指標、Cloud Monitoring などの他の Google Cloud サービスと連携します。
  • 複数の適用ポイントのサポート: Policy Controller では、クラスタの監査とアドミッション コントロールの両方に加えて、必要に応じてシフトレフト アプローチを有効にして、適用前に非遵守の変更を分析して把握できます。
  • ビルド済みのポリシー バンドル: Policy Controller には、一般的なセキュリティ管理とコンプライアンス管理のためにビルド済みポリシーの完全なライブラリが用意されています。これには、Google がビルドして管理するポリシー バンドル制約テンプレート ライブラリの両方が含まれています。
  • カスタム ポリシーのサポート: 制約テンプレート ライブラリの機能を超えたポリシーのカスタマイズが必要な場合、Policy Controller ではカスタム制約テンプレートを開発できます。
  • 組み込みオブザーバビリティ: Policy Controller には Google Cloud コンソールのダッシュボードが含まれています。これにより、フリートに適用されているすべてのポリシーの状態を確認できます(未登録のクラスタも含む)。ダッシュボードにコンプライアンスと適用ステータスを表示できます。この情報を利用してトラブルシューティングを行い、ポリシー違反の解決に役立つ独自の推奨事項を取得できます。

ポリシー バンドル

ポリシー バンドルを使用すると、特定の Kubernetes 標準、セキュリティ、コンプライアンス テーマに分類されたさまざまな制約を適用できます。これらのポリシー バンドルは Google によって作成、管理されているため、コードを記述することなくすぐに使用できます。たとえば、次のポリシー バンドルを使用できます。

Policy Controller バンドルの概要には、現在利用可能なポリシー バンドルの詳細とリストが記載されています。

制約

Policy Controller は、制約と呼ばれるオブジェクトを使用してクラスタにポリシーを遵守させます。制約はポリシーの「構成要素」と考えることができます。各制約は、そのクラスタが適用されているクラスタで許可または禁止される Kubernetes API の特定の変更を定義します。ポリシーを遵守していない API リクエストをアクティブにブロックするポリシーや、クラスタの構成を監査して違反を報告するポリシーを設定できます。いずれの場合も、クラスタで発生した違反の詳細を含む警告メッセージを表示できます。この情報を使用して問題に対処できます。たとえば、次の制約を使用できます。

これらは、Policy Controller に含まれている制約テンプレート ライブラリで提供される制約の一部です。このライブラリには、ベスト プラクティスを適用し、リスクを抑えるために使用できる多くのポリシーが含まれています。制約テンプレート ライブラリで提供される機能を超えたカスタマイズが必要な場合は、カスタム制約テンプレートを作成することもできます。

制約は Kubernetes API を使用してクラスタに直接適用することも、Config Sync を使用して信頼できる情報源からクラスタのセットに分散することもできます。

次のステップ