面向工作流的RBAC模型研究

2012-11-30 03:18邰伟鹏
计算机工程与设计 2012年4期
关键词:结点实例对象

徐 宏,邰伟鹏

(1.安徽工业大学 教务处,安徽 马鞍山243002;2.安徽工业大学 计算机学院,安徽 马鞍山243002)

0 引 言

随着信息化管理系统应用的快速发展,信息管理系统的广泛应用,建立一套好的权限访问控制模型是保证信息管理系统安全、稳定运行的关键。近20年来,人们在权限控制方面研究取得了很大的成果,并且提出了相关模型。比较著名的模型有自主访问控制模型 (DAC)和强制访问控制模型 (MAC)以及基于角色访问控制模型(RBAC)[1-2]。DAC这种模型的缺点在于访问级别的划分不够细致,在同级间缺乏控制机制,灵活性较差;而MAC存在产生安全漏洞隐患,使得客体的所有者最终都不能控制对该客体的所有访问许可,权限扩散和数据分发会导致自主访问控制的安全级别较低。目前比较流行、应用较广泛的访问控制模型是基于角色的访问控制 (role-based access control,RBAC)。RBAC主要是通过角色来实现对用户权限的授予与取消,系统按照一定的分配规则给角色分配权限。但是RBAC在实际应用中还存在权限分配缺乏灵活性、动态性等缺陷。文献 [3]引入角色方法和角色环境函数对RBAC进行了改进,该方法主要是通过存储过程动态实现角色的动态变化,要与具体的业务系统关联,同时,角色环境函数也是具体到某个业务逻辑。文献 [4]以数据对象作为角色与用户的联系纽带,使得同一用户对不同的数据对象具有不同的访问权限,这种改进可以解决同一角色对相同数据的不同访问的分离。文献 [5]提出一种用户权力限制模型,只在需要时分配,平时回收,很好解决了权限的安全性,但是对数据对象访问的灵活性还不够。文献[6]引入作用域和权限期的概念解决并发问题。文献 [7]考虑到角色与用户的动态关系,因此在用户与角色之间加上用户属性这一层关系。

针对目前访问控制权限的研究现状,本文讨论一种面向工作流的RBAC访问控制模型。该模型通过工作流与RBAC模型相结合,在原有的RBAC模型的基础上关联具体的工作流,并且对角色进行了分类,实现了针对不同的业务流程、不同的数据对象配置不同的权限模式,有效解决系统在动态执行过程中用户权限的动态分配与回收,且对于不同的管理系统具有通用性,文中最后给出实际应用结果,证明了该模型的有效性。

1 面向工作流的RBAC访问模型

1.1 设计思想

管理信息系统是社会系统的抽象表达,社会系统的各个实体之间通过信息发生相互作用,而把这些实体抽象成为管理信息系统里的节点,将不可见的信息具体化,进行分类、检索和储存。不同的管理信息系统具有不同的流程节点与流程方式,即使是同一个管理信息系统在不同部门使用时,同一个业务逻辑也可能具有不同的方法。比如高校教务管理系统,都是为了解决课程管理、授课管理、选课管理、成绩管理等教学活动。但是不同的学校在各个教学环节的管理上是不尽相同的。比如授课管理中教学任务上报业务,有的学校是有教研室主任上报,教学院长审核,最后教务处审批通过;但有的学校流程是授课教师上报,教研室主任初审,教学院长终审,最后再到教务处审批。过一段时间,也许教学管理改革又改成其他业务流程了;还有可能是同一时期同样的业务可能工作流不同,如体育部没有教学院长,只需要教研室主任审核即可提交教务处。因此,管理信息系统中工作流的是灵活多变的,在这种灵活多变的自定义流程中,要实现对系统资源的访问控制,就必须结合具体的工作流节点来实现对各个用户赋予操作权限。

最基本的RBAC模型如图1所示。将系统各种对象或资源分成5种元素:用户 (Users)、角色 (Roles)、权限(Permissions)、系统资源 (Resource)、操作 (Operations)。RBAC模型将系统资源与访问权限进行分类,具有相同访问资源及访问权限的用户分配一个角色,然后用户通过会话 (Sessions),即用户与角色的关系,来确定当前用户对系统所具有的所有可访问的资源和对资源的访问权限。RBAC模型有效解决了同类用户权限的分配与管理,提高了管理效率。本文基于RBAC模型,在权限分配上引入工作流(WorkFlow)机制,面向工作流的RBAC模型如图2所示。所有的资源访问权限都是通过工作流分配到角色,用户通过在工作流中的担任的角色来获得相应的资源访问权限。

