Google CloudがClusterNetworkPolicyの構成例を紹介

Google CloudがClusterNetworkPolicyの構成例を紹介、プレビュー版で3層の通信制御が可能

公開:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

GKEでプレビュー段階のClusterNetworkPolicy(CNP)を使うと、きめ細かなネットワークポリシーをNamespace単位ではなくクラスタ全体に適用できます。CNPにより、セキュリティとガバナンスのポリシーを容易に拡張でき、通信は優先順位付きの3層で評価されます。[1][2]

この記事で扱うのは、GKEのClusterNetworkPolicy(プレビュー、アルファ版レベル)の3層の仕組みと、LLMとクラスタへの通信を制御する構成例です。あわせて、利用前に確認する条件と層の選び方を整理します。

目次
  1. ClusterNetworkPolicy(プレビュー)の3層評価
  2. ClusterNetworkPolicy(プレビュー)の構成例
  3. ClusterNetworkPolicyの利用条件
  4. プレビュー版CNPの層の選び方

ClusterNetworkPolicy(プレビュー)の3層評価

GKEのClusterNetworkPolicy(プレビュー、アルファ版レベル)は、Admin層、NetworkPolicy層、Baseline層の順に通信を評価します。Admin層やBaseline層のルールで許可か拒否に一致すると、その時点で評価が止まる仕組みです。[1][2]

GKEのCNPの層ごとの判定(プレビュー)

図1 GKEのCNPの層ごとの判定(プレビュー)

このプレビュー版では、最上位のAdmin層に、メタデータへのアクセスの遮断のように、バイパスできない必須のセキュリティルールをクラスタ管理者が置きます。最下位のBaseline層は、Namespace間の既定拒否のように、クラスタ管理者がフォールバックの既定を置く層です。

中位のNetworkPolicy層は、アプリチームが管理する標準のNamespaceスコープのポリシーで、マイクロサービスの入出力を制御します。プレビュー版では、どの層にも一致しない通信はGKEの既定の動作として暗黙的に許可されます。

ルールの3つの動作(プレビュー、アルファ版レベル)

図2 ルールの3つの動作(プレビュー、アルファ版レベル)

Passは、包括的な管理を手放さずに、特定の通信の判断を標準のNamespaceレベルのポリシーへ委ねる動作です。層の中では0~1000の優先度でポリシーを評価し、数値が小さいほど優先されます。

ClusterNetworkPolicy(プレビュー)の構成例

GKEのClusterNetworkPolicy(プレビュー、アルファ版レベル)のマニフェストは、kubectl apply -fでクラスタへ適用します。構成例はCodelab「Secure AI Inference Workloads with GKE ClusterNetworkPolicy」で試せます。[1][2]

構成例で各層に置くポリシー(プレビュー)

図3 構成例で各層に置くポリシー(プレビュー)

プレビューの構成例の目的は、LLMのNamespaceへの通信を許可済みクライアントだけに絞ることです。あわせて、DNSの53番ポートを除き、メタデータAPIへのクラスタ全体からのアクセスを防ぎます。

Kubernetesでは既定で、Namespace間の通信と外向きの通信がすべて開いています。構成例は多層防御のため、GKEの評価層ごとにネットワークポリシーを適用する構成です。

Codelabの検証環境の構成

プレビューの構成例では、軽量オープンモデルのGemma 4(google/gemma-4-E2B-it)をvLLMで動かし、機密性の高いAIワークロードに見立てます。3つのNamespaceでPodを分け、client-nsではモデルに問い合わせる許可済みのチャットクライアントを動かします。

構成例の3つのNamespace(プレビュー)

図4 構成例の3つのNamespace(プレビュー)

検証環境は、多層のネットワークポリシーを適用するGKE Dataplane V2(ADVANCED_DATAPATH)を使うGKE Standardクラスタです。TPU v5eのノードプールはct5lp-hightpu-4tの2x2構成で、taintによりアクセラレータのワークロードだけを動かします。

