1. K8s 安全概述:威胁模型、攻击面与授权测试
Kubernetes 已成为云原生基础设施的事实标准,但其复杂的分布式架构也引入了大量安全风险。理解控制面的威胁模型与攻击面,是开展授权测试与 RBAC 策略调优的前提。本章从攻击者视角出发,系统梳理 K8s 安全的核心挑战。
1.1 Kubernetes 安全威胁模型
K8s 安全威胁模型可归纳为四个维度:集群外部攻击、内部横向移动、组件漏洞利用、配置与策略缺陷。下表列出各维度的典型威胁场景:
| 威胁维度 | 典型场景 | 影响等级 |
|---|---|---|
| 集群外部攻击 | API Server 暴露公网、kubelet 未认证端口、Dashboard 弱口令 | 严重 |
| 内部横向移动 | Pod 逃逸后窃取 ServiceAccount 、利用 ClusterRole 提权 | 高危 |
| 组件漏洞利用 | etcd 未加密、kube-controller-manager 未授权访问、kube-scheduler 配置泄露 | 高危 |
| 配置与策略缺陷 | RBAC 过度授权、PodSecurityPolicy 缺失、NetworkPolicy 未配置 | 中危 |
关键洞察: 超过 70% 的 K8s 安全事件源于配置错误与过度授权,而非 0-day 漏洞。RBAC 策略调优是成本最低、收益最高的安全加固手段。
1.2 控制面组件攻击面分析
Kubernetes 控制面由 API Server、etcd、kube-scheduler、kube-controller-manager 以及 Cloud Controller Manager 组成。每个组件都有独特的攻击面:
- API Server (kube-apiserver):集群的入口,暴露 RESTful API。攻击面包括未认证的匿名请求、 泄露、RBAC 配置错误、Webhook 绕过。
- etcd:集群状态存储,存储所有 Secret、ConfigMap、RBAC 绑定。若未启用 TLS 认证或未限制网络访问,攻击者可直接读取全部敏感数据。
- kube-scheduler:调度 Pod 到节点。攻击面包括利用调度策略将恶意 Pod 调度到特权节点,或通过污点容忍绕过限制。
- kube-controller-manager:运行控制器循环。攻击面包括未授权的 ServiceAccount 提权、控制器配置注入。
- Cloud Controller Manager:与云平台交互。攻击面包括云凭证泄露、负载均衡器配置篡改。
1.3 授权测试的重要性
授权测试(Authorization Testing)是验证集群中“谁可以做什么”的系统性过程。在 K8s 环境中,授权测试的核心价值体现在以下方面:
- 发现过度授权:识别被授予了超出职责范围的 ClusterRole/ Role 绑定,例如普通开发人员拥有
cluster-admin权限。 - 验证最小权限原则:确保每个 ServiceAccount、User、Group 仅拥有完成其任务所需的最小权限集。
- 检测提权路径:通过组合多个低权限角色,攻击者可能实现权限提升。授权测试可提前发现这些路径。
- 合规审计:满足 SOC2、PCI-DSS、ISO 27001 等标准对访问控制的审计要求。
实践建议: 授权测试应作为 CI/CD 流水线的一部分,每次 RBAC 变更后自动执行。推荐使用
kubectl auth can-i 命令进行快速验证,并结合 rbac-lookup、kubectl-who-can 等工具进行深度审计。
1.4 授权测试的典型流程
一个完整的授权测试流程通常包含以下步骤:
- 枚举身份与绑定:列出所有 ServiceAccount、User、Group 及其绑定的 Role/ClusterRole。
- 解析权限集合:将每个身份的有效权限展开为动词(get/list/watch/create/update/patch/delete)与资源(pods/secrets/deployments/…)的矩阵。
- 模拟请求:使用
kubectl auth can-i --as=system:serviceaccount:default:my-sa --list模拟实际请求。 - 分析提权风险:检查是否存在
escalate、bind、impersonate等敏感动词,或是否可访问secrets、configmaps等敏感资源。 - 生成报告与修复建议:输出权限矩阵、风险等级、建议的 RBAC 策略调整。
1.5 常见授权测试工具
| 工具 | 功能 | 适用场景 |
|---|---|---|
kubectl auth can-i |
模拟用户/SA 的权限查询 | 快速验证单个请求 |
rbac-lookup |
可视化 RBAC 绑定与权限 | 审计与报告生成 |
kubectl-who-can |
反向查询谁有权限执行某操作 | 提权路径分析 |
kube-bench |
CIS Benchmark 合规检查 | 基线安全审计 |
polaris |
配置最佳实践检查 | 持续合规 |
注意: 授权测试应始终在非生产环境或专用的测试集群中执行。在生产集群中执行
kubectl auth can-i --list 等只读操作是安全的,但切勿在生产环境中尝试提权攻击或修改 RBAC 绑定。
通过本章的学习,你应该对 K8s 安全威胁模型、控制面组件攻击面以及授权测试的核心价值有了系统性的认识。接下来的章节将深入 RBAC 原理、权限枚举技术与策略调优实战。