3. 容器网络运维准入策略概述:Kubernetes网络策略、CNI插件、准入控制器基础

容器网络运维准入策略是保障集群网络安全的第一道防线。在云原生环境中,网络流量不再依赖传统的物理边界,而是通过软件定义的网络模型进行隔离与控制。本章将系统梳理Kubernetes网络策略(NetworkPolicy)、CNI插件以及准入控制器(Admission Controller)三大核心组件,为后续的Sigstore策略评审奠定基础。

3.1 Kubernetes网络策略(NetworkPolicy)

NetworkPolicy是Kubernetes原生的网络隔离机制,通过标签选择器定义Pod之间的通信规则。它工作在OSI模型的第3/4层(IP+端口),默认情况下集群内所有Pod可以互相通信,一旦应用了NetworkPolicy,未显式允许的流量将被拒绝。

策略字段 作用 示例值
podSelector 选择策略生效的目标Pod app: frontend
policyTypes 指定策略类型(Ingress/Egress) ["Ingress"]
ingress 定义入站流量规则 from: [ipBlock: ...]
egress 定义出站流量规则 to: [namespaceSelector: ...]
关键认知:NetworkPolicy本身不执行流量过滤,它只是声明式规则。真正的执行由CNI插件中的网络策略控制器完成。如果CNI不支持NetworkPolicy,策略将形同虚设。

3.2 CNI插件:网络策略的执行引擎

容器网络接口(CNI)插件负责为Pod分配IP地址、配置网络接口,并实现NetworkPolicy的强制访问控制。不同CNI插件对NetworkPolicy的支持程度和实现方式存在显著差异,直接影响准入策略的评审范围。

CNI插件 NetworkPolicy支持 策略执行机制 运维准入关注点
Calico 完整支持 iptables / eBPF + Felix 全局网络策略、主机端点、策略优先级
Cilium 完整支持 + L7扩展 eBPF + Envoy Hubble可观测性、身份标识、DNS策略
Flannel 不支持 VXLAN / host-gw 需额外部署网络策略控制器(如Calico)
Weave Net 部分支持 Fast Datapath + iptables 策略性能、大规模集群稳定性
运维建议:在评审容器网络准入策略时,必须首先确认集群使用的CNI插件及其版本。例如,Cilium 1.13+支持基于Kubernetes ServiceAccount的身份策略,这为Sigstore签名验证提供了更细粒度的网络控制维度。

3.3 准入控制器(Admission Controller)

准入控制器是Kubernetes API Server的拦截插件,在对象被持久化到etcd之前执行验证和变更操作。对于容器网络运维准入,准入控制器可以在Pod创建或更新时动态注入网络策略、校验CNI配置,甚至阻断不符合安全基线的网络请求。

准入控制器分为两类:

  • 变更准入控制器(Mutating Admission Controller):修改请求对象,例如自动为Pod注入sidecar代理或网络策略注解。
  • 验证准入控制器(Validating Admission Controller):拒绝不符合规则的请求,例如检查Pod是否绑定了允许的NetworkPolicy。
安全风险提示:如果攻击者能够绕过或篡改准入控制器(例如通过修改ValidatingWebhookConfiguration资源),则可能部署未授权网络策略的Pod,导致容器网络隔离失效。Sigstore的签名验证可以确保准入控制器的配置变更来自可信来源。

3.4 三者的协同关系

下图展示了容器网络运维准入策略中,NetworkPolicy、CNI插件与准入控制器之间的协作流程:

容器网络运维准入策略协同架构 容器网络运维准入策略协同架构 管理员 / CI/CD Kubernetes API Server 准入控制器 (验证/变更网络策略配置) etcd(持久化) CNI插件(Calico/Cilium) (执行NetworkPolicy规则) 策略变更风险点 1. 准入控制器配置篡改 2. NetworkPolicy未签名 3. CNI插件版本不匹配

3.5 准入策略评审的关键维度

在进行容器网络运维准入策略评审时,需要从以下四个维度进行系统性检查:

  1. 策略完整性:是否所有命名空间都定义了默认拒绝策略?是否存在未受保护的Pod?
  2. CNI兼容性:当前CNI插件是否支持所有定义的NetworkPolicy规则?eBPF模式下的策略是否与iptables模式一致?
  3. 准入控制器配置:ValidatingWebhookConfiguration是否启用了TLS?是否对变更操作进行了审计日志记录?
  4. 变更权限控制:谁有权修改NetworkPolicy和准入控制器配置?是否使用了RBAC最小权限原则?
Sigstore集成点:在准入控制器中集成Sigstore验证,可以确保所有NetworkPolicy的创建和更新操作都经过签名验证。例如,使用Cosign对NetworkPolicy YAML文件进行签名,然后在ValidatingAdmissionPolicy中验证签名,从而防止未授权的网络策略变更。

下表总结了三种核心组件在准入策略评审中的角色差异:

组件 声明层 执行层 安全控制点
NetworkPolicy Kubernetes API资源 CNI插件 策略定义完整性、标签选择器准确性
CNI插件 DaemonSet / 系统服务 内核网络栈 插件版本、配置一致性、eBPF程序完整性
准入控制器 Webhook配置 API Server请求拦截 Webhook证书、签名验证、变更审计