k8s 网络策略详解--图文篇
一.K8s网络隐患
K8s 集群初始化后,主流网络插件(如 Flannel、Calico)默认是 “全通模式”,存在明显安全隐患。
- 所有命名空间的 Pod 可随意互访,没有访问边界,比如测试环境 Pod 能直接访问生产环境 Pod。
- 一旦某个 Pod 被入侵(如植入恶意程序),攻击者可快速横向渗透到其他 Pod,风险扩散极快。
为了防止以上风险,Network Policy 对象就产生了。
二.K8s网络策略(NetworkPolicy)
1. NetworkPolicy的作用
网络策略(Network policy)就是为 Pod 间通信设置精细化的访问控制规则,解决默认网络的安全隐患和管理问题。
比如,它能按业务需求定义 “谁能和谁通信”,减少攻击面。
- 环境隔离:限制开发 / 测试命名空间的 Pod,无法访问生产命名空间的 Pod,避免测试影响生产。
- 服务间权限:仅允许前端 Pod 访问后端 API Pod,禁止日志采集、监控等无关 Pod 直接访问后端。
- 外部访问控制:结合 Ingress 限制外部流量,仅能进入前端 Pod,无法直接触达内部核心服务。
因此,Network policy 能做到 “最小权限” 的安全隔离。
2. NetworkPolicy访问控制原理
如果你希望针对 TCP、UDP 和 SCTP 协议在 IP 地址或端口层面控制网络流量, 则你可以考虑为集群中特定应用使用 Kubernetes 网络策略(NetworkPolicy)。
与Pod通信的实体是通过如下三个标识符的组合来辩识的:
- 其它被允许的 Pod(例外:Pod 无法阻塞对自身的访问)
- 被允许的名字空间(namespace)