权限管理——RBAC应用
2015-10-18 20:35
417 查看
一、权限管理的访问控制
权限管理,一般指控制用户的访问权限,使得用户可以访问而且只能访问自己被授权的资源,不能多也不能少。现在的软件系统里基本上都用到了权限管理,只是控制的粒度、层面和侧重点会有所不同,比较完善的权限管理包括四个方面的访问控制:1.功能(最基础):以用户完成某一功能为准。如“添加用户”、“删除用户”
2.数据:比功能访问权限的控制粒度更小,如“管理员可看到比一般用户更多的信息”
3.时间:给访问权限添加时间控制,让访问的资源在某一时间段中可用。如”12306只能在7:00-23:00时间段内购票“
4.空间:给访问权限添加空间控制,根据访问用户的空间位置不同,而对用户的访问资源进行限制。如”很多人都在问,为什么在中国上不了facebook……“
二、设计理念
权限管理的设计理念有很多,像ABAC(基于属性的访问控制)、ACL(基于资源的访问控制)、RBAC(基于资源的访问控制)、GBAC(基于组的访问控制)等等,它们各有利弊,现在最常用的是RBAC,理论较完善。1.基于资源的权限控制——ACL
ACL(Access Control List)访问控制列表,是最早也是最基本的一种访问控制机制,它的权限控制是围绕”资源“展开的,即每一项资源,都配有一个列表,这个列表记录的是哪些用户可以对这些资源进行哪些操作这种访问控制非常简单,只要把用户和资源连接起来就行了,但是当用户和资源增多时,就会产生大量的访问权限列表,管理这些访问控制列表本身就是一件非常繁重的工作,这样便使得ACL在性能上无法胜任实际应用,所以说性能是硬伤。
2.基于角色的权限控制——RBAC
RBAC(Role-Based Access Control)基于角色的访问控制,在这种访问控制机制中,引入了Role的概念,将用户与权限之间的关系进行了解耦,让用户通过角色与权限进行关联。在RBAC模型中,who、what、how构成了访问权限三元组,即”who对what进行how的操作“。一个用户可有多种角色,每一种角色拥有多个权限,在用户与角色、角色与权限之间,都是多对多的关系。通过给用户分配角色,使得用户拥有对系统的部分使用权限。在实际设计的过程中,可让角色和资源直接进行绑定,权限控制体现在角色与资源的关联上
角色,是一定数量的权限集合,也可看成是对拥有相同角色的用户进行的分类。
3.引入”组“概念的权限控制——RBAC
这种方案是比较简单的权限管理,一般情况下这样的设计已经足够了,但是如果要给一组用户直接分配权限的话就有问题了,所以又引入了用户组的概念。用户组,是一组用户的集合,一个用户组拥有多个权限。
通过用户组的启发,其实我们也可以增加角色组、资源组等等各种组,实现相应的继承功能。不过这样就有点繁琐了,还是用的时候根据实际需求权衡吧。
三、基于RBAC的权限管理
在上边的分析中,得出了一种包含用户、角色、资源、组等几个主体的权限管理,它们之间的关联都是多对多的,由此得到的ER图如下:RBAC权限管理模型在加入”组“概念后,在实现继承功能的基础上,更加灵活的适应了需求的变更。它主要的配置为:用户-角色配置、用户-用户组配置,角色-资源配置,用户组-资源配置,这些配置对应到数据库中就是两个主表之间的第三张表,里边存储的是用户操作的记录,服务于主表以供查询。
相关文章推荐
- android-自定义ImageView-圆形图片绘制代码详解
- hdu 4496 D-City
- 第六周学习报告
- BZOJ1000-1010
- 第一行代码的最后coolweather的项目实战
- android---(ViewPager)
- 二进制中1的个数
- 感谢自己的不完美
- 四则运算扩展
- 第六周--数据结构【线性表(二)链表】项目之链栈
- Javascript(函数)
- 函数式编程
- 二叉搜索树
- 读书:C和指针14章-预处理器
- Java 反射简介
- 初识UFT
- Tsinghua OJ:祖玛(Zuma)
- HP Unified Functional Testing的使用
- zjnu(1175)——合唱队形【基础算法・动态规划】
- 进程与线程的一个简单解释