【问题标题】:How to use dynamodb:LeadingKeys when Partition key has more than one kind of values如何使用 dynamodb:LeadingKeys 当分区键具有多种值时
【发布时间】:2021-04-03 06:02:47
【问题描述】:

我的 Dynamo 表在我的多租户应用程序中将 tenant_id 作为分区键,但我的分区键中除了 tenant_id 之外还有其他类型的实体。

例如:(这是一个小例子,我们一直在使用这种模式)

PK                                        SK                               Att
Customer-4312a674-54a                  user-abc                            672453782
user-abc                                   user-abc                            672453782

我想使用dynamodb:LeadingKeys 来确保一个租户的数据永远不会被另一个租户访问。在这种情况下,当PK 超载并且其中还包含其他实体时,我该如何处理。

【问题讨论】:

  • 只是澄清一下:租户需要访问这两种类型的信息(即那些有租户 ID 前缀的和没有的)?我的一般建议是使用租户 ID 作为所有租户特定数据的前缀。对于租户之间共享的数据,您可以添加带有允许的单独策略声明。
  • 我不知道它是怎么做的,如果它是属于该租户的 每个 项目的前缀,但我想这取决于您拥有的访问模式。我的假设是,当您进行任何查询时,您的租户 ID 存在,因为它似乎是一个面向用户的系统,并且可能是会话信息的一部分,因此可以构造正确的密钥。
  • 这回答了我的问题。谢谢
  • 很高兴听到这个消息,我会添加它作为答案。

标签: amazon-web-services security amazon-dynamodb multi-tenant saas


【解决方案1】:

在多租户系统中,我的建议是将租户 ID 作为前缀添加到属于租户的 所有 项的分区键。这样您就可以使用dynamodb:LeadingKeys 条件进行访问控制。

无论如何,每个查询的租户 ID 都应该在查询时知道,我的猜测是它可能存储在会话信息中。这意味着您可以将租户 ID 添加到每个 Key 并仍然进行分区键重载。

【讨论】:

猜你喜欢
  • 2022-01-03
  • 1970-01-01
  • 2011-09-13
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多