APP下载

一种基于RBAC的数据权限模型的设计与实现

2012-08-07龚艺

网络安全技术与应用 2012年8期
关键词:模块用户功能

龚艺

四川广播电视大学 四川 610073

0 引言

随着企业信息管理系统的逐渐发展,数据权限的需求日益增加,在一个企业信息管理系统里,可能涉及到多类用户,每类用户对应着不同的数据访问范围。RBAC并不能很好的满足复杂的数据权限控制的需求。本文在RBAC模型的基础之上,提出了一个加强数据权限管理的数据权限模型,满足对复杂数据权限控制的需求。

1 基于角色的权限控制模型

RBAC的核心思想是将权限与角色联系起来,在系统中根据应用的需要为不同的工作岗位创建相应的角色,同时根据用户职责指派合适的角色,用户通过指派的角色获得相应的权限,实现对文件的访问。也就是说,传统的访问控制是直接将访问主体(发出访问操作,有存取要求的主动方)和客体(被调用的程序或欲存取的数据访问)相联系,而RBAC在中间加入角色,通过角色沟通主体和客体,角色的目的就是为了隔离用户和权限。角色作为一个用户与权限的代理层,解耦了权限和用户的关系,所有的授权应该给予角色而不是直接给用户,从而实现了用户与访问权限的逻辑分离。1996年,Sandhu发布了RBAC96 的RBAC 通用模型族。文献[5]介绍了一些基于角色系统的开发框架。图1 显示了通用模型族中最通用的模型。

图1 RBAC模型

用户和角色之间是多对多的关系,一个用户可以被赋予若干角色,一个角色也可以被赋予若干个具体用户。同样,角色和权限之间也是多对多的关系,一个角色可以具有多项权限,一个权限也可以赋予多个不同的角色。某系统的操作用户,可以通过他所具有的角色的权限来判断其可访问的系统资源和对系统资源可以进行的操作,这就是RBAC最基本的工作原理。

RBAC的描述如下:

u:User用户;

r:Role角色;

p:privilege权限。

此时,如果某个用户u 对某个业务对象o 具有的权限记为P (u,o),则有如下关系:

P (u,o)=Pr(r(u),o)

其中,Pr(r(u),o)是通过用户u 所赋予的角色r对业务对象o的权限。

大型企业系统一般功能庞大复杂,不同身份和岗位的用户对系统模块功能的使用权限不同。这种基于角色的权限控制模型可以直接将企业组织结构映射到信息系统中,使得对用户权限的管理更加直观、方便和统一,在很大程度上简化了权限管理工作。

2 基于RBAC的数据权限模型

2.1 模型设计

在企业应用系统中,由于用户量大、用户层次结构复杂、业务对象庞杂,权限涉及到比较复杂的功能权限和数据权限,其中功能权限可以是一个按钮或者链接,而数据权限则是对不同层次用户的不同数据范围的限制,假设功能权限的数量为m,数据权限的数量为n,在RBAC模型中,对于完全的权限管理需要有m*n种权限关系,在大型的企业信息管理系统中,随着功能数量的增加,角色权限的配置非常庞大而复杂,并且一旦需要改变数据权限的类型数量,将需要对权限表做较大的调整,因此不具有良好的可扩展性。

针对上述问题,本文在角色的权限控制模型的基础之上,设计了一个新的数据权限模型如图2所示。

图2 基于RBAC 的数据权限模型

数据权限模型将权限划分为功能权限和数据权限,对功能权限和数据权限分别设置不同的角色,分别为数据角色和功能角色。为用户不仅需要赋予功能角色,同时也需要赋予数据角色。用户需要访问一个模块时,不仅要取得该模块对应的功能角色的权限,还要取得该模块对应的数据角色的数据权限,才可以访问该模块功能下的数据。

模型中将角色分为了类型角色,用户与角色关系变为了用户功能角色的关系和用户与数据角色的关系,虽然对用户角色赋予的工作量增加了,但是解耦了角色与功能权限、数据权限之间的关系,使得完全权限集仅需要包含m+n个权限即可。假设数据权限类型数量增加为n+ x,则完全权限集只需增加为m+n+x即可,而RBAC模型中完全权限集所对应的m*(n+ x)=m*n+m*x,同理,当功能权限增加为m+x时,完全权限集也仅增加为m+n+x,而RBAC模型中完全权限集所对应的(m+ x)*n=m*n +n*x。这使得数据权限模型随着系统数据权限的变更具有更少的变动,具有更好的可扩展性,减少了功能权限和数据权限的增加为角色权限维护带来的大量的增改工作。在实际操作中,也可以使用户的角色赋予更加清晰,达到更为简洁的角色权限控制。

