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

跨账号AWS CodePipeline部署报错:Cross-account pass role is not allowed

解决AWS CodePipeline跨账号CloudFormation部署的403 AccessDenied问题

这个问题我之前帮团队排查过很多次,核心是没搞清楚**PassRole权限**和角色信任关系的本质区别——你已经做对了一半,差的就是关键的PassRole配置!先给你理清两者的差异,再一步步教你修正配置:

先搞懂:PassRole vs 角色信任关系

很多人会把这两个搞混,其实它们是完全不同的权限逻辑:

  • 角色信任关系:是生产账号的目标角色(role-to-assume)明确表态:「允许开发账号的流水线角色来扮演我」。你已经配置了这部分,所以能通过控制台切换到该角色,但这只是基础。
  • PassRole权限:是开发账号的流水线角色需要获得许可:「我可以把生产账号的那个角色传递给CloudFormation服务,让CloudFormation用这个角色去执行部署操作」。这正是你缺失的部分,也是报错的直接原因。

具体配置步骤

1. 确认生产账号目标角色的信任关系(你已做,但再核对)

确保生产账号的role-to-assume角色的信任策略,是允许开发账号的CodePipeline执行角色(而不是账号根用户)来扮演它。信任策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::DEV_ACCOUNT_ID:role/你的流水线角色名称"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2. 给开发账号的CodePipeline角色添加PassRole权限

这是解决报错的核心!在开发账号中,找到你的CodePipeline执行角色,给它添加一条权限策略,允许传递生产账号的role-to-assume角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::PROD_ACCOUNT_ID:role/role-to-assume"
    },
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::PROD_ACCOUNT_ID:role/role-to-assume"
    }
  ]
}
  • 注意:iam:PassRole的Resource必须精确指定生产账号目标角色的ARN,遵循最小权限原则,别用通配符。
  • 额外添加sts:AssumeRole是为了让流水线角色能先获取生产角色的临时凭证,确保跨账号调用的链路完整。

3. 确认生产账号目标角色的权限(你已做,但再检查)

虽然你说给了管理员权限,但再确认role-to-assume有足够的权限执行CloudFormation部署动作(比如创建Lambda、IAM角色、修改栈等)。如果是管理员权限,这部分没问题,但如果后续要缩权限,可以根据SAM模板的资源来配置最小权限。

4. 检查流水线部署动作的配置(你的配置没问题,但再核对)

你当前的部署段配置是正确的,RoleArn指向生产账号的role-to-assume,ActionMode用CHANGE_SET_REPLACE也符合最佳实践,无需调整。

最后再验证

配置完成后,重新触发CodePipeline的执行,手动审批后应该就能正常部署到生产账号了。如果还是有问题,可以检查:

  • 是否有IAM权限边界(Permissions Boundary)限制了角色的权限
  • 开发账号的流水线角色是否有cloudformation:CreateChangeSet、cloudformation:ExecuteChangeSet等跨账号操作的权限(管理员权限应该已经覆盖)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:22