概述
Pod 间可自由通信意味着一个被攻陷的 Pod 即可扫达跨集群的数据库与内部服务。默认拒绝加按需放行把东西向流量收敛到显式声明的依赖上,前提是 CNI 真正强制执行策略。
关键步骤
- 在每个命名空间创建入站与出站的默认拒绝策略。
- 为 DNS 出站与具体服务依赖添加放行规则。
- 仅从已知来源放行实际使用的端口。
- 用应被拒绝的 Pod 发起连接测试以验证。
验证
- 未显式允许的流量被阻断。
- 工作负载能解析 DNS 并访问其依赖。
- 健康检查与入口控制器可正常访问。
- 测试 Pod 连接被拒绝。
注意事项
- NetworkPolicy 依赖 CNI 执行;某些 CNI 忽略策略,会造成虚假安全感。
- 策略按命名空间与标签生效,标签配错可能意外放行或阻断流量。
适用范围
本条目围绕「施加默认拒绝的网络策略」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: { name: default-deny, namespace: prod }
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
# no ingress/egress rules => deny all