Dynamodb仅限制对用户数据的访问

时间:2016-10-06 18:23:08

标签: amazon-web-services amazon-dynamodb

如何限制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种不同的用户类型

  1. 客户(访问自己的数据)
  2. 商家(自己的数据和对客户数据的访问权)
  3. admin(访问所有数据)
  4. 我认为我必须创建3个不同的userPools,如果我错了,请纠正我。

    但是如果我使用分区键作为userId,则无法限制对自己数据的访问 然后查询商家变得困难。

    有关如何处理此数据库设计的任何建议?

    感谢名单

0 个答案:

没有答案