如何限制dynamoddb用户访问自己拥有的数据。 我来访问Using IAM Policy Conditions for Fine-Grained Access Control
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${www.amazon.com:user_id}"
],
"dynamodb:Attributes": [
"UserId",
"GameTitle",
"Wins",
"Losses",
"TopScore",
"TopScoreDateTime"
]
}
}
上述条件的问题是我的分区键不是userId。 它的东西。
这就是我的数据库看起来像
Hash : "Sales" # its just plain text Sales
Range Date # its date
attributes : Sale : [ # array of maps
{
name : abc,
userId : idabc,
some-other : stuff
},
{
name : xyz,
userId : idxyz,
some-other : stuff
}
]
任何想法如何限制基于销售[x] .userId的访问? 或任何更好的设计如何处理这种设计? 我使用日期范围来查询90%的数据。 另一种选择是为每个逻辑表使用不同的表。 像销售,费用,工资单等,但我不想创建不同的表 而且我猜它会破坏目的或NoSQL。 仅供参考我使用javascript sdk从浏览器访问dynamodb。
app有3种不同的用户类型
我认为我必须创建3个不同的userPools,如果我错了,请纠正我。
但是如果我使用分区键作为userId,则无法限制对自己数据的访问 然后查询商家变得困难。
有关如何处理此数据库设计的任何建议?
感谢名单