如何为IAM Identity Center用户配置EKS aws-auth ConfigMap访问权限?
首先你贴的aws-auth配置里有个明显语法问题:YAML不支持//格式的注释,你写的// this is role which seems to be assumed by user configured in Identity Center会导致ConfigMap解析失败,先把这个注释改成#或者直接删除,重新应用ConfigMap。
除此之外,还有几个常见遗漏点需要检查:
确认目标角色的信任关系配置
账户B中的SSO角色(你配置的ARN)需要同时支持两种信任规则:- 保留原有的IAM Identity Center信任规则,确保用户能通过Identity Center扮演该角色;
- 添加EKS集群OIDC提供商的信任规则,让EKS能验证该角色的身份。示例信任策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::<账户BID>:oidc-provider/oidc.eks.<区域>.amazonaws.com/id/<EKS集群OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<账户AID>:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<你的ExternalId>" } } } ] }给角色添加EKS控制台访问的IAM权限
即使映射了system:masters组,IAM角色仍需具备访问EKS控制台的基础权限,比如eks:DescribeCluster、eks:ListClusters,如果集群用SSM存储kubeconfig,还需要ssm:GetParameter。可以直接给角色附加AmazonEKSClusterPolicy托管策略快速满足需求。验证aws-auth ConfigMap是否生效
更新ConfigMap后,执行kubectl get configmap aws-auth -n kube-system -o yaml确认配置条目无语法错误,然后等待1-2分钟让kube-apiserver重新加载配置,或者用kubectl get nodes测试集群API访问是否正常。检查kubeconfig的有效性
完成SSO认证后,重新生成kubeconfig:aws eks update-kubeconfig --name <你的集群名称> --role-arn <账户B的SSO角色ARN>确保kubeconfig使用的是正确的角色ARN,且凭证处于有效期内。
内容的提问来源于stack exchange,提问作者Murakami

