文档库 最新最全的文档下载
当前位置:文档库 › 一个通用的权限管理模型的设计方案

一个通用的权限管理模型的设计方案

一个通用的权限管理模型的设计方案

林伟炬1)刘列根2) 张宇3)

1) 2)3) (华南理工大学计算机应用工程研究所广州 510641)

摘要:本文提出了一种集成功能权限和数据权限的通用的权限管理模型,该模型在主要对角色授权的基础上加入了对用户直接授权和屏蔽部分角色权限的机制,丰富了传统模型对功能权限的控制,并且增加了数据权限的管理,有效地解决了各种管理系统中复杂的访问控制问题。

关键词:RBAC,功能权限,数据权限

中图分类号:TP31 文献标识码:A

A Universal Scheme of Authority Management Model

LIN Wei-ju LIU Lie-gen ZHANGYu

(Research Institution of Computer Application, South China University of Technology,

Guangzhou, 510641)

Abstract:In this paper, a universal scheme of authority management model integrates function permission and data permission is put forward. The model, manily based on the role authorization, has added the mechanism of user authorization and shielding part of authorization. It enriches function permission and adds the management of data permission,as well as solves the complex access control problems of a variety of management systems effectively.

Key words:RBAC,function permission,data permission

前言

对于权限管理,国外学术界已经作了大量的理论研究工作,提出了许多种模型。目前主流的访问控制策略主要有自主访问控制(DAC)、强制访问控制(MAC)和基于角色访问控制(RBAC)三种。前两种均属于传统的访问控制策略,既工作量大,又不便于管理。RBAC是当前信息系统资源访问控制公认的有效方法。但在实际应用中,RBAC模型过于简单,难以适应复杂情况的需求。本文提出了一种更有效的集成功能权限和数据权限的通用的权限管理模型,扩展了RBAC的功能权限部分,增加了数据权限,满足多层次的要求。

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

基于角色的访问控制模型(RBAC)是由David Fenaiol Richard Kuhn等提出的。RBAC包含三个实体:用户、角色和权限。用户是对数据对象进行操作的主体,可以是人、机器人和计算机等。权限是对某一数据对象可操作的权利。角色的概念源于实际工作中的职务。一个具体职务代表了在工作中处理某些事务的权利。把这个概念引入授权管理中,则角色作为中间桥梁把用户和权限联系起来。

传统的企业权限系统设计一般由系统功能、系统角色、系统用户、角色功能关联和用户角色关联五部分构成,其具体实现是用户被分配角色,角色来具体访问系统功能的权限。即其数据库的ER关系表示为图1。

图1

2 改进后通用的权限管理模型方案

改进后的ER图如下:

图2

这个模型有八个实体,下面对其作一些解释:

1). 资源:系统中的资源,主要是各种业务对象,如销售单、付款单等。

2). 操作类型:对资源可能的访问方法,如查询、增加、删除、修改等。

3). 功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等。

4). 数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等。

5). 数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的对象值。

6). 角色:特定功能权限的集合,如销售经理,销售员等,一个角色有若干个功能权限。

7). 用户:应用系统的具体操作者,用户可以自己拥有功能权限信息,可以归属于0~n个角色,可属于0~n个组。它与权限、角色、组之间的关系都是n对n的关系。

8). 组:为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下级关系,可以形成树状视图。

下面将图2分成两部分解释。

2.1 功能权限控制的扩展

功能权限就是能做什么的问题,如查询订货单。总图(图2)右边部分的设计表就是作功能权限控制用的。

图3

与传统设计相比,保留了用户表、用户角色表、角色表和角色功能权限表。不同的地方有两个:

1) 把功能权限表拆分开,由资源和操作类型这两张表相结合构成。系统资源为树形结构,如合同模块,销售模块等,操作类型记录系统能对资源采取的操作,如增加、删除、修改、查询等。功能权限就是对资源的操作,是资源与操作类型的组合。这种设计也为以后系统作功能方面的扩展提供结构上的支持。

