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

跨账号密钥访问问题:Account A的CodeBuild无法读取Account B的Secret

跨AWS账号访问Secrets Manager密钥报错的排查与解决

常见原因及修复步骤

1. 密钥ARN或名称填写错误

  • 跨账号访问必须用完整ARN(比如arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-xxxxxx),不能只写密钥名称。
  • 核对ARN里的Account B账号ID、区域、密钥名称,尤其是Secrets Manager自动添加的随机后缀,必须和目标密钥完全一致。

2. CodeBuild服务角色权限不足

  • 给Account A的CodeBuild服务角色添加IAM策略,允许访问目标密钥:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "arn:aws:secretsmanager:<区域>:<Account B ID>:secret:<密钥名称-*>"
        }
    ]
}

3. Account B的密钥资源策略未授权访问

  • 登录Account B,修改对应密钥的资源策略,添加允许Account A的CodeBuild角色访问的规则:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<Account A ID>:role/<CodeBuild服务角色名>"
            },
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "*"
        }
    ]
}
  • 建议遵循最小权限原则,只授权具体的CodeBuild角色,而非整个Account A账号。

4. 区域不匹配

  • Secrets Manager是区域级服务,确认CodeBuild项目所在区域和Account B中密钥的区域一致。如果需要跨区域访问,要么把密钥复制到CodeBuild所在区域,要么在双方权限策略中明确跨区域访问的权限。

5. 密钥状态异常

  • 登录Account B的Secrets Manager控制台,确认目标密钥存在、状态为“已启用”,没有被删除或标记为废弃。

快速验证方法

  • 在Account A中,用CodeBuild服务角色的权限,通过AWS CLI测试访问:
aws secretsmanager get-secret-value --secret-id <Account B密钥ARN> --region <区域>

如果命令能返回密钥,说明权限配置没问题,问题出在buildspec的写法上;如果仍报错,继续排查权限或ARN的正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:48:34