您好, 访客   登录/注册

基于RBAC模型权限管理的设计与实现

来源:用户上传      作者: 董珍珍 王林生

  【摘要】对RBAC模型分析和研究的基础上,对RBAC模型进行了改进,设计了可以同时对角色和用户进行授权的更灵活的权限管理模型,满足了企业多样化的授权管理需要。
  【关键词】RBAC;权限;角色
  RBAC(Role—Base Access Control)模型[1—2]是目前最为广泛接受和使用最广泛的权限模型,该模型是基于角色进行授权的,虽然授权的机制很好,但有时候却不太符合国内的实际情况,特别是某些企业的管理不太规范的情况下。在实际项目中,不仅仅对角色授权,还要支持直接对用户单独授权。当然对用户的授权可以通过创建一个不存在的角色通过对角色的授权来实现,但用户往往不太赞同,同时会造成角色迅速膨胀,就出现了针对用户进行授权的需求,在实际操作宗也往往采用直接对用户进行授权。这样一来,就需要对RBAC再次进行扩展来满足需要。在本系统的开发中,就采用了针对角色授权和针对用户授权相结合的方式来进行。该模型既不是特别简单也不特别复杂,忽略了很多概念也创建了很多概念,它能比较灵活的实现授权的灵活度,能够适应不太规范的企业,克服了RBAC模型只能对角色进行授权的缺点。
  1.权限管理的设计
  1.1对象及权限定义
  利用基于角色的访问控制进行用户权限设定时,首先要进行的就是确定系统对象及对对象的访问权限,实际上就是对系统资源的访问权限。这里的对象指系统中各种功能模块、数据、操作等等,是主体能访问的各种对象。由于对象的机密情况及所属单位的不同,能对他们操作的用户也不相同。
  1.2角色定义与权限分配
  (1)角色定义
  基于角色的访问控制方法就是用角色来充当用户行使权限的中介,对角色进行授权,为用户分配角色,就等于把角色的权限分配给用户,这样,用户与角色之间以及角色与权限之间就形成了两个多对多的关系[3],即一个用户可以拥有多个角色,一个角色也可以供多个用户使用。
  即如果某个用户拥有角色M的同时还拥有N的角色,即双重甚至多重角色,那么在默认的情况下,系统会为该用户分配角色M和角色N拥有的所有权限,它的权限为两个角色的权限的合集。因此在为用户分配权限之前应该首先创建角色,通过角色为用户授权。
  (2)为角色授权
  从角色的定义我们可以看出,角色本质上就是一组对资源进行操作的权限的集合。在一个系统或企业中,用户的人数很多,但企业中人员的角色数总是为数不多的有限个,因此先进行角色的定义和授权,企业中的人员在根据自己的身份选择相应的角色是进行权限分配的一种广泛使用的有效途径。
  因此在本系统的权限管理模块,就是采用基于角色的权限管理,先进行角色的定义和权限分配,然后在进行用户的授权。
  由于本系统对传统的基于角色的权限模型进行了扩充,使其既能对角色进行授权,也能单独对用户进行个别授权,同时不同角色的权限有可能发生冲突,因此还要设置角色的优先级,在角色权限冲突时不至于产生二义性。关于角色的优先级和有关约定说明如下:
  如果一个用户只属于一个角色,那么他的权限很清楚,就是他所拥有的角色的权限。
  如果用户属于多个角色,在角色权限不冲突的情况下,他的权限就是这些角色权限的并集;如果不同角色所拥有的权限发生冲突,则需要根据角色的优先级确定用户的最终权限。权限的确定原则是发生冲突的权限以优先级高的角色所拥有的权限为准,与之冲突的低优先级的角色的权限作废。
  (3)为用户授权
  如果需要一个临时用户对系统进行操作,但他的身份和当前的角色都不匹配,那么有两种办法解决这个问题:第一种办法,可以增加新的角色,为角色分配该临时用户所需要的权限,等价于创建一个虚拟的角色;如果用户不接受虚拟角色的概念,可以为用户单独设置权限。
  为了区分用户是使用角色的权限还是使用单独设置的权限,我们引入“继承”和“不继承”的概念,这样在实际的授权中就将这两种授权方式区分开来,以免产生混淆。
  1.3对权限的认证
  所谓的认证实际上就是对权限的确认。当某一个用户对系统资源进行操作时,要首先进行认证,也就是判断用户是否拥有对资源进行操作的权限,然后根据判断的结果确定是否允许用户进行操作。
  因此在进行授权之前首先要做的就是对系统资源和相应操作进行定义,对某种系统资源的某种操作实际上就对应了一条权限,系统的权限就是由这样一条一条的权限所组成的,并保存在数据库中。
  在本系统中,在用户进行某个资源的操作之前需要进行即时权限认证,权限认证的步骤是通过用户标识和资源标识查找ACL实例,然后根据ACL实例确定授权情况。
  2.用户及权限管理的实现
  根据后台的功能模块,共划分除了十二个对象,对这些对象分别设置了增、删、改、查(CRUD)四种权限,共划分出系统管理员、普通员工、信息发布员、安全信息员和一般使用员等多种角色,它们分别对这些不同的模块有不同的权限。在新添加一个用户时只需要对他分配不同的角色即可。
  角色定义之后就可以对角色进行授权,可以根据企业实际为每一个角色分配不同的权限,在本系统的实现中,对系统资源的权限划分为增删改查,使用这些功能,就可以实现对角色管理,可以添加、删除角色,添加角色。
  参考文献
  [1]余文森,张正秋,章志明等.基于角色的访问控制模型中私有权限问题的研究.计算机应用研究, 2004, 21(4):50—51
  [2]刘孝保,杜平安.J2EE模式下基于角色访问控制的应用.计算机应用, 2006, 26 (6): 1331—1333
  [3]洪帆,罗炜.工作流管理系统安全模型.华中科技大学学报:自然科学版, 2003, 31(12):4—6
  董珍珍(1984—),女,助教,河南南阳市人,硕士研究生,主要从事电子技术及信息科学。
  王林生(1981—),男,讲师,河南南阳市人,硕士研究生,主要从事计算机控制技术。
转载注明来源:https://www.xzbu.com/6/view-3652260.htm