2) 增加了用户权限表和用户角色权限屏蔽表。因为各种业务系统中,特别是大型企业,系统的用户由于工作职责的需要,各自的权限可能随之发生变化,另外用户的业务需求灵活多变,系统的功能可能不断增加或更新,权限也要相应变化。角色的定义通常随时间和业务的调整发生变化,而且多个角色的权限往往相互重叠。因此,有必要改进仅仅通过调整角色的定义来改变授权的传统设计,使功能权限管理更加灵活,更容易满足复杂情况变化的需要。

同一个角色对属于不同组织的用户拥有的权限是一样的,如果其中用户A由于业务要求需要只是暂时拥有某项权限p,假如增加现有角色的权限,则必然会使被赋予该角色的所有用户都增加了权限p,这显然不合适。假如仅仅为了这个用户的临时需求而新建一个角色,然后赋予用户A。当撤销该权限时,还必须删除这个角色的定义,操作起来较繁琐,如果系统经常出现这种情况的话,那角色的数量就显得很臃肿了。决定增加一个用户权限表,使系统可以直接对用户授权。

同理,如果只能暂时让用户A拥有某个角色的绝大部分权限,但此角色的有些权限不能赋予此用户。比如角色r的权限有(p1,p2,p3),用户A只能拥有(p1,p2),不能拥有p3。此时如果新建另一个角色给用户A,也显得繁琐而且没有必要,因为这只是一个暂时的情况,当A 退出后,还要删除此角色。决定增加一个用户角色权限屏蔽表,使系统能屏蔽该用户某个角色的部分功能。如上述的例子,只要给用户A赋予角色r,同时对用户A赋予的角色r的权限作一定的裁剪,裁掉权限p3,就可以满足需求了。

在建立用户角色表时,增加一个是否增加权限字段(Add)和一个是否屏蔽角色权限字段(Sub)。如果Add为1,则说明此用户除了角色所赋予的权限外,还有特殊权限,这时候还要加上用户权限设置表中所设置的权限;如果Sub为1,则说明用户不能得到所处于的角色的所有权限,这时候要把此角色的所有权限减去用户角色权限裁减设置表中相应的权限,才是此用户在此角色下的权限。

这种功能权限控制的扩展设计还是以对角色授权为主,辅以对用户授权和对特殊用户的部分角色权限作相应的屏蔽,有效地弥补了RBAC角色授权机制管理相对生硬的缺陷,使得权限管理变得更灵活,安全有效,同时符合现代企业组织结构的管理特点。

2.2数据权限控制的设计

数据权限就是能在哪里干什么的问题,如查看广州分公司采购部张三的订货单。传统的设计只涉及到功能权限,无法对数据权限进行控制。企业级系统发展到今天,涉及到更多的业务数据处理,所以数据权限对敏感数据尤其重要。一般来说,数据权限依赖于功能权限,是对功能权限的进一步描述,用来说明角色在指定的功能点上对具体某一个数据的权限控制。总图(图2)左边部分的设计表就是作数据权限控制用的。

图4

数据类型表存放业务系统中常用的数据权限类型,如公司、部门、项目、个人等。数据对象表则记录各个数据类型的对象实例,也就是具体数据,如客户“广州电信”,部门“销售部”。资源与数据类型的关联表(多对多)为配置表,说明某种资源可能需要的控制点,资源也可能涉及到细化,比如销售模块中的销售订单可能需要分客户进行统计,这种情况下权限的配置就需要按客户进行分配,这种模式通过资源数据类型关联表来反映,这是一张配置表,可以用来说明某种资源需要的权限控制点。

组织表仅仅表示用户所属的组织,是多对多的关系,组织不参与授权。有些基于组的设计,如文献[3],组织分别与功能权限和角色相关联,用户在哪个组织就拥有哪个组织级别的数据权限,例如李四是广州采购部的经理,他可以有增删改查广州采购部所有的订购单。但这种数据权限只能控制在组织这个层次,非常局限。如果用户属于某组织,但他只能有本人这个数据级别的功能权限,这种设计是做不到的。例如张三是广州采购部的普通员工,他只能有增删改查自己的订购单。

