基于角色和颗粒操作的自定义通用权限管理模型研究

2017-01-21 14:41赵君熊燕妮
软件导刊 2016年12期

赵君+熊燕妮

摘 要:权限管理系统是软件系统的核心部分,涉及到数据的安全和保密性。针对传统基于角色的访问控制RBAC(Role-Based Access Control)模型中角色管理不灵活、与其它系统耦合性高且通用性低的缺点,提出一种基于角色和颗粒操作RPO(Role-Particle-Operation)的自定义通用权限管理模型。该模型耦合性低,角色和颗粒操作完全可以由用户自定义,支持无限级权限,并独立于其它软件系统,具有高通用性,可以为几乎所有软件系统提供权限管理接口。

关键词:权限管理;RPO;无限级权限;高通用性

DOIDOI:10.11907/rjdk.162122

中图分类号:TP301

文献标识码:A文章编号:1672-7800(2016)012-0014-02

0 引言

随着软件系统功能越来越多、规模越来越大以及模块化要求越来越高,管理信息系统对各类信息资源的访问与控制以及对各类用户群体的管理也越来越复杂。因此最初基于用户的权限管理被基于角色的访问控制RBAC(Role-Based Access Control)模型所替代,用角色代替用户是此模型的一大创新,减少了管理员在大量用户系统中要为每个用户分配权限的繁冗操作[1],但是此模型的缺陷是对角色权限的划分比较模糊和僵化,粒度较粗。最为重要的是,当系统升级或者权限发生改变时,仍然需要修改系统的源代码,这与“高内聚低耦合”的软件设计理念相矛盾,会给软件升级和软件维护带来巨大的额外开销。因此提出一个通用的、可以为几乎所有软件系统提供权限管理接口的模型尤为必要[2]。

1 通用权限管理模型总体思路

1.1 传统模型的缺陷

权限管理的实质是系统根据用户U的权限来限定其能访问的资源R和进行的操作O,这里的U、R和O均为集合,其中U={u1,u2…ui},R={r1,r2…rj},O={o1,o2…ok},权限集合P可以定义为P=O*R,P中有j*k个元素,那么系统中可能出现的权限子集的最大数为2*j*k,包括空集(无任何权限)和P本身(具有所有权限)[3]。如果U集合中有i个用户,那么在基于用户的访问控制模型中,系统开发者要为i个用户设计和分配权限的最大工作量为W=2*i*j*k,这是一个艰巨的任务。最关键的是,在实际的用户访问控制中,i,j,k经常发生变化,系统开发者需要修改代码,给后期维护带来不便[4]。

RBAC是基于用户权限控制模型的升级版,在RBAC中,多个具有相同权限的用户被归并为同一个角色,这样由用户集合U延伸出角色集合R′,R′={r′1, r′2…r′m}[5],m≤i,改进之后的工作量虽然有所减轻,但是因为权限的定义固化在程序里,所以仍不能从根本上解决问题。

1.2 RPO模型的特点

如果要从根本上解决问题,则需要将权限设置交给客户,将权限管理模块从软件系统中剥离出来[6]。但是一个成熟的系统在使用上不能包含太多技术细节,所以这种设计的难点在于如何将以前只能由代码完成的复杂功能变成可以由鼠标点击完成的图形界面操作[7]。RPO模型即为完成这种转换设计的新型模型。

在RPO中,要想实现自定义权限的通用管理,必须首先将角色、资源和操作完全独立,并且充分颗粒化[8],然后设定R′对O与R笛卡尔积的访问控制即可实现RPO模型,如图1所示。

RPO模型中,R′、O和R均为用户自定义,不由系统开发者设计,这样才符合“自定义”的要求;但要做到“通用”,必须使O和R充分地颗粒化,即不可再细分[9]。

2 RPO设计

2.1 角色集合R′的定义

3个集合中,R′的定义最简单,因为客户对业务逻辑中的角色最清晰[10]。角色的定义如表1所示。

2.2 操作集合O的定义

操作即为用户在系统中可以执行的动作,在RPO中,操作必须是不可再分[11]或者是在本系统中不可再分的颗粒,比如“物理教师编辑学生成绩”中的动词“编辑”则不满足要求,因为“编辑”还可以细分为增加、修改和删除。所以O在定义上较R′要复杂一些[12]。操作集合O的定义如表2所示。

2.3 资源集合R的定义

