拥有管理员权限安装AWS EBS-CSI-Driver Add-on时遇AccessDeniedException求助
解决AWS EKS安装EBS-CSI-Driver Add-on的权限拒绝问题
一、CLI操作的iam:PassRole显式拒绝错误
问题核心
显式拒绝(explicit deny)优先级高于所有允许权限,即便你拥有AdministratorAccess,也可能触发该错误:
- 你的IAM账号被附加了拒绝
iam:PassRole权限的规则(比如组织级SCP、IAM权限边界或直接绑定的拒绝策略) - 安装Add-on时指定了错误角色:EBS CSI Driver需要专属的CSI服务角色,而非节点组角色
EKS_NodeGroup_Role
解决步骤
排查并移除显式拒绝策略
登录IAM控制台,依次检查:- 你的用户/角色的权限边界
- 直接附加的IAM策略
- AWS组织的服务控制策略(SCP)
找到包含"Effect": "Deny", "Action": "iam:PassRole"的规则,移除或调整其范围。
创建并使用专属EBS CSI服务角色
不要复用节点组角色,按以下流程创建专用角色:- 新建信任策略文件
trust-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ebs.csi.aws.com" }, "Action": "sts:AssumeRole" } ] } - 创建角色:
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://trust-policy.json - 绑定CSI权限策略:
aws iam attach-role-policy --role-name AmazonEKS_EBS_CSI_DriverRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy - 指定该角色安装Add-on:
aws eks create-addon --cluster-name <你的集群名称> --addon-name aws-ebs-csi-driver --service-account-role-arn arn:aws:iam::<你的账号ID>:role/AmazonEKS_EBS_CSI_DriverRole
- 新建信任策略文件
二、控制台操作的eks:addon-manager权限错误
问题核心
eks:addon-manager服务账号缺少对kube-system命名空间的patch权限,大概率是集群RBAC配置被修改,导致Add-on安装流程无法正常更新命名空间。
解决步骤
- 为
eks:addon-manager添加RBAC权限
新建RBAC配置文件addon-manager-rbac.yaml:
应用配置到集群:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: eks-addon-manager-namespace-patch rules: - apiGroups: [""] resources: ["namespaces"] verbs: ["patch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks-addon-manager-namespace-patch-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks-addon-manager-namespace-patch subjects: - kind: ServiceAccount name: eks-addon-manager namespace: kube-systemkubectl apply -f addon-manager-rbac.yaml - 重新尝试控制台安装
配置生效后,回到EKS控制台重新发起EBS CSI Driver Add-on安装请求。
额外验证点
- 确认EKS集群版本≥1.21(EBS CSI Driver对集群版本有最低要求)
- 检查节点组角色
EKS_NodeGroup_Role是否包含AmazonEKSWorkerNodePolicy、AmazonEC2ContainerRegistryReadOnly等基础权限,确保节点能正常与集群通信
内容的提问来源于stack exchange,提问作者Cuong Giap
相关产品推荐
相关产品推荐

