基于角色的权限控制模型RBAC

RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。 在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限。 RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离,极大地方便了权限的管理。

User(用户):每个用户都有唯一的UID识别,并被授予不同的角色。 Role(角色):不同角色具有不同的权限。 Permission(权限):访问权限。 用户-角色映射:用户和角色之间的映射关系。 角色-权限映射:角色和权限之间的映射。

2.1 RBAC0

在该模型中,用户和角色之间可以是多对多的关系,即一个用户在不同场景下是可以有不同的角色,例如:项目经理也可能是组长也可能是架构师。同时每个角色都至少有一个权限。这种模型下,用户和权限被分离独立开来,使得权限的授权认证更加灵活。

2.2 RBAC1

基于RBAC0模型,引入了角色间的继承关系,即角色上有了上下级的区别。角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种模型适合于角色之间层次分明,可以给角色分组分层。

2.3 RBAC2

RBAC2,基于RBAC0模型的基础上,进行了角色的访问控制。

RBAC2中的一个基本限制是互斥角色的限制:对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。

互斥角色 :同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。互斥角色是指各自权限互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。常举的例子:在审计活动中,一个角色不能同时被指派给会计角色和审计员角色。

基数约束 :一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配。例如公司的领导人有限的;

先决条件角色 :可以分配角色给用户仅当该用户已经是另一角色的成员;对应的可以分配访问权限给角色,仅当该角色已经拥有另一种访问权限。指要想获得较高的权限,要首先拥有低一级的权限。就像我们生活中,国家主席是从副主席中选举的一样。

运行时互斥 :例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。

3如何设计RBAC

RBAC执行流程:

4数据权限

数据权限比较好理解,就是某个用户能够访问和操作哪些数据。

通常来说,数据权限由用户所属的组织部门来确定。比如:投前组的成员只能看自己创建的投前项目,不能看到投后项目;投后组能看到自己创建的投后项目,以及投后项目关联的投前项目,还有自己参与的其他投后组成员创建的投后项目;而投资部部长却可以看到所有的投前投后项目。—>这只是查看的数据权限。还有其他的编辑,评论,流程变更的消息推送的数据权限,等等。。。 在投资并购业务系统中,数据权限更加复杂。数据权限的控制通常是由程序员书写个性化的SQL来限制数据范围的。

经验分享 程序员 微信小程序 职场和发展