Kubernetes 默认允许所有 Pod 之间自由通信,形成扁平化攻击面。NetworkPolicy 通过标签选择器定义入站/出站白名单,由 CNI 插件(如 Calico、Cilium)在数据平面落地为 iptables 或 eBPF 规则实现微隔离。
一、默认拒绝 + 白名单放行策略
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: prod
spec:
podSelector: {}
policyTypes: ["Ingress", "Egress"]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend-to-api
namespace: prod
spec:
podSelector:
matchLabels:
app: api
policyTypes: ["Ingress"]
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080