2016-12-26-RBAC模型

来源:互联网 发布:matlab 符号矩阵 编辑:程序博客网 时间:2024/06/05 13:27

一、前言

 

    权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本上都是以RBAC为基础进行扩展的,我们今天就将RBAC权限模型进行下介绍。 

 

二、RBAC模型

 

    RBAC是Role-BasedAccess Control的英文缩写,意思是基于角色的访问控制。RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,whowhathow构成了访问权限三元组,也就是“Who对What(Which)进行How的操作,也就是“主体”对“客体”的操作,其中who——是权限的拥有者或主体(如:UserRole),what——是资源或对象(ResourceClass)

 

    RBAC其实是一种分析模型,主要分为:基本模型RBAC0(Core RBAC)、角色分层模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)。

 

1RBAC0

 

    RBAC0,它是RBAC0的核心,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。RBAC0定义了能构成RBAC控制系统的最小的元素集合,RBAC0由四部分构成:


    a、用户(User

    b、角色(Role

    c、会话(Session

    d、许可(Pemission,其中许可又包括“操作”和“控制对象”其中许可被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的许可。会话是动态的概念,用户必须通过会话才可以设置角色,是用户与激活的角色之间的映射关系。

 


 

    图中,用户与角色是多对多的关系;角色和许可也是多对多的关系;用户与会话是一对一关系;会话与角色是一对多关系;

 

 

2RBAC1

 

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

 


 

3RBAC2

 

   RBAC2,它是RBAC的约束模型,RBAC2也是建立的RBAC0的基础之上的,在RBAC0基础上假如了约束的概念,主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)

 

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

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

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

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

 

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

 


 

4RBAC3

 

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

 


 

 

    以上就是RBAC模型的四种设计思想,现在我们用的权限模型都是在RBAC模型的基础上根据自己的业务进行组合和改进。

 

三、我的模型

 

用户信息表

    在原有的基础上用户数据库的表的基础上,添加了电话、邮箱和备注字段,原本还有个人签名字段,但由于是添加的是管理员用户,因此这个字段没有必要,删除之。

角色信息表

    角色信息表的字段有Id,角色名、角色说明和备注字段,本来有状态字段,因为设计时想着用户和角色有着多对多的关系,删除了。

权限信息表

    权限信息表主要存储z角色的操作权限与操作对象,分为操作对象字段PermissonName,有关于操作对象的操作增删改查四个字段,还有就是remark字段放备注。

总结

    本以为用户-角色中间表和角色-权限中间表需要手动创建,但事实是不需要,这块需要修改,明天需要修改完毕。

1 0
原创粉丝点击