图1 RBAC模型

图2 面向工作流的RBAC模型

1.2 面向工作流的RBAC数学描述

为了更清楚描述面向工作流的RBAC模型的概念,特作如下数学定义:

定义1 系统功能业务集:BN= {bni|i=1,2,3…k};

工作流集:WF= {wfi|i=1,2,3…l};

工作流结点集:ND= {(ndi,wfj)|i=1,2,3…s;j=1,2,3…n};

数据对象集:DO= {doi|i=1,2,3…m};

用户集:U= {ui|i=1,2,3…t}。

其中,根据角色在不同流程中的权限不同,可以将角色分为三大类:①系统角色 (SR):主要是负责整个系统维护、管理等权限的用户,如系统管理员、数据管理员等;②工作流内部角色 (LR):主要是针对某个工作流设置的角色,它的权限只能在该工作流被授权,不能跨流程使用;③工作流全局角色 (PR):为所有流程定义的角色,它能够在所有流程中被授权。对于工作流的两种角色根据数据对象访问控制需要还可以细分为私有 (SLR、SPR)和公有(PLR、PPR)两种,主要应用在有些数据对象适用于私有角色访问。角色集定义如下

定义2 对于系统里每个业务都对应一个工作流,业务集与工作流的关系是BN与WF的一个二元关系,定义二元关系为:BW= (BN,WF,G (R1)),R1BN×WF,因此对于所有的 (bn,wf) R1表示一个业务分配了一个工作流;工作流每个节点对应一个角色或用户,工作流与角色关系是一个一对多的二元关系,工作流的每个节点根据业务需要可以分配一个或多角色或节点。定义两者关系为NDR= (ND,RO,G (R2)),R2ND×RO,因此对于所有的 (nd,ro) R2表示一个业务下一个结点操作所分配的角色或用户。根据R1与R2的关系,NDR可以表示为 ((nd,wf),ro)。

每个数据对象都依赖于某个具体业务,与业务是多对一的关系,定义二元关系为:DB= (DO,BN,G (R3)),R3DO×BN,对于所有 (do,bn) R3表示一个数据对象被分配到某个业务下。由于数据对象是动态产生的,这种关系也是随着数据对象的产生而生成,随着数据对象的销毁而撤销。

定义3 根据定义2,得到业务、工作流、角色或用户、数据对象等之间的关系集合,下面对以上集合之间关系定义以下约束准则:

(1)用户与角色是多对多的关系,每个用户可以具有多个角色,同样,一个角色可以分配给多个用户,这是用户与角色的最基本的对应关系。

(2)业务与工作流是多对一的关系,每个业务只能指定到一个工作流,而一个工作流可以分配给多个业务,保证了业务执行过程中的唯一性。

(3)工作流结点与角色之间关系可以是多对多的关系,根据具体工作流的需要,有些结点是需要多个角色来协同完成的。

1.3 面向工作流的RBAC模型描述

根据以上定义,可知面向工作流的RBAC权限管理主要是围绕业务展开管理,将系统的所有操作都抽象成表单业务。如系统基本信息的管理、数据上报等都可以抽象成表单数据的流向问题,抽象出来的业务分配具体的工作流,该业务下的所有数据对象都按照分配好的工作流扭转,所有角色的操作权限通过工作流体现。模型描述如下:

(1)权限集合是对于每一个数据对象的所有操作与角色的关系集合,模型描述如图3所示。

图3 权限集合

(2)角色工作流关系描述了为工作流每个结点分配角色的情况,即角色功能权限模型,描述如图4所示。

(3)用户通过角色获得该角色下所有数据对象所拥有的访问集合,模型描述如图5所示。

2 面向工作流的RBAC模型的实现

2.1 数据模型设计

面向工作流的RBAC模型一个重要的基础是建立工作流机制,文献 [8]提出了一种轻量级的工作流引擎模型,文献 [9]提出了一种可应用于知识管理的工作流引擎架构,文献 [10]提出了基于任务和角色的工作流系统权限控制,并使用Petri网来对工作流进行建模。可见,基于工作流管理的机制比较成熟可行。本文将工作流实现方式与角色结合,从而实现角色与业务的有效结合,定义该模型的数据库结构如下:

(1)用户表 (Users):记录登录用户信息,主要字段有:用户代码、登录密码等。

