如何将 Cognito 中的用户与其在 DynamoDB 中的数据连接起来?

nin*_*Tan 5 amazon-web-services amazon-dynamodb amazon-cognito

我正在尝试在我的 Vue.js Web 应用程序中实现一个解决方案,通过 AWS Cognito 对用户进行身份验证。我使用 DynamoDB 作为后端数据库。我想要实现的目标是将经过身份验证的用户与其在 DynamoDB 中相应的表/集合(以及仅其相应的资源)连接起来。所以基本上,一旦用户登录,他们就会在自己的帐户中看到自己的数据库表。

就我的研究而言,这将是对 IAM 策略的利用,即每个用户都被授权访问 DynamoDB 上的特定资源。

到目前为止我所做的:

1-创建用户池

2-创建身份池

3- 连接用户和身份池。

4- 现在可以注册并登录用户。用户登录后会被分配一个令牌。

所以我的主要问题是如何使用此令牌仅扫描/查询该用户的表?

我能想到的最好方法是使用特定的 Cognito 用户 ID 作为他们在 DDB 中的表名。然后在应用程序中,一旦用户通过身份验证,如果他们的用户 ID 与其 DDB 表名称匹配,他们就可以读取该表。

做到这一点的最佳方法是什么?

nin*_*Tan 2

对于那些寻找答案的人,您可以通过多种方式使用 DynamoDB 实现所谓的细粒度访问控制:

  1. 正如 @hephalump 所提到的,您可以创建一个 IAM 策略,该策略基本上使用用户的 Cognito 身份 id(不同于 Cognito id 或 sub )作为 DynamoDB 表中的哈希键。该策略会检查请求者的 Cognito 身份 ID 是否与他们尝试访问的记录的哈希键相匹配。如果是,他们将有权访问该记录,如果不是,他们将被拒绝访问。阅读更多
  2. 另一种方法是创建 AppSync API 并使用所有者字段根据登录用户限制访问。除了启用细粒度的访问控制之外,您还将拥有 GraphQL API 的优势。更多内容请参见此处此处