Kubernetes Goat云安全:AWS EKS IAM角色与权限配置
一、AWS EKS环境搭建基础
AWS EKS(Elastic Kubernetes Service)是托管Kubernetes服务,在配置IAM角色与权限前需完成基础环境部署。通过eksctl工具可快速创建集群,执行以下命令创建包含2个t4g.medium节点的EKS集群:
eksctl create cluster --name k8s-goat-cluster --region us-east-1 --node-type t4g.medium --nodes 2
该过程会生成两个CloudFormation堆栈,耗时约15-20分钟。集群创建后需更新kubeconfig:
aws eks update-kubeconfig --name k8s-goat-cluster --region us-east-1
验证集群状态:kubectl cluster-info
部署Kubernetes Goat环境:
git clone https://gitcode.com/GitHub_Trending/ku/kubernetes-goat
cd kubernetes-goat/
bash setup-kubernetes-goat.sh
官方部署文档:guide/docs/how-to-run/aws.md
二、IAM角色配置风险场景
2.1 敏感凭证泄露案例
在Kubernetes Goat的场景1中,展示了代码仓库硬编码AWS密钥的典型风险。通过访问应用暴露的.git目录(http://127.0.0.1:1230/.git/config),可使用工具如git-dumper克隆仓库:
python3 git-dumper.py http://localhost:1230/.git k8s-goat-git
场景1完整演示:guide/docs/scenarios/scenario-1/scenario-1.md
2.2 RBAC权限过度配置
Kubernetes集群中常见的cluster-admin绑定风险可通过以下配置复现:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: superadmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: superadmin
namespace: kube-system
该配置文件位于:scenarios/insecure-rbac/setup.yaml
三、IAM权限加固实践
3.1 最小权限原则实施
为EKS节点组配置IAM角色时,应避免使用管理员权限。推荐通过AWS IAM Roles for Service Accounts (IRSA) 实现Pod级权限控制,示例部署文件:scenarios/metadata-db/templates/deployment.yaml
关键配置片段:
spec:
serviceAccountName: metadata-db-sa
containers:
- name: metadata-db
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
3.2 凭证扫描自动化
集成TruffleHog工具扫描镜像中的敏感信息:
trufflehog filesystem --directory=/path/to/kubernetes-goat
四、环境清理与安全验证
测试完成后需执行完整清理流程:
bash teardown-kubernetes-goat.sh
eksctl delete cluster --name k8s-goat-cluster --region us-east-1
清理脚本:teardown-kubernetes-goat.sh
安全检查清单
- IAM角色使用IRSA而非实例角色
- 禁用默认服务账户自动挂载
- 实施RBAC权限最小化
- 定期扫描镜像敏感信息
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





