You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否仅通过另一账号的IAM组跨账号担任指定IAM角色?

问题结论

该需求完全可以实现,但你设想的配置方案存在核心错误,无法生效:IAM角色信任策略不支持直接将IAM组设置为信任主体(Principal),IAM组是用户的集合容器,本身不是可发起API请求的认证身份,直接填写组ARN会被IAM识别为无效主体,直接拒绝所有跨账号扮演请求。

正确实现逻辑

AWS跨账号角色扮演的权限校验是双向的,必须同时满足账号B侧(被访问资源侧)的信任策略放行、账号A侧(访问发起侧)的身份权限策略放行,请求才会通过,你可以利用这个机制实现“仅账号A特定组成员可扮演B的角色”的需求:

  • 账号B侧的角色信任策略仅信任账号A的根主体,代表账号A下的身份具备申请扮演该角色的资格,不会直接放开所有账号A身份的权限
  • 账号A侧仅给指定IAM组附加扮演账号B目标角色的权限,不在该组内的身份默认没有对应权限,自然无法发起成功的扮演请求
具体配置

1. 账号B侧EKS访问角色的信任策略

将原有信任策略修改为以下内容,替换占位符为实际账号ID:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS": "arn:aws:iam::<账号A的12位账号ID>:root"
            }
        }
    ]
}

如果你需要更强的安全约束,可以在Condition字段增加额外校验,比如强制要求扮演角色时必须使用MFA验证。

2. 账号A侧附加到目标IAM组的权限策略

将原有组策略的Resource字段替换为账号B目标角色的ARN即可:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<账号B的12位账号ID>:role/<账号B中EKS访问角色的名称>"
        }
    ]
}
配置校验说明

配置完成后可以做两类测试验证效果:

  • 使用账号A中归属目标IAM组的用户/身份调用sts:AssumeRole接口,可以成功获取临时凭证,结合你之前配置的EKS aws-auth ConfigMap映射即可正常访问EKS集群
  • 使用账号A中不在目标IAM组的用户/身份调用相同接口,会直接返回权限不足错误,符合预期的访问控制要求

内容的提问来源于stack exchange,提问作者jonnybinthemix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:45:35