Kubernetes RBAC安全风险研究
01 K8S授权认证基本概念介绍
- 授权认证流程:包括开始请求、认证检查、授权检查、准入控制和数据写入五个步骤。
- 认证方式:
- 客户端证书(X.509):使用 X.509 客户端证书进行身份验证,风险在于证书泄露和 CA 管理不当。
- WebHook:通过 WebHook 服务验证 Token,配置复杂且易受 WebHook 服务本身漏洞影响。
- OIDC 集成:集成外部身份提供商进行身份验证,风险在于 Token 泄露和 OIDC 配置错误。
- Service Account(SA):Kubernetes 自动创建并为每个 Pod 分配 Token,风险在于 Token 泄露和不安全的权限配置。
02 集群RBAC风险
- 配置风险:
- 默认服务账户:未禁用或替换的
default Service Account 可能继承高权限。
- 权限过度授予:使用
verbs: [\"*\"] 和 resources: [\"*\"] 授予 cluster-admin 级别权限,可能导致横向渗透。
- 身份冒用(impersonate):通过伪造身份获取全量资源对象权限,模拟集群管理员进行管理。
- pods 资源组配置错误:允许创建特权容器,从而逃逸获取集群权限。
- Webhook 配置错误:RBAC 权限本身无法阻止特权容器创建,依赖 Webhook 服务进行准入控制,若
failurePolicy 配置不当会导致安全防线失效。
- ServiceAccount 过度授权:容器中的 SA 权限配置错误导致安全风险,如读取 Secrets。
03 实战研究场景研究
- RBAC 攻击流程:包括初始访问、权限发现、权限提升、权限利用、横向移动和最终影响。
- OIDC 认证场景错误配置示例:CAS 用户组直接映射为 K8s 高权限角色,缺乏细粒度权限控制,一旦 CAS 账号被攻破,K8s 集群可能被完全攻陷。
- 微服务架构调用关系:四层架构(接入层→应用层→业务层→数据层),每个服务使用独立 ServiceAccount,服务间通过 K8s Service 通信。攻击者需考虑企业人员对微服务容器 SA 权限配置是否合理。
- 微服务攻击链:Web 应用容器仅查看 Pod 和 Service 信息;认证服务可读取所有 Secrets,未做到权限最小化;订单服务权限可能过度授予。攻击路径包括漏洞利用、获取 Shell、信息收集、窃取 JWT 密钥、伪造管理员 Token,最终获取集群权限或影响业务。
- Nexus 集成架构与风险点:Nexus Repository 存储和管理制品,存在镜像投毒、凭据泄露、供应链攻击和 Nexus 服务漏洞风险。
- Nexus 突破路径:攻击初始可通过未授权访问或代码+密码凭据泄露,目标为 K8s 集群控制权,攻击路径包括 K8s 配置文件直连集群、令牌复用和密码登录,防护关键在于 Nexus 访问控制和凭据加密。
04 安全防御策略
- 日常防护:遵循最小权限原则,定期审查 RBAC 策略,通过安全策略左移在代码提交和部署阶段进行强制检查,利用准入控制器拦截高风险操作,及时更新 Kubernetes 版本。
- 持续改进:启用 API Server 审计日志和持续监控集群安全事件,快速发现 RBAC 滥用行为,进行溯源分析,改进防御策略和容器的错误配置,提升集群整体安全韧性。