最近我一直在考虑在我的应用程序中使用的最佳访问控制模型。我一直在阅读 RBAC 并且角色概念很好(特别是如果您拥有大量不同的权限),但是,我不确定它对分层用户管理的适用性如何,如下所示:
每个用户都属于一个或多个组。组被组织成一棵树(如目录结构)。组和用户都可以被分配权限(或角色,如果我们在谈论 RBAC)并且可能应该有某种继承(即用户和组继承他们所属组的权限)和覆盖功能。群组本身的目的不仅仅是权限管理——它们在应用程序中还有其他用途。
我想如果在没有角色的情况下使用权限(“角色”是 RBAC 术语中的权限集合),上述所有内容对于进一步设计和实施都不会造成太大问题,因为权限非常精细,而角色更加单一。在组/用户级别实现权限继承/覆盖不会太困难。对角色做同样的事情可能会更棘手,但另一方面,角色对于普通用户来说更容易理解。
现在,我自己更倾向于“仅限权限”模型,因为:
- 该应用程序可能不会拥有超过 30 种不同的权限;
- 组本身可用于设置权限,这已经提供了角色的优点之一 - 易于对多个用户进行权限管理
- 这个概念看起来很清晰,因此很容易实现
但是,如果向我展示了一个逻辑且易于理解的基于角色的模型,它比“仅权限”模型具有优势,我会认真考虑一下。是否有任何定义明确的 RBAC 模型(论文、实现等)已经可用,可以应用/适应上述要求(我已经搜索了一段时间,但我发现的那些要么限制性太强,要么没有'不考虑分级用户管理)?您对此事的总体看法是什么?在这种情况下,RBAC 值得吗?