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

如何让STS AssumeRole传递的细粒度DynamoDB权限生效?

解决STS AssumeRole传递的内联策略不生效问题

核心原因

你传递的--policy参数是IAM权限边界(Permission Boundary),它的作用是限制角色已有的权限范围,而非直接授予权限。这就是为什么:

  • 角色无任何附加策略时,会报权限不足(没有基础权限可被限制)
  • 给角色附加全量权限策略后,内联策略的条件未生效(条件键拼写错误导致校验失效)

分步解决方案

1. 给IAM角色附加基础权限策略

先在IAM控制台给test-dynamodb-role附加以下基础策略,确保角色拥有DynamoDB操作的基础权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["dynamodb:*"],
      "Resource": [
        "arn:aws:dynamodb:*:*:table/my-dynamo-table",
        "arn:aws:dynamodb:*:*:table/my-dynamo-table/index/*"
      ]
    }
  ]
}

2. 修正内联策略的错误

你的原策略存在两个关键问题:

  • 条件键dynamodb: LeadingKeys多了空格,正确写法是dynamodb:LeadingKeys
  • ForAllValues仅适用于批量操作(如BatchGetItem),单条GetItem/Query用普通操作符即可

修正后的内联策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["dynamodb:*"],
      "Resource": ["arn:aws:dynamodb:*:*:table/my-dynamo-table"],
      "Condition": {
        "StringLike": {
          "dynamodb:LeadingKeys": ["leading-key:*"]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["dynamodb:Query", "dynamodb:GetItem"],
      "Resource": ["arn:aws:dynamodb:*:*:table/my-dynamo-table/index/*"],
      "Condition": {
        "StringEquals": {
          "dynamodb:LeadingKeys": ["leading-key"]
        }
      }
    }
  ]
}

3. 修正AssumeRole命令

为避免JSON转义错误,建议将内联策略保存为文件(如inline-policy.json),再执行命令:

aws sts assume-role \
  --role-arn arn:aws:iam::12345678:role/test-dynamodb-role \
  --role-session-name dynamo-cmd-line-test \
  --policy file://inline-policy.json

4. 修正GetItem命令的JSON格式

原命令的--key参数转义有误,改用单引号避免转义问题:

aws dynamodb get-item --table-name my-dynamo-table --key '{ "Id": { "S": "leading-key:93be7f8b-7c13-4248-1b28-ad2cf92b237f" }}' --profile temp-sts

验证效果

  • 当查询leading-key:*格式的主键时,操作会成功
  • 尝试查询其他前缀的主键时,会触发权限拒绝,说明内联策略的条件已生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:18:18