尝试从AWS美西政府账户访问商用账户时遇Invalid Principal错误
解决AWS商用账户无法信任政府云IAM用户作为角色主体的问题
AWS商用云(aws:分区)与政府云(aws-us-gov:分区)是完全独立的环境,商用账户的IAM信任策略无法直接将政府云IAM用户的ARN作为Principal——这就是你遇到Invalid principal in policy错误的核心原因。
正确的配置方式是先信任整个政府云账户,再通过条件键精准限制到目标IAM用户,具体操作如下:
修改商用账户的角色信任策略
将原策略替换为以下内容(替换实际的政府云账户ID和用户ARN):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws-us-gov:iam::111111111111:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws-us-gov:iam::111111111111:user/theusername" } } } ] }
也可以直接用政府云账户ID作为Principal,效果一致:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111111111111" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws-us-gov:iam::111111111111:user/theusername" } } } ] }
补充政府云IAM用户的权限配置
在政府云的目标IAM用户上,附加允许其Assume商用账户角色的权限策略(替换商用账户ID和角色名):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/mysuperrolename" } ] }
原理说明
商用云IAM系统无法直接验证政府云ARN的合法性,因此必须先信任整个政府云账户(通过账户ID或root ARN),再利用aws:PrincipalArn条件键过滤出唯一的目标用户,既满足商用账户的策略验证要求,又能确保权限的最小化。
内容的提问来源于stack exchange,提问作者Life5ign
相关产品推荐
相关产品推荐

