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

如何配置AWS策略让指定联合用户仅访问目标Secrets Manager密钥

解决AWS Secrets Manager仅允许指定联合用户访问密钥的问题

问题分析

你当前的拒绝策略未生效,核心原因可能是:

  • 策略中填写的aws:PrincipalArn与你实际的身份ARN不匹配(可通过命令确认精确值)
  • 缺少对应的允许权限(拒绝策略生效的前提是存在允许访问的规则,否则AWS默认会拒绝所有请求)

正确配置步骤

1. 获取你的精确身份标识

先执行以下命令,获取当前会话的ARN和UserId:

aws sts get-caller-identity

输出中的Arn和UserId字段就是你需要使用的精确值,比如arn:aws:sts::123456789:assumed-role/ProdAdmin-Prod-Role/myUsername和AIDACKCEVSQ6C2EXAMPLE:myUsername。

2. 配置密钥的资源策略

使用以下策略,确保仅你能访问目标密钥,其他所有主体(包括同角色的其他用户)都会被拒绝:

{
  "Version": "2012-10-17",
  "Statement": [
    // 允许你自己访问密钥
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::123456789:assumed-role/ProdAdmin-Prod-Role/myUsername"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:af-south-1:123456789:secret:test_secret-Q6dOdK"
    },
    // 拒绝所有其他主体访问
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:af-south-1:123456789:secret:test_secret-Q6dOdK",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:sts::123456789:assumed-role/ProdAdmin-Prod-Role/myUsername"
        }
      }
    }
  ]
}

3. 更可靠的替代方案:使用aws:userid条件

联合身份的aws:userid格式为[角色ID]:[会话名称],这个值更稳定(角色ID不会变化)。使用该条件的策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:af-south-1:123456789:secret:test_secret-Q6dOdK",
      "Condition": {
        "StringEquals": {
          "aws:userid": "AIDACKCEVSQ6C2EXAMPLE:myUsername"
        }
      }
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "arn:aws:secretsmanager:af-south-1:123456789:secret:test_secret-Q6dOdK",
      "Condition": {
        "StringNotEquals": {
          "aws:userid": "AIDACKCEVSQ6C2EXAMPLE:myUsername"
        }
      }
    }
  ]
}

关键注意事项

  • 必须保留Allow语句,否则即使没有Deny规则,AWS默认也会拒绝访问
  • 务必使用aws sts get-caller-identity获取精确的身份标识,避免手动输入错误
  • 如果你的会话名称是动态生成的,可结合StringLike使用通配符(需注意控制范围,避免扩大权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:34:54