如何在单个IAM信任策略语句中配置两个IRSA服务账号
在单个IAM Statement中配置多个EKS IRSA服务账号的正确语法
IAM角色信任策略的JSON结构不允许存在重复键名,直接重复oidc.eks.namehere.amazonaws.com/id/TGIFridays:sub键自然会报错。要在单个Statement内实现多服务账号授权,只需将该键对应的值改为数组格式,把所有需要授权的服务账号sub标识放入数组即可。
修改后的完整信任策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIRSAForMultipleSA", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::123456:oidc-provider/oidc.eks.namehere.amazonaws.com/id/TGIFridays" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.namehere.amazonaws.com/id/TGIFridays:sub": [ "system:serviceaccount:namespace:name", "system:serviceaccount:other-namespace:new-sa" ], "oidc.eks.namehere.amazonaws.com/id/TGIFridays:aud": "sts.amazonaws.com" } } } ] }
配置说明
StringEquals条件中,当键值为数组时,请求中的对应字段匹配数组里任意一个值即可满足条件- 保留
aud字段为sts.amazonaws.com,这是EKS IRSA的标准校验要求,确保只有合法的AWS STS请求能Assume该角色 - 可按需在数组中继续添加更多服务账号的sub标识,格式统一为
system:serviceaccount:<命名空间>:<服务账号名>
内容的提问来源于stack exchange,提问作者Sh3perd
相关产品推荐
相关产品推荐

