マルチネットワーク ネットワーク ポリシーについて


このページでは、Pod レベルでファイアウォール ルールを使用して、Pod と Service 間のネットワーク トラフィック フローを制御する方法について説明します。

アプリケーションのネットワーク ポリシーは、Pod 間の通信トラフィック ルールを定義する際に役立ちます。ネットワーク ポリシーは、Pod がアプリケーション内や外部エンドポイントと通信する方法を制御します。ネットワーク ポリシーは、マルチネットワークが有効になっている Google Kubernetes Engine(GKE)Enterprise エディション クラスタの Pod ネットワークで有効にできます。ネットワーク ポリシーは、ユーザー指定の Pod ネットワークに対応する追加の Pod インターフェースに適用できます。

マルチネットワーク ネットワーク ポリシーを使用する理由

マルチネットワーク ネットワーク ポリシーは、次のシナリオで使用できます。

  • ネットワーク セキュリティの強化: 特定の Pod ネットワークのネットワーク ポリシーを定義して、機密性の高いワークロードやデータを分離して保護します。マルチネットワーク ネットワーク ポリシーは露出を制限し、攻撃対象領域を縮小します。

  • きめ細かいトラフィック制御: 異なる Pod ネットワーク上の Pod と Service 間のトラフィック フローを正確に制御し、複雑なネットワーク トポロジとセキュリティ要件を満たすことができます。

  • マルチテナント環境: 各テナントまたはアプリケーションに分離されたネットワークを作成して、各 Pod ネットワーク内のネットワーク アクセスを制御しながら、相互の通信が干渉しないようにします。

  • リソース使用率を最適化する: 特定の Pod ネットワークにネットワーク ポリシーを実装して、リソースを効率的に割り当て、アプリケーションの要件に基づいてトラフィックの優先度を設定し、パフォーマンスと信頼性を向上させます。

  • コンテナ化されたネットワーク機能(CNF)のセキュリティ: 同じ Pod 内の管理トラフィックをデータプレーン トラフィックから分離し、潜在的なセキュリティ侵害や不正アクセスを防ぎます。

マルチネットワーク ネットワーク ポリシーと Pod ネットワークとの連携

次の図は、アノテーションを使用して特定の Pod ネットワークに適用されるネットワーク ポリシーが、GKE クラスタ内の Pod 間のトラフィック フローを制御する方法を示しています。

マルチネットワーク ネットワーク ポリシーの仕組み

上の図は、Pod(コンテナ化されたアプリケーション)を実行する複数のワーカーノードと、ネットワーク インフラストラクチャを使用して同じノード内または異なるノード間で通信を行う方法を示しています。また、ネットワーク ポリシーを使用してトラフィック フローを制御し、VPC とサブネットを使用してネットワークをセグメント化することで、セキュリティと組織を強化する方法も示しています。

  1. ターゲット ネットワーク ポリシーでトラフィックを分離する: アノテーション networking.gke.io/network: blue-Pod-network により、青色の Pod ネットワークのトラフィックに対してのみ、ネットワーク ポリシーが影響します。デフォルトの Pod ネットワーク上のトラフィックは制限されません。
  2. Pod ネットワーク ポリシーで一方向のトラフィックを適用する: 上の図では、ネットワーク ポリシーにより、Pod1 は青色の Pod のネットワークの Pod2 にトラフィックを送信できます。Pod2 は、同じネットワーク上の Pod1 にトラフィックを送信できません。test-app-2 というラベルが付いた Pod のネットワーク ポリシーは、一方向チャネルとして機能します。特に、ラベルが test-app-3 の Pod へのアウトバウンド トラフィックのみを許可し、test-app-1 など、他の Pod との通信をブロックします。
  3. デフォルトで送信トラフィックを許可する: Pod(この例では Pod1)に下り(外向き)ポリシーが定義されていない場合、デフォルトでは青色のネットワーク インターフェースですべての送信トラフィックが許可されます。
  4. 既存の機能との互換性を維持: ラベルセレクタや IP アドレス ブロックなど、標準の GKE ネットワーク ポリシーのオプションはすべて、マルチネットワーク ネットワーク ポリシーで機能します。
  5. アノテーションを使用してネットワーク ポリシーのスコープを制御する:
    1. アノテーションなしでネットワーク ポリシーを作成すると、GKE は、どの Pod ネットワークに接続されているかに関係なく、選択した Namespace 内の Pod のすべてのネットワーク インターフェースにマルチネットワーク ネットワーク ポリシーを適用します。
    2. アノテーションを使用して有効な Pod ネットワークの名前(networking.gke.io/network: blue-Pod-network など)を指定すると、GKE はその Pod ネットワークに接続されている Pod にポリシーを適用します。
    3. アノテーションが、クラスタ内に存在しない Pod ネットワークを参照している場合、GKE はネットワーク ポリシーを Pod に適用しません。これは、指定されたネットワークが存在せず、このネットワークにはどの Pod も接続していないためです。
  6. 複数のネットワーク インターフェースを持つ Pod のネットワーク間通信を維持する: ネットワーク ポリシーを適用して Pod 内の特定の Pod ネットワークでトラフィックを制限しても、同じ Pod に接続されている他の Pod ネットワークのトラフィックに影響はありません。

利点

マルチネットワーク ネットワーク ポリシーを使用すると、次のようなメリットがあります。

  • セキュリティの強化: ネットワーク ポリシーをきめ細かいレベルで適用することで、GKE クラスタ内の不正アクセスとラテラル ムーブメントに関連するリスクを軽減できます。

  • 柔軟性とカスタマイズ: さまざまなワークロードとアプリケーションに対応することで、Pod ネットワークごとにセキュリティとトラフィック管理のニーズを満たすように、ネットワーク ポリシーをカスタマイズできます。

  • ネットワーク管理の簡素化: ネットワーク ポリシーを使用すると、過剰な Pod ネットワークの作成を回避し、通信をきめ細かく制御できるため、ネットワーク管理が簡素化され、複雑さが軽減されます。

  • 費用の最適化: 多数の Pod ネットワークを作成する必要がないため、リソース使用率を最適化し、ネットワーク インフラストラクチャに関連する費用を削減できます。

  • CNF の保護強化: 管理プレーンとデータプレーンのトラフィックを分離し、各デプロイに特定のネットワーク ポリシーを適用することで、CNF デプロイのセキュリティと整合性を確保できます。

次のステップ

Pod レベルで Pod と Service 間のトラフィック フローを制御する