1. 课程导论:多租户场景下的网络隔离挑战、NetPolicy 项目背景与价值、课程目标与学习路径
1.1 多租户场景下的网络隔离挑战
在 Kubernetes 多租户环境中,不同租户(团队、项目、客户)的工作负载共享同一集群资源。默认的扁平网络模型允许任意 Pod 之间直接通信,这带来了严重的安全风险。网络隔离的核心目标是确保租户之间的流量“非授权即拒绝”,同时保障合法业务链路的畅通。
以下是多租户网络隔离面临的主要挑战:
| 挑战维度 | 具体问题 | 典型后果 |
|---|---|---|
| 租户边界模糊 | Namespace 仅提供逻辑隔离,无原生网络边界 | 租户 A 的 Pod 可直连租户 B 的数据库 |
| 策略规模爆炸 | 手工编写 NetworkPolicy 规则,租户数 > 10 时规则数呈指数增长 | 策略维护成本高,易出现配置遗漏或冲突 |
| 签名链路复杂性 | 微服务调用链跨多个 Namespace,需精确控制“谁-能-访问-谁” | 调试困难,一次误配置可能导致全链路中断 |
| 审计与合规缺失 | 缺乏租户维度的流量签名与策略生效记录 | 无法通过等保/PCI-DSS 等合规审计 |
| 动态拓扑适配 | Pod 频繁扩缩容,IP 地址动态变化 | 静态 IP 白名单策略失效,需频繁更新 |
⚠️ 常见误区: 很多团队认为“只要给每个租户分配独立 Namespace 就安全了”。实际上,Namespace 不提供任何网络隔离语义,Pod 仍可通过 ClusterIP 或 Pod IP 跨 Namespace 通信。必须显式声明 NetworkPolicy 才能实现真正的租户隔离。
1.2 NetPolicy 项目背景与价值
NetPolicy 是一个面向多租户 Kubernetes 集群的声明式网络策略编排引擎。它通过“租户签名”机制,将复杂的网络隔离需求抽象为可复用的策略模板,解决传统 NetworkPolicy 在规模化多租户场景下的痛点。
NetPolicy 的核心价值体现在以下四个方面:
- 租户签名(Tenant Signature): 为每个租户生成唯一的数字签名标签,自动注入到该租户的所有 Pod 和 Namespace 中,作为策略匹配的原子标识。
- 策略模板化: 预定义“全隔离”、“仅出站”、“签名链路”等策略模板,租户只需声明模板名称和参数,无需编写底层 YAML。
- 链路签名验证: 在关键业务链路上强制校验源/目标租户签名,防止签名伪造或跨租户越权访问。
- 审计与可视化: 自动生成租户维度的网络策略生效报告,支持与 SIEM 系统集成。
1.3 课程目标与学习路径
本课程旨在帮助学员从零掌握基于 NetPolicy 的多租户签名链路网络隔离实战技能。课程采用“理论 + 实验 + 项目”三阶段递进式设计。
课程目标
- 理解核心概念: 掌握多租户网络隔离模型、租户签名、签名链路、策略模板等关键术语。
- 独立部署 NetPolicy: 在 Kubernetes 集群中完成 NetPolicy 组件的安装、配置与验证。
- 编写签名策略: 使用 NetPolicy CRD 定义租户签名、链路规则与隔离策略。
- 排查与审计: 通过日志、事件和可视化工具诊断策略冲突与链路中断问题。
- 完成实战项目: 独立设计并实现一个包含 3 个租户、5 条签名链路的完整隔离方案。
学习路径(30 章结构)
💡 学习建议: 建议学员在开始本课程前,具备基本的 Kubernetes 操作经验(kubectl 常用命令、Pod/Service/Namespace 概念)。如果对 NetworkPolicy 原生资源不熟悉,建议先花 30 分钟阅读 Kubernetes 官方文档中的网络策略章节。
课程实验环境要求
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Kubernetes 集群 | ≥ 1.21 | 支持 NetworkPolicy API(需 CNI 插件实现) |
| CNI 插件 | Calico v3.20+ / Cilium 1.10+ | 必须支持 NetworkPolicy 强制执行 |
| kubectl | ≥ 1.21 | 与集群版本匹配 |
| Helm | ≥ 3.0 | 用于部署 NetPolicy 组件 |
| NetPolicy | v1.0.0+ | 本课程提供的实验版本 |