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

AWS Secrets Manager跨账号为外部账号角色/组授予密钥访问权限问题

问题根因

  1. AWS跨账号资源策略(含Secrets Manager资源策略、KMS密钥策略)不支持将外部账号的IAM组作为Principal,该限制为IAM固有规则,因此你配置外部账号IAM组为授权主体时会提示Principal不正确。
  2. Lambda执行角色访问被拒绝的常见原因包括:密钥ARN未加后缀通配符匹配AWS自动生成的6位随机后缀、角色ARN拼写错误、Lambda执行角色未正确附加跨账号访问权限策略、Lambda VPC配置无法访问Secrets Manager/KMS服务。
  3. 你使用个人账号可以正常访问的原因是个人用户ARN属于支持的Principal类型,授权链路完整。

解决方案(无需逐个授权用户)

不要在中心账号的策略中直接指定外部账号的具体角色/用户,改为直接授权给外部账号的根身份,权限的细粒度分配完全交给外部账号侧自行管理,后续新增访问主体无需修改中心账号配置:

  1. 替换中心账号客户托管KMS密钥策略的授权部分:
{
    "Sid": "Permissions for external account",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::external-acct:root"
    },
    "Action": [
        "kms:Decrypt",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "secretsmanager.us-east-1.amazonaws.com"
        },
        "StringLike": {
            "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:central-acct:secret:my-secret*"
        }
    }
}
  1. 替换中心账号Secrets Manager密钥的资源策略:
{
    "Version" : "2012-10-17",
    "Statement" : [ 
        {
            "Effect" : "Allow",
            "Principal" : {
                "AWS" : "arn:aws:iam::external-acct:root"
            },
            "Action" : "secretsmanager:GetSecretValue",
            "Resource" : "*",
            "Condition" : {
                "ForAnyValue:StringEquals" : {
                    "secretsmanager:VersionStage" : "AWSCURRENT"
                }
            }
        }
    ]
}
  1. 外部账号侧保持原有权限策略不变,需要给哪个IAM组、IAM角色、IAM用户授予密钥访问权限,直接将该权限策略附加到对应身份即可。

校验项

  • 确认Lambda执行角色的信任策略允许Lambda服务担任该角色
  • 确认Lambda执行角色已正确附加跨账号访问权限策略
  • 若Lambda配置了VPC,确认VPC已配置Secrets Manager和KMS的VPC端点,或VPC有公网出口可访问对应服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:12:02