構成例のCloud Logging / GKE Network Policy Loggingは、許可と拒否のパケット判定をリアルタイムに捉えます。ポリシーの監査証跡も得る機能です。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

Baseline層での未許可入力の拒否

プレビューの構成例では最初に、クラスタ管理者がフォールバックの安全網としてBaseline層にClusterNetworkPolicyを置きます。このポリシーの2つ目のルールが受信するPod間の接続を破棄し、client-nsとuntrusted-tenantのどちらもGemmaへ接続できない状態です。

Baseline層に置く拒否ルール(プレビュー)

図5 Baseline層に置く拒否ルール(プレビュー)

全Namespaceを対象にするBaseline層のマニフェスト(v1alpha2)は、次の通りです。

apiVersion: policy.networking.k8s.io/v1alpha2
kind: ClusterNetworkPolicy
metadata:
  name: baseline-default-deny
spec:
  tier: Baseline
  priority: 1000
  subject:
    namespaces: {}
  ingress:
    - name: allow-dns-ingress
      action: Accept
      from:
        - namespaces: {}
      protocols:
        - udp:
            destinationPort:
              number: 53
        - tcp:
            destinationPort:
              number: 53
    - name: baseline-deny-cross-ns
      action: Deny
      from:
        - namespaces: {}

公式資料からの抜粋:Experimenting with ClusterNetworkPolicy in GKE(Securing the LLM and metadata: Code walkthrough / Step 1: Establish zero-trust posture (baseline tier))。対象版・範囲:GKEのClusterNetworkPolicy(プレビュー、policy.networking.k8s.io/v1alpha2)の構成例。

上記のコードでは、priority: 1000でBaseline層の中の順序を決めています。allow-dns-ingressでUDPとTCPの宛先53番ポートへの入力を受け入れ、残りのPod間の入力はDenyで拒否する構成です。

tier: Baselineのポリシーは評価の最後に置かれ、上の層で一致しなかった通信だけを扱います。53番ポートの例外がないと、クラスタ全体の名前解決が失敗します。

NetworkPolicy層の許可

プレビューの構成例では、Baselineの既定拒否が有効な状態で、gemma-llmを管理するアプリチームが正当なクライアントへアクセスを委任します。標準NetworkPolicyは、client-nsのapp: rag-agent PodからのTCP 8000番の入力だけを許可します。

接続元ごとの判定(プレビュー)

図6 接続元ごとの判定(プレビュー)

標準NetworkPolicyはgemma-llm Namespaceに置かれ、対象はapp: gemma-serviceのラベルを持つPodです。標準のNetworkPolicyが対応するNetworkPolicy層は、Baseline層より先に評価されます。

Admin層の外向きガードレール

構成例(プレビュー)の前提として、GKEのPodは既定で、リンクローカルのCompute Engineメタデータサーバー(169.254.169.254)に問い合わせできます。この問い合わせにより、インスタンスのメタデータや高い権限を持つ可能性があるサービスアカウントのトークンが露出します。

構成例のPodとメタデータサーバー(プレビュー)

図7 構成例のPodとメタデータサーバー(プレビュー)

プレビューの構成例では、クラスタ管理者が置くガードレールの層は、最初に評価されるAdmin層です。priority: 10で層の中の順序を決め、subject.namespaces: {}でクラスタ内の全Namespaceを対象にしています。

Admin層の外向きガードレール(プレビュー)

図8 Admin層の外向きガードレール(プレビュー)


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

Admin層のルールごとの動作

delegate-all-ingressとdelegate-other-egressのルールは、action: Passで残りのクラスタ内の通信の評価を次の層へ渡します。DNS以外のポートで169.254.169.254/32へ問い合わせるとAdmin層で破棄され、開発者が外向きをすべて許可するポリシーを置いても回避できません。

構成例のAdmin層のルール(プレビュー)

