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

跨账号传递角色不允许:AWS CodePipeline跨账号部署故障排查

解决跨账号CodePipeline的"Cross-account pass role is not allowed"错误

以下是你可能存在的配置问题,按优先级排查:

  • Account B跨账号角色的信任关系配置错误
    你当前允许Account A根用户扮演该角色,但实际发起请求的是Account A的CodePipeline服务角色,而非根用户。需要修改Account B角色的信任策略,将Principal指定为Account A的CodePipeline服务角色ARN,示例如下:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[AccountA-ID]:role/[你的CodePipeline服务角色名]"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
  • Account A的CodePipeline服务角色缺少精确的iam:PassRole权限
    确保服务角色的权限策略中,iam:PassRole动作的资源明确指向Account B的跨账号角色ARN,而不是通配符。示例权限片段:
{
  "Effect": "Allow",
  "Action": "iam:PassRole",
  "Resource": "arn:aws:iam::[AccountB-ID]:role/[AccountB跨账号角色名]"
}

注意:通配符*可能因IAM安全限制无法生效,必须指定具体角色ARN。

  • Account B跨账号角色的权限策略不完整
    该角色需要具备访问自身CodeCommit仓库的权限,至少包含以下动作:
{
  "Effect": "Allow",
  "Action": [
    "codecommit:GetRepository",
    "codecommit:GitPull",
    "codecommit:ListBranches"
  ],
  "Resource": "arn:aws:codecommit:[区域]:[AccountB-ID]:[你的仓库名]"
}
  • CodePipeline源阶段的角色配置错误
    在配置跨账号CodeCommit源时,确认选择的角色是Account A的CodePipeline服务角色,且该角色已被授权传递Account B的跨账号角色。避免直接在源阶段指定Account B的角色(除非服务角色已完全具备传递权限)。

  • 检查IAM权限边界的限制
    如果Account A的CodePipeline服务角色或Account B的跨账号角色附加了权限边界,需确认边界策略允许sts:AssumeRole(针对Account B角色)和iam:PassRole(针对Account A服务角色)动作,否则会拦截跨账号角色传递操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:40:33