我们增加一个用户组织数据对象的关联表,添加了用户要控制的数据级,当添加用户的时候,如果他属于若干个组,每个组相应设置需要控制的数据权限级别,当要删除所属组的时候同时就一并取消了要控制的数据权限级别了。例如,李四在广州采购部,如果他只是普通的员工,就将数据级设置为李四本人,于是他只能增删改查自己的采购单;如果他是经理,就将数据级设置为广州采购部,他就能增删改查他所属部门的采购单;如果将数据级设置为A客户,他就只能增删改查A客户的采购单。前提是已经在资源数据类型关联表中已经设置好采购单可以按部门、本人、客户来分配。数据权限的控制就是通过以上的表来完成的,可以在系统中很灵活的增加数据的权限控制点。

3.该设计方案的实现流程

基于以上设计的权限管理系统分为用户管理、角色管理、组织管理、功能管理和操作日志管理五部分。

其中用户管理包括所属角色、所属组、用户权限、用户总权限。某个用户总的权限信息存在如下计算公式:用户权限 = 所属角色权限合集 + 用户自身权限 – 用户角色裁剪权限。每添加一个所属组,就要配置数据权限级别。角色管理包括包含所赋予的用户和角色权限。组管理即对用户所属的组织进行管理,组织以树形结构展示,组织管理具有组织的增、删、改、查功能。功能管理对操作类型和资源进行组合,成一个完整的功能,供授权。操作日志管理用于管理本系统的操作日志。这样就形成了一套较完整的大型信息系统的权限管理

方法。

在具体应用中,系统首先通过用户表的用户名和口令验证此用户是否是合法用户, 用户表中的密码通过MD5加密算法加密,使他人无法从数据库表中直接查看用户密码,只有合法用户才能进入应用系统。然后,通过用户角色表获得当前用户所属的角色,再根据角色权限表、用户权限表以及用户角色权限屏蔽表确定用户在整个系统功能中的权限集合, 即用户权限 = 所属角色权限合集 + 用户自身权限 – 用户角色屏蔽权限。当用户调用某功能的应用时,通过查看用户的权限集合能够准确无误地判断用户是否有权访问,若有权访问再看用户拥有什么数据权限级别,对相应的资源进行操作。

此设计模型在笔者参与开发的某公司的信息管理系统中得到了成功的应用,并且效果显著,运行良好。

4.结束语

企业级的应用需要复杂的权限控制,传统的权限设计模型已远远不能满足要求, 本文提出了一种集成功能权限和数据权限的通用的权限管理模型,该模型在主要对角色授权的基础上加入了对用户直接授权和屏蔽部分角色权限的机制,丰富了传统模型对功能权限的控制,并且增加了数据权限的管理,可以满足企业功能权限和数据权限多层次要求的解决方案,有效地解决了各种管理系统中复杂的访问控制问题。

本文作者创新点:在主要对角色授权的基础上加入了对用户直接授权和屏蔽部分角色权限的机制,丰富了传统权限管理模型对功能权限的控制,并且增加了数据权限的管理。

参考文献(References):

[1] 马林,黄文培,聂捷楠,汪凌峰.RBAC的权限扩展和其在Acegi下的实现[J].微计算机信息,2008,2-3, 34 -36

[2] 杨柳,危任勇,陈传波.一种扩展型基于角色权限管理模型(E-RBAC)的研究[J].计算机工程与科学,2006,28(9),126 -128

[3] 阮文江,分组式权限管理模型,现代计算机2002,3,79 -81

[4] 陈楠,付仲良,胡鹏.一种信息系统权限管理的设计方案.地理空间信息,2008,6-2,19-21

[5] 高燕,张维,陈小辉.基于RBAC的可复用的权限管理设计与实现,科学技术与工程,2007,7(15)

作者简介:林伟炬(1983-),男(汉族),广东广州人,华南理工大学硕士研究生,主要研究领域为电信网络,信息系统;刘列根(1967-),男(汉族),硕士,华南理工自动化专业;张 宇(1962-),男(汉族),博士,华南理工大学硕士生导师,高级工程师,长期从事计算机通信及信息处理技术的研究,曾获省部级科技进步奖2项;列入国家火炬计划1项;国家级重点新产品1项.

Biography: LIN Wei-Ju (1983-), male(Han), Guangdong.Guangzhou, South China University of Technology, Master, Research area: Telecom Network and Information System.

相关文档
相关文档 最新文档