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

如何通过跨账户角色获取AWS Secrets Manager机密值?

解决方案

是的,你必须先扮演关联的cross-account-secret-read角色,才能使用该角色的权限访问跨账户机密。直接用IAM用户X-app-pr-user执行命令会失败,因为该用户本身没有被目标机密的资源策略授予访问权限,而关联的角色权限需要主动切换后才能生效。

方法一:临时扮演角色获取凭证

  1. 执行STS命令获取角色临时凭证:
aws sts assume-role --role-arn arn:aws:iam::[ACCOUNT-B-ID]:role/cross-account-secret-read --role-session-name secret-read-session

将[ACCOUNT-B-ID]替换为Account B的实际AWS账户ID,执行后会返回包含AccessKeyId、SecretAccessKey、SessionToken的JSON结果。

  1. 设置环境变量使用临时凭证:
export AWS_ACCESS_KEY_ID="返回的AccessKeyId值"
export AWS_SECRET_ACCESS_KEY="返回的SecretAccessKey值"
export AWS_SESSION_TOKEN="返回的SessionToken值"
  1. 再次执行获取机密的命令:
aws secretsmanager get-secret-value --secret-id arn:accountB-secretId

方法二:配置AWS Profile长期使用

如果需要频繁访问,可以在AWS配置文件中添加角色配置:

  1. 编辑~/.aws/config文件,添加以下内容:
[profile cross-account-secret]
role_arn = arn:aws:iam::[ACCOUNT-B-ID]:role/cross-account-secret-read
source_profile = default  # 替换为你的X-app-pr-user对应的配置文件名称
  1. 使用该profile直接执行命令:
aws secretsmanager get-secret-value --secret-id arn:accountB-secretId --profile cross-account-secret

补充:资源策略替代方案

如果不想通过扮演角色,也可以修改Account B中目标机密的资源策略,直接允许X-app-pr-user的ARN执行secretsmanager:GetSecretValue操作。例如,给机密添加以下资源策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[ACCOUNT-X-ID]:user/X-app-pr-user"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:accountB-secretId"
    }
  ]
}

将[ACCOUNT-X-ID]替换为X-app-pr-user所在账户的ID。但这种方法会直接授予用户跨账户权限,安全性不如角色切换,需根据实际需求评估。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:12:46