【问题标题】:Amazon DynamoDB & IAM - Allow update-item to change a single attributeAmazon DynamoDB 和 IAM - 允许更新项更改单个属性
【发布时间】:2020-09-24 17:06:31
【问题描述】:

说明:

我有一个包含 50 个项目的表,每个项目至少有三个属性NameAgeE-mail

用户应该能够:

  1. 对特定项目的Name 执行update

  2. 对所有项目的属性执行这些操作:

  • 批量获取项目
  • 条件检查项
  • 描述表格
  • 获取项目
  • 扫描
  • ListTagsOfResource
  • 查询

我的尝试:

我在 IAM 中使用了此政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "UserNameUpdate",
            "Effect": "Allow",
            "Action": "dynamodb:UpdateItem",
            "Resource": "arn:aws:dynamodb:<region>:<account>:table/<tableName>",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ReturnValues": [
                        "NONE",
                        "UPDATED_OLD",
                        "UPDATED_NEW"
                    ]
                },
                "ForAllValues:StringLike": {
                    "dynamodb:Attributes": "Name"
                }
            }
        },
        {
            "Sid": "GetAll",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:ListTagsOfResource",
                "dynamodb:Query"
            ],
            "Resource": "arn:aws:dynamodb:<region>:<account>:table/<tableName>"
        }
    ]
}

结果:

  • 尝试更新项目时,我收到 AccessDeniedException
  • 尝试其他操作时,它们正常工作。

我不太了解 IAM 规则,尤其是 Condition 部分 ????。任何帮助将不胜感激。

【问题讨论】:

  • 如果您知道属性的确切名称,为什么要使用 StringLike 而不是 StringEquals?
  • 我正在尝试StringLike,因为它更宽松。 StringEquals 是我的第一选择,但都没有用,我得到了同样的异常......

标签: java android amazon-dynamodb amazon-iam


【解决方案1】:

Name 是 DynamoDB 中的 reserved word。也许这是你的问题?

【讨论】:

  • 说的不错,之前没注意过这个。但它是一样的,因为我不使用文档中所述的表达式:Do not use any of these words as attribute names in expressions
  • 当,希望那是你的问题!期待听到这个问题的答案,因为我自己刚刚开始定义 IAM 政策。
【解决方案2】:

我认为需要一个值数组:

"ForAllValues:StringLike": {
    "dynamodb:Attributes": ["Name"]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多