张靖康,石宇良,王海豹
(北京工业大学 软件学院,北京 100022)
当前,随着电子政务的普及和高速发展,越来越多的政府部门和企业都开始争相采用工作流技术来有效的推进各个部门或单位的电子政务建设。由于电子政务系统所涉及的各种职能人员较多且组织结构往往都较为复杂,再加之政府内部信息的高机密的性质对系统的安全性提出了很高的要求。那么如何保证系统安全,保证系统数据安全,以及保证合法用户访问正确的数据就显得非常重要。所以设计一套完整的,便捷的,可靠的用户访问控制策略是电子政务系统建设中最为关键的一步。
传统的自主访问控制 (DAC,Discretionary Access Control)、强制访问控制(MAC,Mandatory Access Control)策略都是用户通过对权限的直接操作来实现权限控制,它们的灵活度并不能适应在工作流的系统环境下用户的动态变化以及用户权限的经常性变更。
1992年由Ferraiolo等人[1]提出的基于角色的访问控制(Role-Based Access Control,RBAC)的模型第一次将角色作为用户和权限之间的媒介。而由Sandhu等[2]在1996年提出的最具代表性的RBAC96模型为现在的RBAC模型的普及奠定了基础。由于该模型实现了通过引入角色的概念将用户与访问权限分离,从而有效的降低了对访问控制的复杂度以及很好的适应工作流系统灵活的特点。
由于RBAC是以主体为中心的访问控制模型,因此近年来对RBAC的扩展研究大多集中于角色,对组织机构的研究。2009年,李细雨等人[3]将粒逻辑的思想引入RBAC模型中,提出了基于粒计算角色访问控制模型 (G-RBAC);2010年陈琛,陈学广等[4]提出了改进的RBAC细粒度模型(FG-RBAC);2011年张盈谦,孙斌等[5]提出基于AOP的细粒度RBAC模型。然而,遗憾的是,这些模型的改进都是基于角色的细化,根据访问客体设置角色。导致权限和角色数量的成倍甚至指数倍的增加,使得用户管理越来越复杂。本文在RBAC模型的基础上通过权限与系统模块相结合,引入系统访问页面与访问权限绑定的理念,来减少授权管理的复杂性,降低管理开销。
RBAC模型的基本思想是:引入了角色的概念,是用户主体与访问权限实现松耦合,用户与角色连接之后,权限不是直接赋予给用户,而是赋予给角色,通过用户所扮演的角色来拥有的访问权限。在NIST (The National Institute of Standards andTechnology,美国国家标准与技术研究院)标准RBAC模型中,主要由4个部件模型组成,包括基本模型RBAC0 (Core RBAC)、 角色继承模型 RBAC1(Hierarchal RBAC)、角色限制模型 RBAC2(Constraint RBAC)和统一组合模型RBAC3(Combined RBAC)。图1所示基于标准的RBAC模型。
图1 标准的RBAC模型Fig.1 Standard RBAC model
基本的RBAC模型是由用户、角色、权限、会话这4个数据元素,角色分配、权限分配这两种分配关系,角色层次结构以及作用于各部分之上的约束条件组成。角色层次结构是在RBAC1模型在RBAC0的基础上引入的,在数学上是一种偏序关系,直观上体现为角色间的继承关系,即高级角色继承低级角色的权限。如果角色继承关系是一个绝对偏序关系,允许角色之间的多继承那么这种角色继承关系为一般继承关系。不过有时低级角色的某些权限拒绝被高级角色继承,这时就要求角色继承关系是一个树结构。这种继承关系叫受限继承。约束条件是在RBAC2模型中引入,也就是角色约束模型。它规定了用户赋予角色时,角色赋予权限时或者用户在某一时刻激活一个角色时所应遵循的强制性规则,一般最常见的规则为互斥角色关系,互斥权限关系等。RBAC3模型实际上是RBAC1模型和RBAC2模型的综合。
虽然RBAC模型通过引入角色概念令其具了高灵活性和易维护性,但由于该模型中用户与角色,角色和权限之间的多对多关系,使其在系统中的应用实现比较繁琐。并且目前多数对于RBAC的授权管理模型的研究尚不完善,导致一些问题仍然没有解决,首先是大型系统中权限粒度与角色数量的矛盾。权限粒度越小,角色数量越多,角色数量的增长与权限粒度的细化成指数增长。其二、RBAC本质上是个被动安全模型,缺乏灵活动态的授权机制[6]。
近年来随着信息技术的发展,B/S应用模式的系统迅速增加并成为当前信息系统的主流应用模式,RBAC模型在WEB应用中实现的繁琐性也越来越明显。在一般的电子政务系统中无论是它的用户数量、角色种类、操作权限,还是系统的功能、显示的页面都十分复杂。图2为传统B/S系统设计中RBAC模型对应的实体-关系模型图[7]。
图2 用户权限管理E-R模型Fig.2 E-R model of user permission management
模型中除了用户与角色、角色与权限之间的多对多关系以外,又增加了页面与功能实体之间的多对多关系。这些复杂的关系使得模型在系统中实现变得更加复杂。但是,如果能够按照一定的页面设计原则将页面与用户所属角色具有的权限与所能访问的功能对应到系统中允许被访问的某个页面或者某组页面操作上面去,那么就可以通过动态的控制这些页面对特定用户的可见性来实现用户权限的管理。从而大大简化上图所示的用户权限管理模型。因此本文针对RBAC模型的不足,提出了基于导航树页面的RBAC模型(如图3所示)。
图3 基于导航树页面的RBAC模型Fig.3 RBAC model based on navigation tree and page
导航树的引入是为了能够更好的动态呈现角色权限所对应的页面索引,从而使得用户方便、快捷、直观的与系统进行交互。而页面的设计应该遵守以下原则:对于一个页面要实现的功能,应该有尽量细粒度的划分,确保在某一页面上实现的一个或者多个功能只对应某一权限所允许的访问。本模型的核心理念是将权限与应用系统的导航菜单关联起来,根据页面设计原则,一项权限对应导航树中的一个节点同时映射底层一个页面。用户在登录系统时,根据不同的用户及其权限对导航树进行动态修改,通过导航树屏蔽用户无权访问的操作页面,从而达到应用系统的安全访问。
文中采用LDAP作为访问控制方案的信息模型,来存储用户、角色、权限等信息。LDAP(Lightweight Directory Access Protocol)即轻量目录访问协议。它是一个基于X.500标准且用来发布目录信息到许多不同资源的协议。LDAP的目录服务的目标是快速响应和大容量查询,由于LDAP对读操作进行了优化,其数据读取速度比关系数据库快一个数量级,因此非常适合用户对数据频繁的查询操作,而对数据的更新请求相对较少的情况。另一方面LDAP目录结构的树状信息模型更适合操作逻辑上呈现树型结构的数据,比用关系数据库存储这些数据更加直观。
LDAP中的数据是以目录树的形式存放的。树中的每一个节点称为目录项(Entry)。一个目录项由若干个属性构成。属性又通过一个属性类型和一个或多个属性值表示。根节点到每个目录项的路径称为DN(DistinguishedName,简称DN),它用来唯一标识树中的节点。具有相同属性的一组目录项组成一个对象类,对象类规定了目录项中的属性类型。对象类中的属性可以相互继承[8]。
一个条目通过它的DN被引用。该DN使用如下方式构造:首先得到条目自己的名称(相对DN,简称RDN),然后连接上其祖先条目的名称。比如管理员,具有一个RD:cn=admin,祖先条目为 ou=users,dc=partment,dc=com,dc=cn。 则DN 为:cd=admin,ou=users,dc=partment,dc=com,dc=cn。 本模型的LDAP目录树如图4所示。
图4 LDAP目录树Fig.4 LDAP directory tree
用户条目由用户标识userId、用户名username、用户密码 password、用户创建者 creater、用户描述 description、用户有效性标识enable、用户所属角色标识roleId以及用户电话号码Tel、地址address等扩展属性组成。每个用户通过roleId的值与角色条目建立多对多映射关系,同时roleId的值也指定为了角色条目在LDAP中的位置。用户有效性标识可以用来识别该用户是否被禁用。角色条目由角色标识 roleId、角色描述 description、 拥有权限标识seeAlsoRight、角色有效性标识enable以及角色扩展字段等属性组成。每个角色的通过seeAlsoRight属性值与权限建立多对多的映射关系。角色有效性标识可以用来识别该用户角色是否被启用。
RBAC-NTP模型中角色权限与导航树是相互映射的一对一的关系。一般实现导航树与权限映射的方法有两种,编程方式与非编程方式。编程方式是将权限节点存储于数据库当中,通过读取权限节点数据,以一种生成树算法来动态的生成树型结构。非编程方式是将用户的权限保存在相关文档中,一般为XML文档,通过将XML文件加载到控件的方式动态生成导航树。,而XML文件本身是一种树型结构的文档,如果用将用户权限保存在XML文档中并用其来填充导航树控件的各个节点,那么页面的导航树就可以达到动态生成的效果,并且形式上更加直观。以下是在不同的模块中,系统访问权限的存储XML设计:
使用XML文档存储权限信息,既可以达到存储的目的,又可以直接加载于页面控件生成导航树,因此本文采用XML文档来存储权限信息,通过一定的导航树生成策略来动态的修改XML文档,从而实现导航树的动态生成。以下是整个用户权限控制模型的数据实体间的关系如图5所示。
图5 实体关系图Fig.5 E-R diagram
访问控制算法就是根据访问控制策略对存储权限数据的XML文档进行访问,返回一个进过权限过滤的XML文档的视图。下面给出基于RBAC的XML访问控制算法。
文中通过扩展的RBAC模型设计实现了对用户、角色和权限三者的良好控制,不但减小了授权管理的复杂性,增加了系统的安全性,而且在操作上,权限分配更加直观。通过权限树与系统导航树一一映射以及控制权限操作的页面对用户是否可见来实现用户权限的管理,不仅简化了RBAC模型的实现,减少了应用编程实现中繁琐的权限判断逻辑代码,而且极大程度减少了编程工作量,使Web应用的开发更加方便迅速。通过LDAP目录服务来管理基于RBAC的用户与角色信息,不仅可以适应用户更新操作不太频繁系统,使得用户对数据的访问更加方便快捷,灵活支持了企业的安全策略,而且可以根据需要扩充新的LDAP服务器,实现数据的分布存储。通过对权限的XML文档存储,实现了权限与系统页面呈现的绑定,使得访问权限控制更加简便。因此本文对电子政务系统的RBAC的实现,也具有一定借鉴价值。但本文只讨论了一些相对简单的情况,在实际应用中,由于权限控制的粒度取决于对于页面实现功能的划分。页面实现的功能越少,控制粒度越细,灵活性和扩展性就高,但造成应用的页面过多,开发和管理困难;反之,页面的功能越强,但灵活性和扩展性就越差。因此该方法要求在设计阶段必须有合适的页面-功能划分,才能取得较好的实用效果。
[1]Ferraiolo D,Kuhn R.Role-based access controls[C]//Proceedings of 15th NIST-NCSC National Computer Security Conference, Baltimore, Maryland,1992:554-563.
[2]Sandhu R S,Edward J C,Feinstein H L,et al.Role-Based access control models[J].IEEE Computer,1996,29(2):38-47.
[3]李细雨,韩建民,于娟,等.基于粒逻辑的扩展RBAC模型[J].浙江师范大学学报:自然科学版,2009,32(3):303-307.
LI Xi-yu,HAN Jian-min,YU Juan,et al.Extending RBAC model based on granular logic[J].Journal of Zhejiang Normal University:Natural Science Edition,2009,32(3):303-307.
[4]陈琛,陈学广,王煜,等.一种基于改进RBAC模型的EIS权限管理框架的研究与实现[J].计算机应用研究,2010,27(10):3855-3858.
CHEN Chen,CHEN Xue-guang,WANG Yu,et al.Research and implementation of authority control framework in EIS basedon improved RBAC model [J]. Application Research of Computers,2010,27(10):3855-3858.
[5]张盈谦,孙斌,刘佳,等.基于AOP的细粒度RBAC模型研究[J].电子设计工程,2011,19(18):161-163.
ZHANG Ying-qian,SUN Bin,LIU Jia,et al.Study on finegrained RBAC model based on AOP[J].International Electronic Elements,2011,19(18):161-163.
[6]梁木.基于动态任务菜单的RBAC模型的设计与实现[J].计算机与数字工程,2010,38(02):136-137+173.
LIANG Mu.Design and implementation of the RBAC model based on dynamic task menu[J].Computer& Digital Engineering,2010,38(2):136-137+173.
[7]倪晚成,刘连臣,刘伟.基于角色-页面模型的WEB用户访问控制方法[J].计算机工程与应用,2006(21):124-126.
NI Wan-cheng,LIU Lian-chen,LIU Wei.A Role-page model based accesscontrolmethod forweb applications[J].Computer Engineering and Applications,2006(21):124-126.
[8]欧阳星明,赵颢,程剑.运用LDAP在Web上实现RBAC的一个方案[J].计算机工程与科学,2005,27(11):5-6,23.
OUYANG Xing-ming,ZHAO Hao,CHENG Jian.A scheme using LDAP to implement RBAC on the web[J].Computer Engineering&Science,2005,27(11):5-6,23.