1. 课程导论:Cilium与eBPF背景、控制面授权测试的重要性、课程目标与受众
1.1 eBPF 技术背景与内核可编程革命
eBPF(extended Berkeley Packet Filter)是一项革命性的 Linux 内核技术,允许用户在无需修改内核源码或加载内核模块的情况下,安全高效地在内核中运行沙箱化程序。eBPF 程序通过验证器确保安全性,并通过 JIT 编译器实现接近原生的执行性能。
| 维度 | 传统内核扩展方式 | eBPF 方式 |
|---|---|---|
| 安全性 | 内核模块可导致系统崩溃或安全漏洞 | 验证器静态检查,拒绝危险程序 |
| 可编程性 | 需修改内核源码,周期长 | 动态加载,热插拔 |
| 性能 | 上下文切换开销大 | JIT 编译,内核内执行 |
| 可观测性 | 有限,需硬编码 | 全栈可观测,动态插桩 |
关键洞察: eBPF 将内核从"固定功能"转变为"可编程平台",使得网络、安全、可观测性等领域的创新速度大幅提升。Cilium 正是基于 eBPF 构建的云原生网络与安全方案。
1.2 Cilium:基于 eBPF 的云原生网络与安全层
Cilium 是一个开源项目,利用 eBPF 为 Kubernetes 提供高性能的网络、可观测性与安全能力。其核心优势在于:
- 身份感知网络策略: 基于 Kubernetes 服务身份(而非 IP 地址)定义网络策略,适应动态容器环境。
- 透明加密: 通过 WireGuard 或 IPsec 实现节点间通信加密,无需修改应用。
- 可观测性: 通过 Hubble 提供 L3/L4/L7 流量可视化与监控。
- 负载均衡: 基于 eBPF 的 XDP 加速,性能远超传统 iptables 模式。
| 功能模块 | 传统方案(iptables / kube-proxy) | Cilium(eBPF) |
|---|---|---|
| 网络策略 | 基于 IP 地址,规则膨胀 | 基于身份标识,策略精简 |
| 负载均衡 | iptables DNAT,O(n) 规则遍历 | eBPF 哈希表,O(1) 查找 |
| 可观测性 | 需额外部署 sidecar 或 agent | 内核原生,零开销采集 |
| 安全策略粒度 | 仅 L3/L4 | L3/L4/L7,支持 HTTP/gRPC/Kafka |
1.3 控制面授权测试的重要性
在 Kubernetes 安全体系中,控制面(Control Plane) 是集群的大脑,包含 API Server、etcd、Controller Manager 和 Scheduler 等核心组件。控制面授权测试旨在验证:
- 最小权限原则: 确保每个组件、用户、服务账户仅拥有执行其职责所需的最小权限。
- 网络隔离有效性: 验证 Cilium 网络策略能否有效限制控制面组件之间的非授权访问。
- 横向移动防御: 测试攻击者突破一个节点后,能否通过控制面漏洞横向移动到其他敏感组件。
- 策略合规性: 确保网络策略符合企业安全基线(如 CIS Benchmark、NIST 框架)。
常见误区: 许多团队仅关注工作负载(Pod)之间的网络策略,却忽略了控制面组件(如 kube-apiserver、etcd、kube-controller-manager)之间的通信安全。控制面一旦被攻破,整个集群将沦陷。
1.4 课程目标与受众
课程目标
完成本课程后,学员将能够:
- 理解 Cilium 网络策略的核心概念: 包括 Identity、Endpoint、NetworkPolicy、CiliumNetworkPolicy、CiliumClusterwideNetworkPolicy。
- 掌握控制面授权测试方法论: 从威胁建模、策略设计到自动化测试验证的完整流程。
- 编写生产级 Cilium 网络策略: 涵盖 L3/L4/L7 策略、基于 DNS 的策略、基于服务身份的策略。
- 构建自动化测试流水线: 使用 Cilium Connectivity Test、k6、自定义 eBPF 探针进行持续验证。
- 应对真实攻击场景: 模拟控制面横向移动、API Server 未授权访问、etcd 数据泄露等攻击路径。
目标受众
| 角色 | 前置知识要求 | 课程收益 |
|---|---|---|
| Kubernetes 安全工程师 | K8s RBAC、网络策略基础 | 掌握 Cilium 高级策略与自动化测试 |
| 云原生架构师 | 容器网络、微服务架构 | 设计零信任控制面网络架构 |
| DevSecOps 工程师 | CI/CD、安全扫描工具 | 构建策略即代码(Policy as Code)流水线 |
| 渗透测试工程师 | 网络攻击手法、K8s 攻击路径 | 验证控制面安全防护有效性 |
学习建议: 本课程包含大量动手实验。建议准备一个至少 3 节点的 Kubernetes 集群(v1.24+),并安装 Cilium 1.14+。课程代码仓库提供完整的 Vagrant/Terraform 部署脚本。