(2)角色表 (Roles):记录各种角色信息,主要字段有:角色代码、角色名称、角色类型、角色类别 (公有或私有)等。

(3)角色权限表 (Role_Module):记录为角色分配可以访问的模块和操作,主要字段有:角色代码、模块名称、操作等。

(4)业务表 (Bussiness):声明各种业务信息,主要字段有:业务代码、业务名称、业务描述等。

(5)工作流程表 (WorkFlow):定义工作流的结点信息以及每个结点对应执行的角色,主要字段有:工作流代码、结点代码、结点名称、执行角色、操作代码、下一个执行结点代码等信息。

(6)任务列表 (MissionList):记录每个数据实例的数据表单进程情况,主要字段有:数据实例ID、工作流代码、当前结点代码等。

(7)数据权限视图 (view_permission):通过角色表、工作流表、任务列表等表建立起一个权限视图,权限视图主要字段有:角色代码、数据实例ID、结点代码、操作代码、模块代码等信息。该权限视图记录了每一个数据实例的当前状态以及该状态下能够操作的角色。

2.2 用户权限验证机制

基于Web的用户权限验证主要是利用Session和Cookies机制保存用户登录的各种信息,这种会话一直保持直到用户退出会话。用户登录验证通过后,访问view_permission视图读出该用户对应角色的所有数据操作权限,并保存到Session或Cookies里。对于验证过程,以ASP.NET为例,通过重写Page基类,在Page基类里添加验证机制,其他需要验证的页面都继承Page基类即可。验证算法分为两部分,第一部分是对模块访问的验证,算法描述如下:

(1)获取当前模块名称m;

(2)查找Role_Module表中当前登录角色的所有能访问的模块集M;

(3)如果m M,则验证通过,否则跳转到登录页面。

第二部分的验证工作主要是对数据实例访问操作权限的验证,主要验证对当前数据对象具有什么样的操作权限。算法描述如下:

(1)获得当前登录的角色R;

(2)查找view_permission视图中属于角色R的所有数据实例do及操作op;

(3)页面赋予所找到的数据实例do以及相关操作OP的权限。

2.3 权限的管理与回收

由于对数据对象的操作都是依赖于工作流的,因此,权限的授予与管理都是基于工作流管理的。权限的授权流程如下:

(1)添加工作流wf;

(2)增加一个工作流结点nd;

(3)为结点的添加操作op权限;(4)为结点添加可访问的角色ro。以上算法完成了角色授权工作,对于每个数据对象主要通过以下方式赋予访问权限和回收权限:

(1)数据对象do在被添加时首先确定是属于哪个模块的数据对象,添加时将该数据对象的业务表单保存到任务列表里,并确定下一个访问结点的角色和操作权限;

(2)所有用户登录,都可以根据角色来获得属于自己的操作权限的数据对象与操作集OP:OP= {(doi,ndi,opi,mdi)|i=1,2,3…y},OP是由数据实例、结点、操作权限、模块名称等基本信息组成的一个四元组;

(3)当用户对一个数据实例完成了当前操作后,该数据实例进入下一个结点,当前用户不再拥有操作权限,自动完成了对权限的回收。

对权限的修改只需修改工作流的结点对应的操作角色即可。

3 模型的实际应用与分析

根据本模型的基本思想,设计开发出某工会信息化管理平台权限模块,有效实现对工会各种业务逻辑以及各种数据对象的细粒度管理。实现过程如下:

首先为用户分配角色,并且为角色分配访问权限,实现模块对角色的可见性,如图6所示。

图6 角色权限分配

然后为系统的各个业务建立工作流,如图7、图8所示。工作流节点的处理对象可以是角色,也可以是用户,从而增加了业务的灵活性。

业务实例产生时,程序将向业务实例表中存储该实例的相关信息以及该实例的下一个执行操作的各种信息,如执行状态,执行对象等,从而实现的实例与角色或用户的点对点的控制。

用户登录系统后,根据自己的角色结合任务状态表里的任务下一个访问或处理角色来获取相应的资源及权限,实现流程如图9所示。登录通过后,系统首页会显示当前用户需要处理的所有任务,如图10所示。

