我有一个SaaS服务,多个用户可以协作。之前,同一订阅账户下的用户可以共享同一个数据库,并且可以互相查看/编辑/删除其中的所有内容。
现在,我想要实现一个权限系统,使得用户只能进行特定操作,例如查看、编辑、更新和删除内容(在我的SaaS系统中,内容主要是客户卡片列表)。
我的第一个想法是使用RBAC技术,定义角色和不同操作的位掩码,例如:
- 查看客户卡片 - 更新客户卡片 - 删除客户卡片 - 添加客户卡片
这些权限与单个卡片实例无关,而是通用的用户可以执行的操作。其中第一个(查看)似乎是必需的,因为没有能够查看任何卡片就无法使用该系统。
不幸的是,我认为我还需要某种每张卡片的权限。例如,管理员用户可能希望让给定用户仅查看卡片的子集,而不是所有卡片。或者管理员用户可能允许一组用户在特定卡片(或特定卡片)上进行协作,从而将卡片列表分区成多个用户。无论哪种情况,我从未遇到过非管理员用户可以为自己或其他用户设置此类权限的情况。
RBAC足以表达这种需求吗?还是我需要切换到ABAC?
现在,我想要实现一个权限系统,使得用户只能进行特定操作,例如查看、编辑、更新和删除内容(在我的SaaS系统中,内容主要是客户卡片列表)。
我的第一个想法是使用RBAC技术,定义角色和不同操作的位掩码,例如:
- 查看客户卡片 - 更新客户卡片 - 删除客户卡片 - 添加客户卡片
这些权限与单个卡片实例无关,而是通用的用户可以执行的操作。其中第一个(查看)似乎是必需的,因为没有能够查看任何卡片就无法使用该系统。
不幸的是,我认为我还需要某种每张卡片的权限。例如,管理员用户可能希望让给定用户仅查看卡片的子集,而不是所有卡片。或者管理员用户可能允许一组用户在特定卡片(或特定卡片)上进行协作,从而将卡片列表分区成多个用户。无论哪种情况,我从未遇到过非管理员用户可以为自己或其他用户设置此类权限的情况。
RBAC足以表达这种需求吗?还是我需要切换到ABAC?