基于角色的动态用户权限管理的研究与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于角色的动态用户权限管理的研究与实现

Ξ

金松河1,2,陶宏才1,黄 敏2

(1.西南交通大学计算机与通信工程学院,四川成都 610031;2.郑州轻工业学院计算机科学与工程系,

河南郑州 450002)

摘 要 用户权限管理是管理信息系统(MIS )设计中的重要环节,是系统安全运行的有力保证.简要介绍了基于角色的权限管理(RBAC ),并提出了一种通用的动态用户权限管理方案及实现方法.

关键词 MIS ;权限管理;RBAC ;角色;菜单项

【中图分类号】TP309 【文献标识码】A 【文章编号】1672—8513(2004)03-0226-02

随着网络技术的飞速发展,基于网络的M IS 也取得的巨大的进步,它们的规模越来越大,使用的人员也与日俱增.这就对系统安全提出了更高的要求,M IS 的数据安全越来越受到人们的重视.为此,人们设计了各种各样的权限管理模型,以确保只有被授权的用户才能访问某些敏感的数据和信息,其中基于角色的权限控制(Role-Based Access Control ,RBAC )模型得到了越来越广泛的认同.本文结合笔者开发网络M IS 系统的实践,论述了如何利用基于角色的存取控制模型,为M IS 建立相应的安全控制机制,实现动态、安全、灵活、方便的用户权限管理.

1 BRAC 的工作原理

用户所具有的访问权限决定了他是否有权访问某一特定资源或执行某种特定操作.传统的权限控制是通过将访问权限直接和用户对应起来的方式实现的.但随着网络数据库和分布式数据库的快速发展,M IS 的规模日益增大、用户与日俱增,并且他们可访问的信息资源的结构也日趋复杂,如果还使用这种传统的访问控制机制,那么存取权限的管理将会变的十分复杂,难以满足现实的需求,由此产生了RBAC.下面我们简单介绍一下RBAC 中的几个重要概念.(1)用户:对数据对象进行操作的主体;(2)权限:对某一数据对象的可操作权利;(3)角色:是为用户或用户组定义的一组权限集,用于表明拥有该角色的用户所具有的对数据库对象(表、视图、存储过程)的访问权限.将这个概念引入到权限管理中来,就使得角色成为联系用户和权限的桥梁.(4)角色层次:为了提高效率,避免相同权限的重复设置,RBAC 提出了“角色层次”的概念.它允许将某一些角色定

义为另一个角色的子角色,通过角色之间的继承关

系,间接地拥有其子角色所定义的权限.在角色层次关系图中,处于最上面的角色拥有最大的访问权限,越下面的角色拥有的权限越少.例如:当角色A 的权限集是另一角色B 的权限集的子集时,我们只需要对角色A 进行权限授权,不须将相同的权限再次赋予角色B.因为通过角色的继承,将角色A 设置为角色B 的子角色就可以了.这样就在最大程度上减轻了系统管理员的工作负担,同时也减少了出错的可能性.(5)约束:通过设置约束条件,可以对角色授权和用户授权进行必要的限制,否则就可能为欺诈行为创造了机会,给企业带来不可预测的损失.

在RBAC 的体系中,用户和角色、权限和角色都是多对多的关系,即一个用户可以被赋予多个角色,一个角色也可以被赋予多个用户,一个角色可以拥有多项权限,一个权限可以分配给多个角色.

一个系统用户可以通过他具有的角色的权限来判断他可以访问的系统资源和对该资源可进行的操作,这就是RBAC 最基本的工作原理.

2 RBAC 的特点

RBAC 具有很强的灵活性和实用性,其主要特

点如下:

(1)简化数据对象的授权管理.DBA 不用每次将一组权限赋予个每个用户.而只需将此权限集授予特定的角色,然后再将角色授予应该具有该组权限集的所有用户即可.

(2)动态权限管理.一方面,当数据库对象的一组访问权限需要改变时,只需要改变相应的角色的权限,所有被授予该角色的用户都将自动修改他们

Ξ

收稿日期:2004-01-07

作者简介:金松河(1976~),男,河南人,硕士研究生,助教,主要从事数据库、信息安全的研究.

第13卷第3期

2004年7月

云南民族大学学报(自然科学版)

Journal of Yunnan Nationalities University (Natural Sciences Edition )

Vol.13,No.3J ul.2004

所具有的权限;另一方面,由于权限控制是基于角色的,而不是基于用户的,所以如果发生人员调动,只需要给其赋予新的角色即可,无须做更多的操作.

这些特点使得R BAC 非常适合应用于大型的企业组织,而且也符合人们对现实世界中事务的理解习惯.

3 设计思想

一个大型的M IS

往往建有大量的数据对象,与这些对象有关的用户数量也极其庞大,从用户权限管理工作非常繁重.

在实际应用中,应用系统一般是以菜单形式为用户提供各项业务处理功能,某一菜单项涉及若干个特定的数据对象,这种对应关系为在应用程序的菜单项基础上实现数据对象访问控制提供了可能.我们可按照业务需求,将业务中的基本子功能作为基本的菜单项,然后通过DBA 的设置,使不同的用户执行不同的菜单项集,但为每一个用户维护其所能执行的全部基本菜单项的工作不是一件轻松的事情;所以,需要设计出一种通用权限管理方案,以减轻DBA 的负担.我们可以根据各业务工作岗位的职能范围,使每个工作岗位(角色)对应一组基本菜单项,然

后再利用角色的继承性,并将某一角色授予某类用

户,使该类用户拥有对应的一系列访问权限.这样就可以大大的降低DBA 的工作量,因为,若某用户的工作岗位发生变化,只需要改变该用户的岗位角色,其存取权限将自动改变;若某岗位职能发生变化,也只需要调整该岗位角色所包含的基本菜单项,属于该岗位的所有人员的存取权限也自动随之改变.这种处理方式既符合业务上的习惯,又大大降低了操作的复杂性.系统中各种对应关系如图1所示.

图1 对应关系图

对于一个具体的用户如何判断是否有权限访问特定的系统资源呢?下面介绍一下判断流程.

当一个用户要求访问系统中的某种资源时,首先判断该用户所属角色是否有权限访问该系统资源,如果没有该项权限时,再判断该角色是否有子角色,如果没有,就直接拒绝其访问;否则,就去查询其子角色是否拥有该权限,只有当该角色的所有子角色以及它的子角色的子角色都没有访问权限的时候,才拒绝访问.

4 系统实现

下面简单介绍一下具体实现方法.可以建立如下的主要的数据表:

表1 用户信息表字段名注释User id

用户编号User name 用户名Password 用户密码

Role id

角色编号

表2 角色信息表字段名注释Role id

角色编号Role type

是否有子角色

表3 角色层次表字段名注释Role id1

角色编号Role id2

子角色编号

表4 菜单项与角色关系表字段名注释Menuitem id

菜单项编号Role id

角色编号

表5 角色互斥表字段名注释Role id1

角色编号1Role id2

角色编号2

表6 菜单项互斥表

字段名注释MenuItem id1

菜单项编号1MenuItem id2

菜单项编号2

对于用户的权限控制,可以通过以下两种方式

来实现:(1)在用户登录系统的时候,系统主动去获取该用户所拥有的功能权限.在用户进入系统后,只显示那些用户有权访问的功能菜单,将那些用户不具有访问权限的功能菜单设置为对该用户不可见;(2)在用户具体提出访问某一资源的请求时,系统才去检查该用户是否具有访问该资源的权限.

(下转第231页)

7

22第3期 金松河,等:基于角色的动态用户权限管理的研究与实现

相关文档
最新文档