基于角色和用户组的扩展访问控制模型

  在信息系统安全机制中,访问控制是一项重要机制,有着许多重要应用。访问控制或权限管理系统是当前计算机应用系统重复开发率最高的模块之一。在企业中,不同的应用系统几乎都拥有一套独立的权限管理系统,不同的权限管理系统在数据存储、权限访问和访问控制机制等方面都可能不一样。近年来,访问控制的研究发展很快,有许多访问控制模型被提出[1~3]。建立规范的访问控制模型是实现严格访问控制策略所必需的,因此,访问控制模型的研究具有十分重要的现实意义。


  目前, 基于角色访问控制模型(rolebased access control,RBAC)一直是系统安全管理的研究热点,在应用系统中也得到了很好的应用[4~6]。但是,笔者发现在目前大多数RBAC的实际应用中,属于相同角色的用户对功能对象都具有相同的访问权限,而属于同一角色的不同用户对数据或资源对象的访问权限却是不同的。其对资源的权限控制往往是根据实际访问控制要求,直接以用户为对象授予权限,将用户对数据或资源部分的访问权限用数据库中的某些业务数据来表示。在授权时预先将这些数据手工从相关业务表中抽取出来,以静态形式存储于资源权限表中,查权时再通过查表方法来确定用户所拥有的资源权限。但是,由于这些权限数据中包含了大量的业务数据,随着用户角色或职能的变动,系统管理员必须手工更新大量对应的权限数据,这样不但增加了他们的工作负担而且极易造成数据的不一致。针对以上问题,本文在RBAC基础上加入用户组,使用户的功能和资源权限由角色和用户组共同来确定。


  1 基于角色的访问控制模型


  传统的访问控制,如自主访问控制(discretionary access control)和强制访问控制(mandatory access control)是以用户为基本对象授予权限,这使得大型复杂系统的授权管理繁杂,且容易出错。随着对多用户、多系统的研究不断深入,角色的概念逐渐形成,并逐步产生了以角色为中心的访问控制模型,即RBAC。RBAC 包含三个实体,即用户(user)、角色(role)和权限(privilege)。用户是对数据对象进行操作的主体,可以是人、机器人和计算机等;权限是对某一数据对象可操作的权利。角色的概念源于实际工作中的职务;一个具体职务代表了在工作中处理某些事务的权利。角色管理是大型数据库管理用户的一种思想,将这个概念引入到授权管理中,则角色作为中间桥梁将用户与权限联系起来。一个角色与权限管理可以看做是该角色拥有的一组权限集合,与用户关联又可以看做是若干具有系统身份的用户集合。基于角色的访问控制技术的核心思想是将访问权限转换成角色的权限,通过给用户分配不同的角色,达到赋予用户不同权限的目的。它需要管理员根据情况创建角色,然后将有关权限赋予给此角色,最后将该角色授予合适的用户,这样用户就可以获得该用户所拥有的权限。

 

  RBAC模型如图1所示。用户和角色的关联表示若干具有相同身份的用户拥有的许可集,一个用户可被赋予若干角色,一个角色也可以被赋予给若干个具体用户,两者之间是多对多的关系。角色和权限的关联表示角色拥有的一组权限的集合,一个角色可以具有多项权限,一项权限也可以被赋予给多个不同的角色,它们之间也是多对多的关系。RBAC使访问控制适应性更强。管理者可以通过调节用户所属的角色、角色相关的操作与角色之间的层次关系,灵活地控制用户访问资源的方式。而且,很容易将角色结构与部门内部用户结构结合起来,达到简化管理、明确责任的目的。从这些特点可以看出,引入角色概念实现了用户与权限的逻辑分离,极大地方便了权限的管理,这也是本文选择基于RBAC发展访问控制扩展模型的原因。


  2 引入用户组后的扩展型访问控制模型(ERBAC)


  2.1 用户组定义
  在RBAC的规范中没有提到关于用户是如何组织的,为了使系统适合于分散式权限管理,加入了用户组这一概念,它是指一群用户的集合。很多系统在行业实际应用中,由于行业部门机构庞大,假如系统不引入用户组,当为部门内部用户授权时就显得比较混乱,授权也显得非常繁琐。当按树型结构方式将行业内所涉及的部门按行政或其他隶属关系进行组织,授权就会清晰得多。而且当某个组的所有用户职能相同时,可以创建一个组角色,然后将这个角色授予整个组,则整个组的人员均获得了权限;当改变该组角色的权限时,整个组的权限也相应地改变了,从而大大简化了授权管理。用户是系统中权限控制的访问主体,引入用户组是非常有必要的。

 
  2.2 用户组与角色关系
  既然可以直接对用户组授权,那么是否用户组就可以代替角色呢?从上面的分析可知,当用户组内人员职能相同的情况下,用户组能够代替角色,这也是人们常把基于用户组的访问控制模式看成基于角色的访问控制模式的原因。但是,同一用户组内的用户有的职能不同,假如以组的授权模式授权,则组内职能不同的用户就会越权,整个系统显然是不安全的。再对RBAC中的角色分析得知,角色和用户组虽有相似之处,却有着根本区别:组是用户的集合, 而不是权限的集合;角色作为中介,既是用户又是权限的集合体。因此,用户组是不能代替角色的。

 
  2.3 ERBAC模型
  在大型企业系统中,由于用户众多、业务对象庞杂,使得角色的定义在权限管理中比较复杂。用户的业务需求灵活多变,系统的功能和数据资源可能不断增加或更新,权限也在随之变化;同时,系统用户由于工作职责的需要,各自的权限也可能相应变化。因此,角色的定义通常随时间和部门的调整发生变化;同时,多个角色的权限往往相互重叠,无法区别对数据资源的访问权限。如果仅仅采用通过调整角色的定义来改变授权,则难以满足复杂情况变化的需要。在目前大多数RBAC的实际应用中,属于相同角色的用户对功能对象都具有相同的访问权限,而属于同一角色的不同用户对数据或资源对象的访问权限却是不同的。例如在某管理信息系统中,属于相同角色但部门不同的用户对每个功能模块的菜单、窗口和按钮等功能对象的访问操作都是相同的,但其在相同的功能操作界面中只能访问属于自己部门的数据。用户对功能对象的访问权限完全可以按照RBAC的方法来管理,即管理员根据情况创建角色,然后将有关功能权限赋予此角色,最后将该角色授予合适用户,这样用户就可以获得该用户所拥有的功能权限。现在的关键是如何灵活地解决用户对数据资源对象的个性化访问要求呢?经过观察笔者发现,系统的数据是按部门或用户组来组织的,因此可以以用户组为单位来分配数据资源权限。本文基于这种思想,在RBAC基础上增加用户组资源权限赋予,采用对角色和用户组混合授权的方法,使得权限控制更加灵活和安全。图2是采用对用户组和角色混合授权的扩展型基于角色的权限控制模型(extended rolebased access control,ERBAC)。

 


  ERBAC模型的描述如下:如果某个用户U对某个对象O具有的权限记为P(U,O),则有如下关系:
  P(U,O)=Pr(R(u),OF)∪Pg(G(u),OR)。其中,Pr(R(u),OF)是通过用户U所属的角色R对功能对象OF的权限;Pg(G(u),OR)是通过用户所在部门授权所确定的对资源对象OR的权限;P(U,O)是Pr和Pg两者的并集,即用户所属角色对功能对象的权限与用户所在部门对资源对象的权限之和。

  ERBAC模型除了RBAC模型的角色授权外,增加了用户组对数据资源进行授权。其中,用户与角色、角色与功能权限以及用户组与资源权限之间都是多对多的关系。授权分为功能授权和资源授权两步,用户所拥有的权限为用户所属角色的功能权限和用户所属部门的资源权限之和。这种采用混合授权的方法不仅有效解决了角色定义、用户职责、功能和资源等动态变化对系统所带来的问题,更增强了对用户授权的灵活性和可维护性。当权限授权后, 一个具体的用户要求访问系统某模块的功能时,系统同时判断该用户所属角色和用户所在用户组,同时判断角色所拥有的功能权限和用户组拥有的资源权限,这样用户就可得到自身全部拥有的功能和资源权限。根据上述授权方法和权限访问控制,ERBAC模型在企业应用中占有很大优势:
  a)用户、用户组、角色以及权限的设置将企业结构和岗位人员职责简单地映射到企业应用系统中,使得对系统权限部分的设计和应用更加直观、灵活,易于管理和维护;
  b)如果企业需求中某工作岗位职责变更,无须逐一更改处于该岗位的所有工作人员的权限,而只需更改执行该岗位职责的角色权限;
  c)若企业某些用户的职责发生变动,所在用户组或部门无变动时,只需简单地修改用户角色即可;
  d)当企业某些用户进行了部门调遣,而用户的职责没发生变动,只需更改用户的所属用户组,这样用户对资源的权限相应地发生了改变,而无须对用户进行资源的一一授权;
  e)如果企业某些用户的职责与所属部门同时发生变动,需要同时修改用户角色和用户的所属用户组,这样用户的功能和资源权限得到了相应的修改。
  ERBAC 模型的这些特点使得系统权限维护相当简单快捷、安全有效,非常适合于大型企业组织的系统开发。


  3 ERBAC的设计与实现


  3.1 ERBAC基本设计
  ERBAC的基本思想是:用户与功能、用户与资源不直接发生关系,而是分别增加角色和用户组,继而增加用户—角色关系表和用户组—用户关系表,使用户与功能、用户与资源发生关系,如图3所示。其中,用户组通过用户组—资源关系表为用户组分配资源,用户组通过用户组—用户关系表为用户组添加用户,用户通过用户—角色关系表为用户授予角色,角色通过角色—功能关系表为角色分配功能,这样用户与功能、用户与资源就产生了相应的关系。

 


  3.2 数据库设计
  根据整个流程可将ERBAC系统分为不同的功能模块,并可将用户按部门分为不同权限的访问用户。根据上述设计思路,用户及权限信息均被保存在系统的数据库九张表中,即用户表、用户组表、角色表、功能权限表、资源权限表、用户组与资源关系表、用户组与用户关系表、用户与角色关系表、角色与功能关系表。各表详细设计及其关系如图4所示。

 


  ERBAC的目的是建立用户与功能和资源之间的对应关系。由图4可知,用户与功能、用户与资源不直接发生关系,而是分别增加角色和用户组,继而增加用户—角色关系表和用户组—用户关系表,使用户与功能、用户与资源发生关系。这样处理的好处在于使得用户和角色的增加和维护相对独立,不发生相互干扰,使得数据库的设计变得更加灵活,用户和角色之间也可以建立动态的对应关系。角色与功能之间也不直接相关,而是通过角色—功能表发生关系,从而避免了角色和功能之间的相互影响,使得角色与功能之间也形成了动态的对应关系。而用户—用户组—资源之间的设计也是如此,这样更易于数据库的维护。

 
  3.3 ERBAC的实现
  笔者以Visual C# 2005为开发工具,数据库为Oracle 10g,设计实现了某信息管理系统中的访问控制模块,并使用模拟数据对本文的模型进行了实验验证。与一般的信息管理系统相比,该系统具有组织机构庞大、内部人员行政隶属等关系复杂、用户职责变化频繁、用户数量多等特点。本文设计的ERBAC模型很好地适应了该信息管理系统的特点,有效解决了角色定义、用户职责、功能和资源等动态变化对系统所带来的问题,增强了对用户授权的灵活性和可维护性。访问控制系统在一定程度上独立于整个信息管理系统,具有很好的可重用性。


  在访问控制系统中,由系统管理员动态地对各个用户组的用户设置不同的访问权限。在打开系统时,首先启动用户登录界面,当输入用户名和密码后,系统根据存储在数据库中用户与角色关系表、角色与功能关系表确定哪些页面或窗体能够使用,对于每一窗体的每一个按钮,根据用户的角色判断按钮是否可用,无效的设置为灰色;同时根据存储在数据库中用户与用户组关系表、用户组与资源关系表确定哪些资源或数据可以使用。其基本流程如图5所示。

 

 
  4 结束语


  ERBAC模型通过对用户和角色混合授权,有效地弥补了RBAC角色授权机制的缺陷,符合现代企业组织结构的管理特点,使得整个系统权限管理方便灵活、安全有效,在实际应用系统的用户权限管理中取得了良好的效果。同时,该模型具有很强的通用性,可广泛应用于其他系统权限管理。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值