使用 AWS 无服务器后端为 React 应用程序动态分配用户权限

Dynamically assigning user permissions for a react app with an AWS serverless backend

对于上下文,我构建了一个笔记应用程序以及无服务器堆栈:https://serverless-stack.com

基本上我有一个笔记应用程序,它允许用户写笔记,然后在仪表板上看到他们写的所有笔记作为提要。该数据库是一个 DynamoDb table,它根据 userId 查询 return 将填充提要的所有注释的列表。

我想弄清楚的是如何动态分配哪些用户可以查看笔记。例如,该应用程序将有用户 A、B 和 C。用户 A 写了一条便条,然后他允许用户 C 查看但不允许用户 B。

实现此目标的最佳方法是什么?我已经查看了一些基于角色的访问控制选项,但我认为这在我正在尝试做的事情的上下文中不起作用,因为在那种情况下会有太多假设 "roles"处理所有可能的访问组合,尤其是随着用户数量的增长。

我的另一个想法是保留一个单独的 DynamoDb table 来存储笔记和可以看到它们的各种用户之间的关系。所以架构会是这样的:

noteId | userId | visibility
-------|--------|-----------
  1    |   A    |   Yes
-------|--------|-----------
  1    |   B    |   No
-------|--------|-----------
  1    |   C    |   Yes

并且必须更新对 return 可用笔记的查询以填充可见性设置为 true 的笔记。

这是管理用户权限的好方法吗?不确定此选项是否可以很好地扩展。

想出一个适合您所有用例的完整模型就太过分了。不过,还是希望能指点一下。

要在 Amazon DynamoDB 中建模数据,考虑访问模式是有意义的。他们可能是以下,也许更多:

  1. 获取特定用户拥有的所有笔记
  2. 获取特定用户可见的所有笔记
  3. 获取具体说明

鉴于这些模式,有多种方法可以使用 DynamoDB table 结合二级索引对数据进行建模。请查看以下链接以获取建模指导: