Kubernetes クラスターのガバナンス

ガバナンスとは、企業の標準への準拠を保証するルールを適用および検証する組織の機能を指します。 ガバナンスは、組織がリスクを軽減し、企業の標準と外部規制に準拠し、導入やイノベーションの中断を最小限に抑えるのに役立ちます。

ガバナンスには、計画イニシアチブ、戦略的優先順位の設定、メカニズムとプロセスを使用してアプリケーションとリソースを制御することが含まれます。 クラウド環境の Kubernetes クラスターの場合、ガバナンスとは、Kubernetes クラスターとそれらのクラスターで実行されるアプリケーション全体にポリシーを実装することを意味します。

Kubernetes ガバナンスには、クラウド環境とクラスター デプロイ インフラストラクチャ、およびクラスター自体とそのアプリケーションの両方が含まれます。 このガイドでは、Kubernetes クラスター内のガバナンスに焦点を当てています。 この記事では、Amazon Elastic Kubernetes Service (Amazon EKS) と Azure Kubernetes Service (AKS) における Kubernetes クラスター ガバナンスの管理方法について説明し、両者を比較します。

注意

この記事は、Amazon EKS に詳しいプロフェッショナルの方を対象に、AKS についてわかりやすく説明した連載記事の一部です。

Kubernetes ガバナンス ディメンション

3 つのディメンションによって、一貫した Kubernetes ガバナンス戦略が定義されます。

  • ターゲットは、ガバナンス戦略が満たす必要があるセキュリティとコンプライアンス ポリシーの目標を表します。 たとえば、ターゲットは、Kubernetes クラスター、名前空間、アプリケーションにアクセスできるユーザー、またはどのコンテナー レジストリとイメージをどのクラスターで使用するかを指定します。 通常、セキュリティ運用チームは、会社のガバナンス戦略を定義する最初のステップとして、これらのターゲットを設定します。

  • スコープは、ターゲット ポリシーが適用される要素の詳細を示します。 スコープは、Kubernetes で表示されるすべてのコンポーネントに対応する必要があります。 スコープには、部門、チーム、グループなどの組織単位、クラウド、リージョン、名前空間などの環境、またはその両方を指定できます。

  • ポリシー ディレクティブでは、Kubernetes 機能を使用して、指定したスコープ全体にターゲット ルールを適用し、ガバナンス ポリシーを適用します。

詳細については、「Kubernetes ガバナンス、知っておくべきこと」を参照してください。

EKS と AKS でのガバナンス

  • アマゾン ウェブ サービス (AWS) のお客様は通常、Kyverno、Gatekeeper、またはその他のサードパーティ ソリューションを使用して、Amazon EKS クラスターのガバナンス戦略を定義して実装します。 aws-eks-best-practices/policies GitHub リポジトリには、Kyverno と Gatekeeper のサンプル ポリシーのコレクションが含まれています。

  • Azure のお客様は、Kyverno または Gatekeeper も使用できます。また、Kubernetes アドオンの Azure Policy を使用して、AKS ガバナンス戦略のために Gatekeeper を拡張することもできます。

ゲートキーパー

Cloud Native Computing Foundation (CNCF) は、Kubernetes クラスターでポリシーを適用するためのオープンソースの Gatekeeper Policy Controller for Kubernetes を後援しています。 Gatekeeper は、汎用ポリシー エンジンである Open Policy Agent (OPA) で作成されたポリシーを適用する Kubernetes アドミッション コントローラーです。

OPA では、Rego と呼ばれる高レベルの宣言型の言語を使用して、個別のインスタンスまたは異なる優先順位でテナントからポッドを実行できるポリシーを作成します。 一般的な OPA ポリシーのコレクションについては、「OPA ゲートキーパー ライブラリ」を参照してください。

Kyverno

CNCF では、Kubernetes クラスターでポリシーを適用するための Kyverno オープンソース プロジェクトも後援しています。 Kyverno は、ポリシーを使用して Kubernetes リソースの構成を検証、変更、生成できる Kubernetes ネイティブ ポリシー エンジンです。

Kyverno を使用すると、新しい言語を使用せずに Kubernetes リソースとしてポリシーを定義および管理できます。 この方法では、kubectlgitkustomize などの使い慣れたツールを使用してポリシーを管理できます。

Kyverno では、検証に kustomize スタイルのオーバーレイを使用し、変更用の戦略的マージ パッチと JSON パッチをサポートし、柔軟なトリガーに基づいて名前空間でリソースを複製できます。 YAML マニフェストを使用してポリシーを個別にデプロイすることも、Helm チャートを使用してパッケージ化してデプロイすることもできます。

Kyverno は、AKS の Gatekeeper や Azure Policy とは異なり、既存のリソースを検証または変更するだけでなく、ポリシーを使用して新しい Kubernetes オブジェクトを生成できます。 たとえば、Kyverno ポリシーを定義して、新しい名前空間の既定のネットワーク ポリシーの作成を自動化できます。

詳細については、公式の Kyverno インストール ガイドを参照してください。 すぐに使用可能、またはカスタマイズ可能なポリシーのリストについては、Kyverno ポリシー ライブラリを参照してください。 トラブルシューティングのリファレンス (例: Webhook 呼び出しに失敗した APIServer) については、「Kyverno トラブルシューティング ドキュメント」を参照してください。

必要に応じて、Kubernetes のポッド セキュリティ標準 (PSS) の Kyverno の実装を Kyverno ポリシーとしてデプロイできます。 PSS コントロールは、一般的な Kubernetes クラスター運用セキュリティの開始点となります。

AKS 用の Azure Policy アドオン

AKS 用Azure Policy アドオンは、Gatekeeper を拡張して、一元的な貫性のある方法で AKS クラスターに大規模な実施と保護を適用します。 Azure Policy を使用すると、1 つの場所から複数の Kubernetes クラスターのコンプライアンス管理とレポートを一元化できます。 この機能により、マルチクラスター環境の管理とガバナンスが、クラスターごとに Kyverno または Gatekeeper をデプロイして管理するよりも効率的になります。

AKS 用 Azure Policy アドオンでは、次の機能が実行されます。

  • Azure Policy サービスを使用してクラスターへのポリシー割り当てをチェックします。
  • ポリシーを定義を制約テンプレートおよび制約カスタム リソースとしてクラスターにデプロイします。
  • 監査およびコンプライアンスの詳細を Azure Policy サービスに報告します。

Azure Policy アドオンでは、AKSAzure Arc 対応 Kubernetes クラスター環境がサポートされています。 詳細については、「Kubernetes 用の Azure Policy について理解する」を参照してください。 新規および既存のクラスターにアドオンをインストールするには、「AKS 用の Azure Policy アドオンをインストールする」を参照してください。

AKS 用の Azure Policy アドオンをインストールしたら、個々のポリシー定義またはイニシアチブと呼ばれるポリシー定義のグループを AKS クラスターに適用できます。 Azure Policy の組み込みのポリシーとイニシアティブ定義を最初から適用して実施することも、独自のカスタム ポリシー定義を作成して割り当てることもできます。 Azure Policy の組み込みのセキュリティ ポリシーは、AKS クラスターのセキュリティ体制の改善、組織の標準の適用、大規模なコンプライアンスの評価に役立ちます。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

その他の共同作成者:

  • Chad Kittel | プリンシパル ソフトウェア エンジニア
  • Ed Price | シニア コンテンツ プログラム マネージャー
  • Theano Petersen | テクニカル ライター

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