図9 構成例のAdmin層のルール(プレビュー)

allow-all-dnsのルールは、0.0.0.0/0宛てのUDPとTCPの53番ポートを受け入れます。この許可により、PodはDNSによる名前解決ができます。

ポリシー判定の確認手段

Google Cloudブログの投稿者は、GKE Dataplane V2に組み込まれたテレメトリ機能で、ポリシーの検証と監査は容易だとしています。Hubbleのストリームでは、管理者がサイドカーなしでフローとポリシーの判定をリアルタイムに観察できます。

ポリシーの調整状態と判定の確認手段(プレビュー)

図10 ポリシーの調整状態と判定の確認手段(プレビュー)

GKE Network LoggingとCloud Loggingは、構造化された接続のテレメトリとポリシーの適用判定をCloud Loggingへ自動で書き出す仕組みです。判定はdisposition="deny"などの属性で、絞り込みやアラートに使えます。

ClusterNetworkPolicyの状態は、kubectlで確かめられます。一覧表示のコマンドは次の通りです。

kubectl get clusternetworkpolicies

公式資料からの抜粋:クラスタ ネットワーク ポリシーを構成する(トラブルシューティング)。対象版・範囲:GKEのClusterNetworkPolicy(プレビュー、アルファ版レベル)。

上記のコマンドは、クラスタ内のプレビュー(アルファ版レベル)のClusterNetworkPolicyを一覧表示します。kubectl describeでは、status.conditionsで調整の成否が分かります。

ClusterNetworkPolicyの利用条件

ClusterNetworkPolicy APIはプレビュー版であり、APIのレベルとしてはアルファ版に当たります。利用には、バージョン1.36.0-gke.4447000以降のGKEクラスタと、GKE Dataplane V2の使用が前提です。[2]

利用前に確かめる条件(プレビュー)

図11 利用前に確かめる条件(プレビュー)

ClusterNetworkPolicyは一般提供前のサービス規約の対象で、pre-GAの機能は「現状のまま」提供され、サポートが制限される場合があります。CustomResourceDefinitionは、今後のバージョンで変更される可能性がある状態です。

Google Cloudブログの投稿者は、GKEでプレビューのClusterNetworkPolicyは役立つ場合があるとしています。本番環境で使う場合は、構成に合わせてルールを計画し、設計する必要があるという見解です。[1][2]

プレビュー版CNPの層の選び方

GKEのClusterNetworkPolicy(プレビュー)では、ルールを置く層によって、Namespace側のポリシーで上書きできるかが変わります。編集部は、上書きの可否と管理する担当を、層を選ぶ目安として整理しました。[1][2][3]

GKEのCNPの3つの層(プレビュー)

図12 GKEのCNPの3つの層(プレビュー)

GKEのClusterNetworkPolicy(プレビュー)では、開発者のポリシーで回避されてはならないルールはAdmin層に置くのが目安です。機密性の高いNamespaceの分離やkube-dnsへのグローバル許可、メタデータサーバーへのアクセス遮断が該当します。

出典

  1. ^ Google Cloud. 「Experimenting with ClusterNetworkPolicy in GKE」. https://cloud.google.com/blog/topics/developers-practitioners/experimenting-with-clusternetworkpolicy-in-gke, (参照 26-11-10).
  2. ^ Google Cloud. 「クラスタ ネットワーク ポリシーを構成する」. https://docs.cloud.google.com/kubernetes-engine/docs/how-to/configure-cluster-network-policy?hl=ja, (参照 26-11-11).
  3. ^ Google Cloud. 「ClusterNetworkPolicy in GKE: Balancing control and autonomy for your microservices」. https://cloud.google.com/blog/products/networking/new-clusternetworkpolicy-in-gke?hl=en, (参照 26-11-11).

※本記事は公式の一次情報を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合は、以下フォームよりご報告ください。

修正・削除・掲載などの依頼はこちら
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

What's New

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する