4. 容器网络模型与授权边界

在 Docker 编排环境中,网络模型直接决定了服务间通信的路径与可见性,进而构成授权测试的核心边界。本章从 Bridge 与 Overlay 网络原理出发,结合网络策略与微隔离机制,建立授权测试的网络视角。

4.1 Bridge 网络:单机通信与默认隔离

Bridge 网络是 Docker 默认的单机网络模式。每个容器通过 veth 对连接到 docker0 网桥,由 iptables 规则实现 NAT 和端口映射。

特性 说明
通信范围 同一宿主机上的容器可通过 IP 直接通信;跨宿主机需端口映射
隔离级别 默认仅隔离不同 Bridge 网络;同一 Bridge 内的容器默认互通
授权边界 以宿主机 IP + 端口为边界,容器 IP 对外不可见
性能特征 低延迟(无额外封装),适合本地服务间调用
授权测试要点: Bridge 模式下,授权测试应关注端口映射是否暴露了内部管理接口(如 2375、3306),以及容器间是否因共享 Bridge 而绕过了预期的认证层。

4.2 Overlay 网络:跨主机通信与加密隧道

Overlay 网络通过 VXLAN 封装实现跨宿主机容器通信,是 Docker Swarm 和 Kubernetes 的基础网络模型。每个 Overlay 网络拥有独立的子网和广播域。

Overlay 网络跨主机通信与授权边界 宿主机 A (10.0.1.10) 容器 A1 10.0.2.2 容器 A2 10.0.3.2 Overlay 网络 A (10.0.2.0/24) 宿主机 B (10.0.1.20) 容器 B1 10.0.2.3 容器 B2 10.0.4.2 Overlay 网络 A (10.0.2.0/24) VXLAN 隧道 授权边界 A 容器 A1 ↔ A2 互通 容器 A1 ↔ B1 跨主机互通 授权边界 B 容器 B1 ↔ B2 隔离 容器 B2 不在 Overlay A 中 同 Overlay 容器 Overlay 网络 VXLAN 隧道 授权边界
性能调优提示: Overlay 网络因 VXLAN 封装会引入约 5-10% 的吞吐损耗。在授权测试中,应验证加密隧道是否影响审计日志的实时采集,以及 MTU 配置是否导致分片丢包。

4.3 网络策略与微隔离

微隔离将安全策略下放到容器粒度,不再依赖传统的网络边界防火墙。Docker 原生支持通过 --network 和 --ip 实现基础隔离,而 Kubernetes NetworkPolicy 提供了更精细的规则引擎。

4.3.1 网络策略核心要素

  • 入站规则(Ingress):控制哪些源 IP/Pod 可以访问目标容器
  • 出站规则(Egress):控制目标容器可以访问哪些外部端点
  • 标签选择器(Label Selector):基于元数据动态匹配策略目标
  • 命名空间隔离:跨命名空间的流量默认拒绝

4.3.2 授权测试的微隔离验证清单

测试场景 预期行为 授权风险
同命名空间内无策略 所有容器互通 横向移动风险高
仅定义 Ingress 策略 入站受限,出站默认允许 数据外泄风险
双向策略(Ingress + Egress) 最小权限通信 需验证策略是否覆盖所有端口
标签选择器误配 策略未生效 授权绕过漏洞
# 示例:Kubernetes NetworkPolicy 实现微隔离
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: api-allow-frontend
spec:
  podSelector:
    matchLabels:
      app: backend-api
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 8080
常见陷阱: 很多团队只配置 Ingress 策略而忽略 Egress,导致容器可以自由访问外部恶意服务器。授权测试必须双向验证,并检查默认拒绝规则是否已启用。

4.4 授权测试的网络视角

从网络视角进行授权测试,核心是验证容器间的通信是否符合最小权限原则。测试方法包括:

  1. 网络拓扑发现:使用 docker network inspect 或 kubectl get pods -o wide 获取容器 IP 与网络归属
  2. 连通性验证:在测试容器内执行 ping、curl、nc 探测目标端口
  3. 策略绕过测试:尝试使用非预期标签、IP 伪装、端口扫描等方式突破网络策略
  4. 加密隧道审计:验证 Overlay 网络的 VXLAN 是否启用 IPsec 或 WireGuard 加密
授权测试网络视角:四步验证流程 1. 拓扑发现 docker network ls kubectl get pods 2. 连通性验证 ping / curl / nc 端口扫描 3. 策略绕过 标签篡改 IP 伪装 4. 审计 日志检查 加密验证 输出:授权边界矩阵 记录每个容器对的允许/拒绝状态及绕过路径

4.5 性能调优与网络授权权衡

网络策略越严格,性能开销越大。授权测试需要同时评估安全增益与性能损耗:

  • iptables 规则数量:每增加一条 NetworkPolicy 规则,数据路径增加一次规则匹配,建议单节点不超过 1000 条
  • Overlay 封装开销:启用加密(IPsec)后吞吐下降约 15-20%,延迟增加 0.5-1ms
  • 连接跟踪表:微隔离场景下连接跟踪表容易占满,建议设置 net.netfilter.nf_conntrack_max=1048576
  • eBPF 替代方案:Cilium 等 eBPF 方案可将策略执行性能提升 3-5 倍,同时支持更细粒度的 L7 授权
最佳实践: 在授权测试前,先通过 iperf3 和 wrk 建立基准性能数据;应用网络策略后再次测试,将性能损耗控制在 10% 以内作为安全策略的接受阈值。