🎯 レッスンの目的
ポッドの内外のトラフィックを制御するための NetworkPolicy を理解します。デフォルトの拒否パターンを実装し、特定のトラフィックを許可し、L7 制御に Cilium ネットワーク ポリシーを使用します。
1. NetworkPolicy が必要な理由
デフォルトでは、Kubernetes はクラスター内のすべてのポッド間のすべてのトラフィックを許可します。すべてのポッドが他のすべてのポッドを呼び出すことができます。これは重大なセキュリティ リスクです。
NetworkPolicy を使用すると、__HTMLTAG_74___ホワイトリスト ルール: 明示的に許可されたトラフィックのみが通過します。
重要: NetworkPolicy は、CNI プラグインがサポートしている場合にのみ機能します (Cilium、Calico、Weave)。 Flannel は NetworkPolicy をサポートしていません。
2.ネットワーク ポリシーの構造
___コードブロック_0___3.デフォルトの拒否パターン — ベスト プラクティス
「すべて拒否」から始めて、必要なトラフィック ストリームをそれぞれ開きます。
3.1 デフォルトですべての進入を拒否
___コードブロック_1___3.2 デフォルトですべての下りを拒否
___コードブロック_2___3.3 DNS を許可する (下りを拒否する場合に重要)
___コードブロック_3___4.特定のトラフィック パターンを許可
フロントエンド → バックエンド
___コードブロック_4___クロス名前空間: 他の名前空間から許可__HTMLTAG_98___ ___コードブロック_5___
組み合わせ: ポッド セレクターと名前空間セレクター__HTMLTAG_100___ ___コードブロック_6___
5. Cilium ネットワーク ポリシー — L7
_標準の Kubernetes ネットワーク ポリシーは、L3/L4 (IP、ポート) のみを制御します。 Cilium CiliumNetworkPolicy により、L7 制御が可能になります。
5.1 HTTP メソッドとパス
___コードブロック_7___5.2 DNS ベースのポリシー
___コードブロック_8___6.ネットワーク ポリシーの確認とデバッグ
___コードブロック_9___7.ベスト プラクティス
- default-deny から開始: すべての実稼働名前空間に適用
- 最低権限: 絶対に必要なトラフィックのみを開く
- ラベルの一貫性: NetworkPolicy はラベル セレクターに依存します — ラベルを一貫して設定します
- _運用環境に適用する前のテスト: ハッブル監査モードを使用して、どのトラフィックがブロックされるかを確認します
- ポリシーを文書化: 各ポリシーが作成された理由を説明
概要
- NetworkPolicy: ポッド トラフィックのホワイトリスト ルール
- デフォルトの拒否パターン: すべてブロック → 特定を許可
- セレクター: podSelector、namespaceSelector (項目内の AND ロジック、項目間の OR ロジック)
- Cilium CiliumNetworkPolicy: L7 HTTP、DNS ベースのポリシー
- CNI サポートが必要: Cilium、Calico (Flannel ではない)