【发布时间】:2019-12-30 20:33:42
【问题描述】:
我有一个 SaaS 服务,多个用户可以在其中相互协作。到目前为止,同一订阅帐户下的用户可以共享同一个数据库并查看/编辑/删除彼此的所有内容。
现在我想实现一个权限系统,这样用户可能只能执行特定的操作,例如查看、编辑、更新和删除内容(在我的 SaaS 系统上,内容主要是客户卡的列表)。
我的第一个猜测是使用 RBAC 技术,定义角色和不同操作的位掩码,例如
- 查看客户卡片
- 更新客户卡
- 删除客户卡
- 添加客户卡
这些权限与单个卡片实例无关,而是用户可以执行的通用操作。第一个(查看)似乎无论如何都需要,因为如果看不到任何卡片就无法使用系统。
不幸的是,我认为我还需要某种单卡权限。例如,管理员用户可能希望让给定用户仅查看卡片的子集,而不是所有卡片。或者管理员用户可以允许一组用户在特定卡(或特定卡)上进行协作,从而有效地将卡列表划分给用户。无论如何,我从未遇到过非管理员用户可以为自己或其他用户设置此类权限的场景。
RBAC 是否足以表达这样的要求?还是我需要切换到 ABAC?
【问题讨论】:
标签: database-design permissions user-permissions rbac abac