【ネットワークポリシー】
Network Policy とは?
最終更新:
💡 Podの送信側と受信側で、必要な通信を許可する
KubernetesでPodの受信・送信を制限するNetworkPolicy。対応するネットワークプラグインが必要な理由、IngressとEgress、複数ルールの足し合わせ、通信を許可する条件を解説します。
📌 このページのポイント
- Podのラベルなどで対象を選び、主にIP・ポート単位で通信を制御する
- IngressとEgressの制限は独立し、片方だけの設定では両方を制限しない
- 複数のポリシーの許可範囲は足し合わせる。記述順の優先順位はない
- ポリシーを実際に適用するネットワークプラグインが必要
KubernetesのPod同士は、自由に通信できるの?
何を手掛かりに、通信を許可するの?
Ingressを設定すれば、外に出る通信も止まる?
受信のIngressと送信のEgressは独立しているよ。ある方向の制限を受けるPodは、その方向について適用されるポリシーで許可された通信が可能になる。受信だけを制限しても、送信まで同じように制限されるわけではないんだ。
後に書いたルールが、前のルールを上書きする?
そのような順序はないよ。適用される複数のポリシーの許可範囲を足し合わせる。Pod間の接続では、送信側のEgressと受信側のIngressの両方で許される必要がある。許可された接続の返答は、暗黙に許可されるんだ。
設定ファイルを置いたら、すぐ安全になる?
もっと詳しく知りたい人へ
通信を許可すれば、暗号化やログインもできる?
標準のNetworkPolicyは、TLSの暗号化やアプリの認証、HTTPのパスごとの許可を設定するものではありません。必要に応じてアプリ、Ingressコントローラー、サービスメッシュなど別の仕組みを組み合わせます。ネットワークの到達可否と、通信内容の保護や利用者の権限は別に確認します。
「すべて拒否」にすれば、本当にすべてのパケットを遮断できる?
NetworkPolicyの仕様には、Pod自身への通信やPodを実行するノードとの通信などに関する例外があります。またhostNetworkやアドレス変換、既存の接続の扱いは実装による点もあります。名前だけで全面遮断を保証すると考えず、利用するプラグインの仕様と実際の通信を確認します。
まとめ:ざっくりこれだけ覚えればOK!
「NetworkPolicy」って出てきたら「KubernetesでPodの受信・送信を制御する設定」と思えばだいたいOK!対応するネットワークプラグインが必要だよ。
📖 おまけ:英語の意味
「NetworkPolicy」 = ネットワークの方針
💬 Kubernetes APIのリソース名です。ここでのIngressは受信方向を指し、HTTPなどを外部から公開するIngressリソースとは役割が異なります。