プロファイル適用性: レベル2
ネットワークポリシーを使用してクラスターネットワーク内のトラフィックを分離します。
同じKubernetesクラスターで異なるアプリケーションを実行すると、侵害されたアプリケーションが隣接するアプリケーションを攻撃するリスクが生じます。ネットワークセグメンテーションは、コンテナが通信すべき相手とだけ通信できるようにするために重要です。ネットワークポリシーは、ポッドの選択が互いにおよび他のネットワークエンドポイントとどのように通信することを許可されているかの仕様です。
ネットワークポリシーはネームスペースにスコープされています。特定のネームスペースにネットワークポリシーが導入されると、そのポリシーで許可されていないすべてのトラフィックが拒否されます。しかし、ネームスペースにネットワークポリシーが存在しない場合、そのネームスペース内のポッドへの出入りのすべてのトラフィックが許可されます。
注意デフォルトでは、ネットワークポリシーは作成されません。
|
影響
指定されたネームスペース内でネットワークポリシーが使用されると、ネットワークポリシーで明示的に許可されていないトラフィックは拒否されます。そのため、ネットワークポリシーを導入する際には、正当なトラフィックがブロックされないようにすることが重要です。
監査
以下のコマンドを実行し、クラスター内で作成された
NetworkPolicyオブジェクトを確認してください。1つ以上のネットワークポリシーが設定されているネームスペースを表示するCommand Lineステートメント:
kubectl get ns -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | while read ns; do count=$(kubectl get networkpolicy -n "$ns" --no-headers 2>/dev/null | wc -l | tr -d ' ') if [ "$count" -gt 0 ]; then echo -e "${ns}\t${count}" fi done
0個のネットワークポリシーが設定されている名前空間を表示するCommand Lineステートメント:
for ns in $(kubectl get ns -o jsonpath='{.items[*].metadata.name}'); do count=$(kubectl get networkpolicy -n "$ns" --no-headers 2>/dev/null | wc -l | tr -d ' ') if [ "$count" -eq 0 ]; then echo -e "${ns}\t${count}" fi done
修復
ドキュメントに従って必要に応じて
NetworkPolicyオブジェクトを作成してください。詳細については、GKEドキュメントを参照してください。
