如何配置AWS Base账户IAM组与Dev账户AdminRole的信任关系?
解决AWS跨账户角色信任IAM组的问题
嘿,我来帮你搞定这个跨账户角色信任的问题!你现在遇到的核心问题是:IAM角色的信任策略不能直接把IAM组作为Principal——AWS的IAM系统里,组不是可被直接信任的身份实体,只有用户、角色、AWS账户根、服务这类实体才行,所以你直接用组ARN的策略是不会生效的。
下面给你两个可行的解决方案,你可以根据自己的情况选择:
方案一:信任Base账户+组权限控制(推荐)
这个方法更高效,适合用户数量多的场景,分两步操作:
1. 配置Dev账户AdminRole的信任策略
修改信任策略,允许Base账户的所有身份(通过账户根ARN)来AssumeRole:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::BASE_ACCOUNT_ID:root" }, "Action": "sts:AssumeRole" } ] }
记得把BASE_ACCOUNT_ID替换成你Base账户的12位数字ID。
2. 在Base账户给admins组添加授权策略
在Base账户的admins组中创建一个IAM策略,允许组内的用户调用sts:AssumeRole去访问Dev账户的AdminRole:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::DEV_ACCOUNT_ID:role/AdminRole" } ] }
同样替换DEV_ACCOUNT_ID为你Dev账户的12位ID。
这样一来,只有admins组的用户能获得AssumeRole的权限,而Dev账户的角色信任Base账户的所有身份,但只有被Base账户授权的用户才能成功切换角色,既满足了需求又保证了安全性。
方案二:直接指定用户ARN(适合用户少或命名有规律的场景)
如果你的用户命名有统一规律(比如user1到user56),也可以在Dev账户的信任策略里直接列出所有用户的ARN,或者用通配符匹配:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::BASE_ACCOUNT_ID:user/user1", "arn:aws:iam::BASE_ACCOUNT_ID:user/user2", // 依次添加到user56 ] }, "Action": "sts:AssumeRole" } ] }
不过这个方法的缺点是后续新增用户时需要手动更新信任策略,维护成本较高,所以更推荐方案一。
测试验证
配置完成后,你可以用AWS CLI命令测试是否能成功切换角色:
aws sts assume-role --role-arn arn:aws:iam::DEV_ACCOUNT_ID:role/AdminRole --role-session-name test-admin-session
如果返回包含Credentials的结果,说明配置成功了。
内容的提问来源于stack exchange,提问作者Ken J
相关产品推荐
相关产品推荐

