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

如何为AWS假定角色创建信任策略?跨账号切换遇主体无效报错

跨AWS账号角色扮演的信任关系配置错误解析

问题场景

我有两个AWS账号A和B:账号A内有角色X,账号B内有角色Y。账号A中的某服务已成功扮演角色X,现在需要该服务继续扮演账号B中的角色Y。我尝试将角色X的临时会话ARN(格式为arn:aws:sts::<account A>:assumed-role/<some string>/<some string>)添加到角色Y的信任关系策略中,使用了以下配置:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::<account A>:assumed-role/*/*"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

系统返回错误:invalid principal in policy,请问哪里操作错了?

错误原因

AWS IAM信任策略的Principal.AWS字段仅接受持久身份实体的ARN,比如IAM用户ARN、IAM角色ARN、账号根ARN或组织ARN等。而arn:aws:sts::...:assumed-role/...属于临时会话ARN,是角色被扮演后生成的临时身份标识,并非持久的IAM实体,因此不能被用作信任策略的主体。

正确配置方案

你需要将账号A中角色X的持久角色ARN作为信任主体,添加到账号B角色Y的信任关系里。这样当账号A的服务成功扮演角色X后,就可以凭借X的身份请求扮演角色Y。

正确的信任策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<account A>:role/X"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

如果需要允许账号A下所有角色都能扮演Y(不推荐,建议遵循最小权限原则),也可以使用账号A的根ARN作为主体:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<account A>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:27:06