问题 如何通过IAM控制用户对Amazon DynamoDB数据的访问?


是否 AWS身份和访问管理(IAM) 提供一种方式,以便用户只能编辑或删除中的项目 亚马逊DynamoDB 他之前添加的表格?


4968
2018-01-02 04:46


起源



答案:


AWS添加后,这成为可能 Amazon DynamoDB的细粒度访问控制这有利于 AWS 身份和访问管理(IAM) 用于管理对DynamoDB表中存储的项和属性的访问的策略

介绍性博客文章说明了此功能的出色粒度,并简化了许多现实世界的用例:

  •   - 通过匹配散列键值,可以有选择地隐藏或公开特定表中的特定DynamoDB项

15
2018-01-03 14:31





我很确定你问题的答案是肯定的。您可能必须使用AWS Cognito及其背后的IAM角色策略。

您可能需要对此进行一些调整,但如果添加如下所示的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:ap-southeast-2: NUMBER:table/myapplication_product"
            ],
            "Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": [
                        "${cognito-identity.amazonaws.com:sub}"
                    ]
                }
            }
        }
    ]
}

首先,这将限制对dynamodb资源的访问仅限于命名的方法,但“条件”块还将限制访问与您尝试更改的哈希键匹配的身份 - 显然,这不会影响扫描(仅限GetItem和UpdateItem)。现在正是你如何匹配这些键,是我提到的小提琴,但解决方案就在那里。希望这可以帮助。


2
2017-12-17 22:05





您可以添加仅限于PutItem / UpdateItem / DeleteItem DynamoDB操作且仅限于特定表的IAM用户 ARN。看到 使用IAM控制对Amazon DynamoDB资源的访问

您可以在IAM策略中为所有Amazon DynamoDB操作使用资源级ARN,但ListTable除外。

但是,没有内置的方法可以将表更新限制为“创建表的用户”,但我猜你可以在创建表时编写脚本。


0
2018-01-03 14:55





我不相信这是可能的。 IAM角色基本上都是 控制客户端可以进行哪些API调用。一旦客户端获得执行操作的权限,DynamoDB就不会记录该操作并将其附加到客户端。

如果您需要这种行为,您应该在表中保留一个属性,该属性会更新一些有关用户进行操作的元数据。


-1
2018-01-02 07:48