2.2 模型实现

数据权限模型的权限控制系统采用普遍的三层架构,包括表示层、业务层和数据层。其中数据层是由数据库系统组成,权限管理则以数据库作为基础来进行。数据库的设计结构如图3所示。

图3 数据权限模型的数据库设计结构图

用户通过“用户-功能角色”和“用户-数据角色”建立起动态的对应关系,功能角色与“功能角色-模块-按键”建立动态的对应关系,数据角色则与“数据角色-模块-数据范围”建立动态的对应关系,通过这种动态的对应关系可以更简便的建立用户与功能权限和数据权限之间的对应关系。

用户授权的实现通过共九个部分实现,包括用户管理、模块管理、模块按键管理、模块数据范围管理、功能角色管理、数据角色管理、功能角色模块按键对应表管理、数据角色模块数据范围对应表管理、用户功能角色和数据角色分配管理。

其中模块按键和模块数据范围的实际应用中随着系统模块的增减而改变,维护量仅随着系统模块的增减以及数据权限范围的变化而线性变化。而用户授权部分由用户管理、功能角色管理、数据角色管理和用户功能角色和数据角色分配管理实现,根据实际需求,为用户需要访问的菜单模块和此菜单模块下访问的数据范围分配角色,可以实现方便快捷的实现权限管理。

具体的系统实现流程为:页面模块读入时,根据用户ID获取用户的功能权限和数据权限,根据功能角色判断用户对该页面模块的访问权限,获取通过后,判断该用户的数据权限,并将数据权限键值存储到Session中,在用户使用按键时,判断根据Session中的数据权限范围,将其注入到SQL查询语句中,此时只需要将一定的范围限制语句作为一个封装的方法加入到SQL语句中,即可实现对数据访问范围的控制,当用户在该模块下的数据权限范围发生变化时,只需在改变用户在该模块下的数据权限范围,并不需要改变数据访问层的代码。如果系统需要修改数据权限范围,只需改变对数据权限限制语句所封装的方法,即可实现对数据权限的修改,有效的减少数据访问层代码的修改。

此数据权限模型可以广泛适用于大型企业管理系统中的权限管理,特别适合于类似于具有省、市、部门、个人多级数据权限控制范围需求的应用系统权限管理,可以灵活的增加不同层次范围的数据控制需求,对于后期的用户角色权限授权管理比较方便。

3 结束语

权限管理是企业应用系统中重要组成部分,权限管理的技术和策略对系统的信息安全影响很大。数据权限的管理属于权限管理的一个重要组成部分,是影响系统的信息安全的重要因素。针对于传统的RBAC模型存在的数据权限管理方面的不足,本文提出的一种基于RBAC的数据权限模型的设计与实现方法,是在RBAC96 模型理论基础上提出,并在实际应用中进行了验证,满足了数据权限和功能权限双重控制的需求,降低了权限管理和维护的复杂性。对开发类似的多组织层次的应用系统管理功能模块具有一定的参考价值。

[1] 王延彬,许林英,杨海琛.OA系统中基于角色的用户权限管理[J].微处理机.2008.

[2] 肖军模,刘军,周海刚.网络信息安全[M].北京:机械工业出版社.2003.

[3] 周文峰,尤军考,何基香.基于RBAC 模型的权限管理系统设计与实现[J].微计算机信息.2006.

[4] Sandhu R S,Coyne E J,Feinstein H L,et al.Role-based Access Control Models[J].IEEE Computer.1996.

[5] Epstein P,Sandhu R.Towards A UML Based Approach to Role Engineering[C]//Proceedings of the 4th ACM Workshop on Role-based Access Control.[S.l.]:AVM Press.1999.

猜你喜欢

模块用户功能
也谈诗的“功能”
28通道收发处理模块设计
“选修3—3”模块的复习备考
关于非首都功能疏解的几点思考
关注用户
关注用户
关注用户
如何获取一亿海外用户
中西医结合治疗甲状腺功能亢进症31例
辨证施护在轻度认知功能损害中的应用