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

AWS CDK跨账号部署报错AccessDenied:无ssm:GetParameters权限

问题分析与解决方案

核心原因

错误AccessDenied. User doesn't have permission to call ssm:GetParameters说明执行部署动作的角色缺少读取SSM参数的权限,结合跨账号部署场景,大概率是角色权限配置遗漏导致。


具体修复步骤

1. 补充跨账号角色(Prod的MyCrossAccountRole)权限

你在CodePipeline中指定的role: CrossAccountRole是Prod账号中的角色,CodePipeline会通过AssumeRole切换到这个角色执行部署动作。如果CloudFormation模板中引用了SSM参数(比如{{resolve:ssm:/path/to/param}}格式),这个角色必须拥有ssm:GetParameters权限。

在Prod账号的IAM控制台找到MyCrossAccountRole,添加以下权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameters",
      "Resource": "arn:aws:ssm:<prod-region>:<prod-account-id>:parameter/*"
    }
  ]
}

替换<prod-region>和<prod-account-id>为实际值,也可缩小Resource范围到模板中实际引用的参数路径以提升安全性。

2. 确认部署角色(CrossDeploymentRole)权限

你指定了deploymentRole: CrossDeploymentRole,此时adminPermissions: true会被忽略——CloudFormation将使用这个自定义角色创建/更新资源。如果资源配置中需要读取SSM参数,这个角色也需要添加ssm:GetParameters权限。

3. 验证角色信任关系

确保Prod账号的MyCrossAccountRole信任策略允许CICD账号的CodePipeline执行角色(或CICD账号根)Assume它,信任策略示例:

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

更安全的做法是指定CICD账号中CodePipeline的执行角色ARN,而非根账号。


额外排查点

  • 确认CloudFormation模板是否确实引用了SSM参数,如果没有,检查是否有其他环节(比如CodePipeline前置动作)需要访问SSM;
  • 你已给CICD账号添加管理员权限,CodePipeline执行角色权限大概率无问题,重点仍在跨账号的两个角色配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:37:08