このページでは、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 とサブネットを使用してネットワークをセグメント化することで、セキュリティと組織を強化する方法も示しています。
- ターゲット ネットワーク ポリシーでトラフィックを分離する: アノテーション
networking.gke.io/network: blue-Pod-network
により、青色の Pod ネットワークのトラフィックに対してのみ、ネットワーク ポリシーが影響します。デフォルトの Pod ネットワーク上のトラフィックは制限されません。 - Pod ネットワーク ポリシーで一方向のトラフィックを適用する: 上の図では、ネットワーク ポリシーにより、Pod1 は青色の Pod のネットワークの Pod2 にトラフィックを送信できます。Pod2 は、同じネットワーク上の Pod1 にトラフィックを送信できません。test-app-2 というラベルが付いた Pod のネットワーク ポリシーは、一方向チャネルとして機能します。特に、ラベルが test-app-3 の Pod へのアウトバウンド トラフィックのみを許可し、test-app-1 など、他の Pod との通信をブロックします。
- デフォルトで送信トラフィックを許可する: Pod(この例では Pod1)に下り(外向き)ポリシーが定義されていない場合、デフォルトでは青色のネットワーク インターフェースですべての送信トラフィックが許可されます。
- 既存の機能との互換性を維持: ラベルセレクタや IP アドレス ブロックなど、標準の GKE ネットワーク ポリシーのオプションはすべて、マルチネットワーク ネットワーク ポリシーで機能します。
- アノテーションを使用してネットワーク ポリシーのスコープを制御する:
- アノテーションなしでネットワーク ポリシーを作成すると、GKE は、どの Pod ネットワークに接続されているかに関係なく、選択した Namespace 内の Pod のすべてのネットワーク インターフェースにマルチネットワーク ネットワーク ポリシーを適用します。
- アノテーションを使用して有効な Pod ネットワークの名前(
networking.gke.io/network: blue-Pod-network
など)を指定すると、GKE はその Pod ネットワークに接続されている Pod にポリシーを適用します。 - アノテーションが、クラスタ内に存在しない Pod ネットワークを参照している場合、GKE はネットワーク ポリシーを Pod に適用しません。これは、指定されたネットワークが存在せず、このネットワークにはどの Pod も接続していないためです。
- 複数のネットワーク インターフェースを持つ Pod のネットワーク間通信を維持する: ネットワーク ポリシーを適用して Pod 内の特定の Pod ネットワークでトラフィックを制限しても、同じ Pod に接続されている他の Pod ネットワークのトラフィックに影響はありません。
利点
マルチネットワーク ネットワーク ポリシーを使用すると、次のようなメリットがあります。
セキュリティの強化: ネットワーク ポリシーをきめ細かいレベルで適用することで、GKE クラスタ内の不正アクセスとラテラル ムーブメントに関連するリスクを軽減できます。
柔軟性とカスタマイズ: さまざまなワークロードとアプリケーションに対応することで、Pod ネットワークごとにセキュリティとトラフィック管理のニーズを満たすように、ネットワーク ポリシーをカスタマイズできます。
ネットワーク管理の簡素化: ネットワーク ポリシーを使用すると、過剰な Pod ネットワークの作成を回避し、通信をきめ細かく制御できるため、ネットワーク管理が簡素化され、複雑さが軽減されます。
費用の最適化: 多数の Pod ネットワークを作成する必要がないため、リソース使用率を最適化し、ネットワーク インフラストラクチャに関連する費用を削減できます。
CNF の保護強化: 管理プレーンとデータプレーンのトラフィックを分離し、各デプロイに特定のネットワーク ポリシーを適用することで、CNF デプロイのセキュリティと整合性を確保できます。
次のステップ
Pod レベルで Pod と Service 間のトラフィック フローを制御する