理解什么是Web后台的RBAC模型

一般的Web项目,都有分管理员和用户,其中就需要有不同的权限。

权限就是对项目资源的控制,对web应用来说,也就是对url的控制,你这个使用者能看到多少页面,操作多少功能。

不同Web项目系统关于权限的应用复杂程序不一样,现在比较流行的权限模型,基本上都是以RBAC模型为基础进行扩展的。


一、

RBAC,Role-Based Access Control,基于角色的访问控制。

可以理解为:Who对What进行How的操作,其中

who——是角色的拥有者(如:UserRole

what——是资源或对象(ResourceClass)

how——是角色,不同的角色拥有不同的资源和权限

 


二、

RBAC其实是一种分析模型,主要分为:

- 基本模型RBAC0(Core RBAC)、

- 角色分层模型RBAC1(Hierarchal RBAC)、

- 角色限制模型RBAC2(Constraint RBAC)、

- 统一模型RBAC3(Combines RBAC)

 

RBAC0,它是RBAC0的核心,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。

RBAC0定义了能构成RBAC控制系统的最小的元素集合,RBAC0由四部分构成:

    a、用户(User

    b、角色(Role

    c、会话(Session

    d、许可(Pemission

其中许可Permission又包括“操作”和“控制对象”。其中许可Permission被赋予角色Role,而不是用户User,

当一个角色Role被指定给一个用户User时,此用户User就拥有了该角色Role所包含的许可Permission。

会话Session是动态的概念,用户必须通过会话才可以设置角色,是用户与激活的角色之间的映射关系。

RBAC1,它是RBAC角色的分层hierarchy模型,RBAC1建立在RBAC0基础之上,在角色中引入了继承prototype的概念,有了继承那么角色Role就有了上下级或者等级关系

RBAC2,它是RBAC的约束Constraint模型,RBAC2也是建立的RBAC0的基础之上的,在RBAC0基础上加入了约束的概念,

主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)

静态职责分离SSD:

是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:

a、互斥角色:同一个用户在两个互斥角色中只能选择一个

b、基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的

c、先决条件约束:用户想要获得高级角色,首先必须拥有低级角色

动态职责分离DSD:

是会话和角色之间的约束,可以动态的约束用户拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。

RBAC3,它是RBAC1RBAC2合集,是既有角色分层又有约束的一种模型


基本上,普通的web项目应用,

只需要在数据库新建一张role表、user表、resource表、role_resource_rel表、role_user_rel表即可表示DBRA模型

原文地址:https://www.cnblogs.com/hoanfir/p/9088668.html