通过面向工作流的RBAC模型建立的某工会信息管理平台的权限控制系统,实现了劳模信息管理、工人先锋号管理的录入、审核机制的有效管理,同时实现了对其他各种竞赛活动的上报审核过程的有效控制,控制过程只需为每个业务建立工作流即可。通过实际应用发现,这种方式为每个任务实例指定一个具体的工作流实例,实现每个任务实例的操作流程及操作步骤的细粒度控制,很好的解决了角色或用户对具体数据对象的访问问题,可以灵活控制审核的级数和审核对象,实现简单,操作简单、灵活、方便,能够很好的满足实际应用要求。

4 结束语

面向工作流的RBAC权限访问控制模型将所有的业务都抽象成一个表单,每个表单对应一个工作流,数据的流向都按照工作流进行,所有角色都是依赖工作流而存在。该模型有效解决了不同数据实例下的权限分配问题。权限的分配与管理简单、清晰,权限能够自动回收。该模型在某工会信息化管理系统以及高校实验室管理系统中得到较好的运用,实践证明该模型在管理系统具有较好的通用性。如何处理好工作流与角色之间的依赖关系,以及如何将该模型抽象变成所有管理信息的通用权限管理模型,是该模型下一步的研究内容。

[1]Sandhu R,Ferraiolo D,Kuhn R.The NIST model for rolebased access control:Towards a unified standard [C].New York:Proc of 5th ACM Workshop on Role Based Access Control,2000:47-64.

[2]Sylvia Osborn,Ravi Sandhu,Qamar Munawer.Configuring role-based access control to enforce mandatory and discretionary access control policies [J].ACM Transactions on Information and System Security,2000,3 (2):123-132.

[3]QIN Zhangrong,WANG Qiang,OU Binjin.Improvement and application of access control on RBAC [J].Computer Engineering and Design,2007,28 (6):1282-1284 (in Chinese).[覃章荣,王强,欧镔进.基于角色的权限管理方法的改进与应用 [J].计算机工程与设计,2007,28 (6):1282-1284.]

[4]ZHAO Jing,YANG Rui,JIANG Luansheng.RBAC permission access control model based on data objects[J].Computer Engineering and Design,2010,31 (15):3353-3389 (in Chinese).[赵静,杨蕊,姜滦生.基于数据对象的RBAC权限访问控制模型 [J].计算机工程与设计,2010,31 (15):3353-3389.]

[5]CHEN Songzheng,XIE Xinwei,HE Lianyue.Role-based user right confinement [J].Computer Engineering and Design,2010,31 (12):2679-2682 (in Chinese).[陈松政,谢欣伟,何连跃.基于角色的用户权力限制 [J].计算机工程与设计,2010,31 (12):2679-2682.]

[6]ZHAO Zaijun.Research on collaborative e-government model of access control based on the distribution of role and authority[J].Computer Science,2010,37 (8):143-146 (in Chinese).[赵再军.基于角色权限分配的协同电子政务访问控制模型研究 [J].计算机科学,2010,37 (8):143-146.]

[7]TANG Jinpeng,LI Linglin,YANG Luming.User attributes oriented RBAC model[J].Computer Engineering and Design,2010,31 (10):2184-2195 (in Chinese).[唐金鹏,李玲琳,杨路明.面向用户属性的RBAC模型 [J].计算机工程与设计,2010,31 (10):2184-2195.]

[8]CAI Xiaowu,HAN Yongguo,LAN Ke.Research and design of lightweight workflow engine [J].Computer Engineering,2010,36 (20):78-82 (in Chinese).[蔡孝武,韩永国,蓝科.一种轻量级工作流引擎的研究与设计 [J].计算机工程,2010,36 (20):78-82.]

[9]WU Ling.Research of workflow knowledge management system workflow engine[J].Computer Technology and Development,2010,20 (8):112-115 (in Chinese).[武凌.工作流知识管理系统工作流引擎的研究 [J].计算机技术与发展,2010,20 (8):112-115.]

[10]QIN Peng,SHU Chang,WANG Jiazhen.Research on application of role-task based WorkFlow authorization management system [J].Fire Control& Command Control,2010,31(10):2184-2195 (in Chinese).[秦鹏,舒畅,王嘉祯.基于任务和角色的工作流系统权限控制 [J].火力与指挥控制,2010,35 (7):176-178.]

猜你喜欢
结点实例对象
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
Ladyzhenskaya流体力学方程组的确定模与确定结点个数估计
攻略对象的心思好难猜
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析
完形填空Ⅱ
完形填空Ⅰ
基于Raspberry PI为结点的天气云测量网络实现
基于DHT全分布式P2P-SIP网络电话稳定性研究与设计