すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Kyverno を使用したポリシーガバナンス

最終更新日:Dec 25, 2025

Kyverno は、Kubernetes ネイティブに設計されたポリシーエンジンであり、Policy-as-Code アプローチを使用してセキュリティ、コンプライアンス、および自動化ポリシーを管理できます。Container Service for Kubernetes (ACK) のデフォルトのポリシーエンジンである Open Policy Agent (OPA) Gatekeeper の代替として、Kyverno を使用すると、標準の YAML を使用してポリシーを定義でき、Rego のような専門言語を学習する必要がなくなります。また、アドミッションコントロールプロセス中にリソースのミューテーションと生成をサポートしているため、高度にカスタマイズされたポリシー、O&M の自動化、またはマルチクラスターポリシーガバナンスを必要とするシナリオに最適です。

仕組み

Kyverno は、Kubernetes クラスター内で動的アドミッションコントローラーとして実行されます。API サーバーからのアドミッション Webhook リクエストをインターセプトし、検証またはミューテーション操作を実行した後、リクエストを許可または拒否する決定を返します。

次の図は、Kyverno がアドミッション Webhook を使用して、API サーバーのアドミッションフェーズ中にポリシーを検証し、リソースをミューテーションする仕組みを示しています。

image

ユースケース

デフォルトの ACK セキュリティポリシー管理機能は OPA Gatekeeper 上に構築されています。一般的なコンプライアンスおよび O&M のユースケースに対応するコンテナセキュリティポリシーライブラリが組み込まれており、一般的な監査および適用のニーズを満たします。また、複数のポリシーインスタンスのデプロイをサポートし、Simple Log Service (SLS) と統合して可観測性を向上させます。

Kyverno は Kubernetes ネイティブのポリシーエンジンです。標準の CustomResourceDefinition (CRD) を使用してポリシーを定義および管理し、シンプルでユーザーフレンドリなエクスペリエンスを提供します。その主な利点は次のとおりです:

  • YAML ベースのポリシー:ポリシーは標準の YAML で記述され、他の Kubernetes マニフェストと一貫性があります。これにより、Rego のような専門言語を学習する必要がなくなり、学習のハードルが下がります。

  • 豊富な機能セット:Kyverno はネイティブで validatemutategenerate 操作をサポートしています。これにより、より広範な自動化および Policy-as-Code のユースケースをカバーします。

  • 既存リソースのスキャン:アドミッション時にポリシーを適用することに加えて、Kyverno はクラスター内の既存リソースの設定をスキャン、レポート、ミューテーション、生成することもできます。

  • リソースの自動生成:ポリシーは、NetworkPolicyConfigMap などの関連リソースを自動的に作成し、自動化された構成を可能にします。

Kubernetes は現在、ネイティブの ValidatingAdmissionPolicy および MutatingAdmissionPolicy を提供していますが、Kyverno はより包括的でエンタープライズレベルのポリシーガバナンス機能を提供します。

推奨されるユースケース:

  • カスタムポリシー:ご利用の CRD 用のポリシーを迅速に記述し、デプロイします。

  • ミューテーションおよび生成ポリシーmutate または generate ポリシーを使用する必要がある場合。

    Kyverno は、包括的なキャッシュ、外部データ統合、およびレポートメカニズムを備えています。その拡張された Common Expression Language (CEL) 構文ライブラリは、特定のエンタープライズシナリオにおける高度な Policy-as-Code のニーズを満たすことができます。
  • マルチクラスターポリシーガバナンス:Kyverno CLI、API、または ArgoCD などの GitOps ツールとの統合を使用して、複数のクラスターにわたる統一されたポリシーの配布と管理を実現します。

前提条件

Kubernetes バージョン 1.30 以降を実行している ACK マネージドクラスターまたは ACK 専用クラスターが必要です。必要に応じて、クラスターをアップグレードしてください。

重要

Kyverno は、Kubernetes コミュニティの N-2 バージョンスキューポリシーに従い、現在のリリースと過去 2 つのマイナーリリースを公式にサポートしています。N-2 より古いバージョンは完全にはテストされておらず、互換性は保証されていません。詳細な内訳については、公式の Kyverno 互換性マトリックスをご参照ください。

Kyverno のインストール

  1. クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  2. [デプロイ] をクリックし、画面の指示に従って kyverno を検索して選択します。最新のチャートバージョンを選択し、必要に応じてパラメーターを設定し (「カスタムパラメーター」をご参照ください)、インストールを完了します。

ポリシータイプ

Kyverno バージョン 1.15 では、いくつかの新しいポリシータイプが導入されています。詳細については、「ポリシータイプ」をご参照ください。

ポリシータイプ

説明

ClusterPolicy

validatemutategenerate ルールをサポートする汎用的なポリシータイプです。

ValidatingPolicy (v1.15 で Alpha)

Kubernetes リソースまたはワークロードテンプレートを検証します。ネイティブの ValidatingAdmissionPolicy の機能を拡張し、より包括的なエンタープライズレベルの検証を提供します。

MutatingPolicy (v1.15 で Alpha)

Kubernetes リソースまたはワークロードテンプレートを変更します。ネイティブの MutatingAdmissionPolicy の機能を拡張し、より包括的なポリシーガバナンスを実現します。

GeneratingPolicy (v1.15 で Alpha)

CEL 式に基づいて、指定された Kubernetes リソースを生成および同期します。

DeletingPolicy (v1.15 で Alpha)

クラスターまたは名前空間レベルで指定されたリソースをクリーンアップします。

ImageValidatingPolicy (v1.15 で Alpha)

イメージ署名と証明を検証します。cosign/notary 署名チェック、ソフトウェア部品表 (SBOM) の検証などをサポートします。

本番環境への適用

  • 障害ポリシーの設定

    failurePolicy は、Kyverno への Webhook 呼び出しが失敗した場合に API サーバーがどのように動作するかを定義します。特定のセキュリティおよび O&M 要件に基づいてこのポリシーを設定してください。設定の詳細については、「セキュリティ vs. 運用性」をご参照ください。

    • フェイルオープン:Webhook が失敗した場合でも API リクエストの続行を許可します。これにより、クラスターの可用性は維持されますが、セキュリティリスクをもたらす可能性があります。

    • フェイルクローズ:Webhook が失敗した場合に API リクエストをブロックします。これにより、セキュリティは確保されますが、クラスターの運用が中断される可能性があります。

  • 高可用性と可観測性の設定

    • 高可用性デプロイメント:Kyverno を複数のレプリカで実行します。ポッドアンチアフィニティとトポロジースプレッド制約を組み合わせて、レプリカを異なるノードまたはアベイラビリティゾーンに分散させます。

    • リソース計画:Kyverno Pod のリソース requestslimits を明確に設定し、予測可能なパフォーマンスを確保します。

    • モニタリングとアラート:Managed Service for Prometheus でモニタリングを有効にし、Pod のステータス、リソース使用率、Webhook のレイテンシー、エラー率などの主要なメトリクスを追跡します。その後、これらのメトリクスに対するアラートを設定し、潜在的な問題について通知を受け取るようにします。

高可用性に関するその他の推奨事項については、「高可用性」をご参照ください。