相对于R′和O,R的定义最为复杂,因为R′和O中的元素彼此之间没有关系,且都是颗粒性质不可细分的,用表1和表2中的二维表即可定义[13]。而R中的资源可能有多层包含关系,例如年级包含班级,班级包含学生,所以用二维表定义可读性差、维护困难[14]。本模型中设计的定义方式是目录树。在目录树中,所有资源,无论是集合还是元素都被定义为目录,这里充分应用了软件中抽象的思想[15]。目录的可多层包含性实现了权限的无限极特性,为本模型提供了良好的实用性和灵活性[16]。

3 RPO通用权限管理模型调用

本模型总共包括5个功能模块:用户管理、角色管理、目录管理、颗粒操作管理[17]和角色权限管理。模型功能结构如图2所示。

因为所有功能均为自定义,且具有低耦合性,所以本模型可以独立于其它软件系统运行,并提供权限管理接口供其它系统调用。其它系统将加密后的信息通过网络发给本模型[18],本模型处理后将结果加密后返回给其它系统,调用流程如图3所示。

本模型支持多系统调用,每个系统的角色、目录和操作均独立,管理员可以在自己的业务范围内管理角色、目录和操作,系统之间互不干扰,真正实现了调用的通用性。

4 结语

传统的权限管理模型将用户、资源和操作集成或者捆绑在代码中,虽然能够解决权限分配和系统安全的问题,但是在可维护和可扩展方面存在巨大弊端,改进后的RBAC模型将角色取代用户,降低了工作量,可是仍不能从根本上解决系统维护和扩展问题。本文提出了RPO自定义通用权限管理模型,该模型将角色、资源和操作从代码中独立出来,由之前的代码定义变为用户自定义,极大地提高了可维护性和可扩展性。并且该模型独立于软件系统,可以被其它系统方便地调用,真正实现了通用性。

参考文献:

[1] 李昕昕,严张凌,王赛兰.改进的基于角色的通用权限管理模型及其实现[J].计算机技术与发展, 2012,22(3):240-244.

[2] 鲍可进,彭刨.一种扩展的Android应用权限管理模型[J].计算机工程, 2012,38(18):57-64.

[3] 李东,施懿闻,郝艳妮,毛基业.科学基金管理系统的用户权限管理模式研究[J].计算机技术与发展, 2012,22(2):159-164.

[4] 王少辉,王超,孙国梓.DroidDefence:细粒度的Android 应用权限管理系统[J].四川大学学报:工程科学版, 2014,46(6):14-18.

[5] 王非,李凝,侯平路,等.基于角色权限管理的B/S与C/S模式相结合的教务管理系统安全体系的研究与设计[J].辽宁师范大学学报:自然科学版, 2012,35(4):488-492.

[6] 王居柱,侯彤璞,孙明柱.基于Struts-Hibernate架构的权限管理系统的设计与实现[J].计算机与数字工程, 2011,39(4):101-105.

[7] 张伟.基于逻辑程序的RBAC模型研究[D].北京:北京大学,2013.

[8] 刘强,王磊,何琳.RBAC模型研究历程中的系列问题分析[J].计算机科学, 2012,39(11):13-18.

[9] 曾锡山,陈振洲.基于对象属性约束权限控制研究与实现[J].华南师范大学学报:自然科学版, 2016,48(2):111-115.

[10] 罗求,丁滟,陈松政.一种基于管理员分权的用户特权提升机制[J].计算机工程, 2016,42(4):27-36.

[11] 李天鸣,何月顺.基于ExtJS技术与SSH框架的权限管理研究[J].计算机应用与软件, 2011,28(5):165-205.

[12] 范明虎,樊红,伍孝金.ASP.net中基于RBAC的通用权限管理系统[J].计算机工程, 2010,36(1):143-145.

[13] 吴波,王晶.基于基本RBAC模型的权限管理框架的设计与实现[J].计算机系统应用, 2011,20(4):50-54.

[14] 高丽丽,王琼.基于角色的访问控制在OA系统中的应用[J].软件导刊,2016,15(3):157-158.

[15] 赵明斌,姚志强.基于RBAC的云计算访问控制模型[J].计算机应用, 2012,32(S2):267-270.

[16] 张磊,张宏莉,韩道军等.基于概念格的RBAC模型中角色最小化问题的理论与算法[J].电子学报, 2014,42(12):2371-2378.

[17] 蒋辉,李敬辉,魏巧玲.基于RBAC模型的通用权限管理系统分析与设计[J].软件导刊,2016,15(3):120-123.

[18] CHE TIANWEI,MA JIANFENG,LI NA,et al.Security analysis of access control model in hybrid cloud based on security entropy[J].High technology letters,2015,21(2):200-204.

(责任编辑:陈福时)