【发布时间】:2014-08-11 04:18:15
【问题描述】:
我目前正在尝试使用Amazon DynamoDB 直接在浏览器中使用AWS SDK for JavaScript in the Browser 创建一个完整的JavaScript 应用程序。 但是,我无法确保对 DynamoDB 的访问安全。
在IAM 中,我使用此策略创建了一个名为Users 的组:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:UpdateItem"
],
"Resource": ["arn:aws:dynamodb:eu-west-1:1234567891234:table/*"],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": ["${aws:username}"]}
}
}]
}
我有一个名为Bahaika 的用户属于Users 组。
在 DynamoDB 中,我创建了两个项目:
-------------------------
| Dog ID | User Id |
-------------------------
| Dog1 | Bahaika |
-------------------------
| Dog2 | NotBahaika |
-------------------------
当我使用 Bahaika 的 Access Key ID 和 Secret Access Key 登录时,我希望只能获取 Dog1,而不是 Dog2。
我还想在将项目添加到表时自动添加User ID 属性。
最后,我希望能够列出 User ID 等于记录的表的所有项目。
我怎样才能做到这一点?
我已经读过Fine-Grained Access Control for DynamoDB 但我想我错过了一些东西。
【问题讨论】:
-
什么不工作,当你以 Bahaika 的身份登录时,你看到两者或没有狗(听起来像前者,但要澄清一下)?
-
我的两只狗都有一个
AccessDenied。当我禁用该策略时,我可以访问所有狗。
标签: amazon-web-services amazon-dynamodb amazon-iam