是否 AWS身份和访问管理(IAM) 提供一种方式,以便用户只能编辑或删除中的项目 亚马逊DynamoDB 他之前添加的表格?
是否 AWS身份和访问管理(IAM) 提供一种方式,以便用户只能编辑或删除中的项目 亚马逊DynamoDB 他之前添加的表格?
AWS添加后,这成为可能 Amazon DynamoDB的细粒度访问控制这有利于 AWS 身份和访问管理(IAM) 用于管理对DynamoDB表中存储的项和属性的访问的策略。
介绍性博客文章说明了此功能的出色粒度,并简化了许多现实世界的用例:
我很确定你问题的答案是肯定的。您可能必须使用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)。现在正是你如何匹配这些键,是我提到的小提琴,但解决方案就在那里。希望这可以帮助。
您可以添加仅限于PutItem / UpdateItem / DeleteItem DynamoDB操作且仅限于特定表的IAM用户 ARN。看到 使用IAM控制对Amazon DynamoDB资源的访问。
您可以在IAM策略中为所有Amazon DynamoDB操作使用资源级ARN,但ListTable除外。
但是,没有内置的方法可以将表更新限制为“创建表的用户”,但我猜你可以在创建表时编写脚本。
我不相信这是可能的。 IAM角色基本上都是 控制客户端可以进行哪些API调用。一旦客户端获得执行操作的权限,DynamoDB就不会记录该操作并将其附加到客户端。
如果您需要这种行为,您应该在表中保留一个属性,该属性会更新一些有关用户进行操作的元数据。