基于角色-功能的Web应用系统访问控制方法
2014-08-05庞希愚仝春玲
庞希愚,王 成,仝春玲
(山东交通学院信息科学与电气工程学院,济南 250357)
基于角色-功能的Web应用系统访问控制方法
庞希愚,王 成,仝春玲
(山东交通学院信息科学与电气工程学院,济南 250357)
分析现有基于角色的访问控制模型在Web应用系统中的不足,提出一种基于角色-功能模型的用户访问控制方法,并对其具体的实现进行讨论。以系统业务功能需求自然形成的Web页面组织结构和用户访问控制需求为基础,划分最底层菜单中页面实现的业务功能,以业务功能作为权限配置的基本单位,通过配置用户、角色、页面、菜单、功能之间的关系,控制用户对页面、页面中所包含的html元素及其操作等Web系统资源的访问。在山东交通学院科研管理系统中的实际应用结果表明,该方法在菜单及页面实现的业务功能上实施访问控制,可使Web系统用户访问控制较好地满足用户要求,有效降低Web系统开发的工作量。
Web系统;基于角色的访问控制;访问控制;业务功能;角色-功能模型;动态系统菜单
1 概述
基于“角色-页面模型”[1]的Web用户访问控制方法,通过在角色和页面之间建立直接的对应关系并控制用户是否可访问页面来实现用户权限管理,该方法简化了基于角色的访问控制(Role-based Acc ess Control, R BAC)模型的实现,同时减少了权限判断的代码,但是角色与页面直接对应的方法,使得权限控制的最小单位只能是页面,则权限控制的粒度完全依赖于页面所实现的功能。基于角色-模块-页面模型[2]的访问控制方法可以较好地解决在页面功能划分太细时造成页面太多的问题,但一个页面只属于一个权限配置模块,仍然无法彻底避免出现冗余页面的现象。“ASP.net中基于RBAC的通用权限管理系统”所提的权限控制方法中,把菜单、页面、字段和操作抽象为统一的系统资源,访问控制粒度可以细化到页面字段[3],但用户权限计算量较大,且对权限管理人员的要求较高。根据Web应用系统的特点,并结合山东交通学院科研管理系统中用户权限管理的需要,本文在RBAC模型和Web应用系统特点的研究基础上,提出一种基于角色-功能模型的用户访问控制方法,通过考虑用户、角色、功能、菜单、页面的关系以实现通用性强、用户使用方便、不额外增加Web系统开发工作量、粒度可控的用户权限管理。
2 RBAC权限管理模型
访问控制是保证计算机信息系统保密性、完整性、可用性的重要手段之一,它的目的是保证系统资源受控、合法地使用,使用户只能根据自己的权限大小来访问系统资源,不得越权访问。
传统的强制访问控制和自主访问控制由于各自的缺点均不能满足日益复杂的管理系统对访问控制的需求,RBAC正是基于这种应用需求的推动下产生的。RBAC以组织视图角度进行权限管理,能灵活表达企业组织的安全政策,是目前最为广泛接受的权限模型[4]。RBAC的主要思想是将授权和角色联系在一起,可分配角色到用户,使用户通过角色间接地访问资源。这种方式通过引入角色中介,实现了用户与访问许可的逻辑分离,极大地方便了权限管理[5]。其中具有代表性的模型RBAC96模型。图l是该模型中的基本模型RBAC0。
图1 RBAC0模型
在RBAC之中包含5个基本元素:用户(USERS),角色(ROLES),目标(OBS),操作(OPS),许可权(PRMS),权限被赋予角色,而不是直接被赋予用户,当一个用户拥有某个角色时,此用户就拥有了该角色所包含的权限。会话表示的是用户和角色之间的关系,用户每次必须通过建立会话来激活角色,得到相应的访问权限。RBAC模型是针对传统的信息系统提出的权限控制方法,但Web系统有着与传统的信息系统不同的特点,随着Web应用模式的广泛使用,有必要对针对Web系统的特点对RBAC模型进行适当的改变,使其能更好地满足Web系统的要求。
3 Web应用系统的特点
通常对用户来说,一个Web系统就是一些页面的集合,用户通过浏览器访问页面并按照页面上设定的操作来完成某项任务或工作,用户的所有操作都是通过对Web页面的访问来完成的。Web页面不仅为用户提供了所需的数据,并为用户提供了所需的操作。数据通过页面的各种HTML标签(例如文本框、下拉列表框等)来显示;操作指页面提供的例如新增、修改、删除、打印、审核等各种交互行为,一般通过HTML的按钮、锚等标签实现。在Web应用中,基于业务需求的多样性,Web页面的组织形式十分灵活,页面、菜单与业务功能之间关系模型如图2所示。
多个业务逻辑可以放置在一个页面中,一个页面包含了多个业务功能;同时,一个业务逻辑也可以由多个页面来实现,多个页面实现了一个业务功能。一个业务功能包含多个功能操作,例如新增、修改、删除、审批、打印、用户自定义的操作等。Web系统的最底层菜单可能对应着一个页面;也可能对应着多个页面,在此情况下,会选取其中的一个页面作为菜单的入口页面。Web系统的最底层菜单对应着系统的最小业务功能模块,由1个或多个业务功能组成。Web系统的上层菜单是由多个子菜单组成的,对应着系统的较大业务功能模块。
图2 页面、菜单、功能组织结构模型
4 角色-功能模型
4.1 RB AC应用于Web应用系统的不足
NIST RBAC只是规范了RBAC系统的基本结构组成和统一的属于,并非致力于RBAC模型的具体实现。在实际Web应用中使用RBAC模型应充分考虑Web系统的特点,使设计出的RBAC模型具有较高的通用性,权限控制的粒度调节方便,能满足不同Web系统的需求;可以比较简单的嵌入到未实现权限管理的Web系统中,并不破坏系统的体系结构和业务逻辑,增加系统开发工作量;方便权限管理员的使用。
RBAC模型中权限就是允许对一个或多个客体执行的操作,但RBAC模型中的客体、操作都是抽象的概念,由此导致了权限定义的多样性。因此,在定义Web系统的客体、操作及权限时,需以Web应用系统自身的特点为基础,并充分研究Web应用系统页面、菜单及功能的构成方式,才能设计出理想的Web应用系统权限管理功能。在Web应用系统中权限管理主要体现在不同的用户通过浏览器能够访问到的页面可能不同,以及对于同一个页面而言,能够看到的数据及进行的操作也可能不同。用户要完成某项任务,必须通过访问页面才能实现,因此根据图2,RBAC中的客体对应着页面中的数据,操作指的是对页面及页面中以数据形式表现的客体所进行的动作,由此可见,用户对某个页面的访问权限是该页面所实现的业务功能的子集。
首先对于一个Web应用系统,根据用户的访问权限,把页面所实现的业务功能进行拆分重新生成多个页面,把用户的访问权限所能进行的操作对应到某一个新生成的页面所能完成的功能上面去,则作为Web应用客体的唯一表现形式——页面客体,对它的操作就只有访问这一项,例如基于角色-页面模型的Web用户访问控制方法提出的通过控制页面对用户是否可见来实现用户权限的管理,但权限控制的粒度取决于以页面为基本单位的业务功能的划分,如果基于页面的功能划分太粗,则会导致权限控制的粒度太大,如果基于页面的功能划分太细,则会造成页面数量太大的问题。面向Web应用系统的访问控制设计及应用通过模块组织页面,模块作为权限配置的基本单位,根据权限配置需要,模块所实现的业务功能可以灵活的分散到模块所拥有的页面中去,可以较好的解决在页面功能划分太细时造成页面太多的问题[6];但在面向Web应用系统的访问控制设计及应用所提的权限控制方法中,一个页面只属于一个权限配置模块,即一个页面只能实现一个业务功能或其中的一部分,仍然无法彻底避免冗余页面存在,例如:通过页面,不同的用户看到的数据库某张表中的字段可能是不同的,但操作可能是相同的,按照面向Web应用系统的访问控制设计及应用的权限控制方法,需要根据用户分类配置多个权限配置模块,让不同的用户看到不同的数据,势必造成一定数量的冗余页面。通过对基于角色-页面模型的Web用户访问控制方法和面向Web应用系统的访问控制设计及应用的分析可以得出:若把页面所实现的业务功能拆分为若干个业务功能真子集,每个业务功能真子集对应一个页面或一组页面;一个页面或一组页面所实现的业务功能真子集,对应一个权限所能进行的操作或一个权限配置模块,则不同的页面之间可能会存在着类似或相同的代码,增加了系统开发的工作量和系统维护的难度。
其次角色与权限在抽象层次上的不同往往导致权限配置上的困难。角色在概念上指的是工作中的一个岗位,而权限则指的是对数据的操作,角色和权限是不同层次上概念。一个角色在工作中是否对某些数据进行操作,怎样配置访问权限才最合适,既能满足系统需求,又能方便非计算专业用户使用,现有的RBAC研究对此没有给出明确的标准和相应的指导。ASP.net中基于RBAC的通用权限管理系统所提的权限控制方法中,把菜单、页面、字段和操作抽象为统一的系统资源,访问控制粒度可以细化到页面字段,但为了区分不同页面的字段和操作,需要存储每个页面的字段和操作,随着页面、角色、用户数量的增加,用户权限计算量成指数级增长。在Web应用系统中的页面,不同身份的人看到的数据字段不同可以通过让同一个页面支持多个权限配置模块来实现,也就是允许一个页面可以继续集成多个相近的业务功能。访问不同字段的用户种类一般要比页面中字段本身的数量要少,并且可以把系统中所有的操作独立出来以减少权限管理的运算量;由于是通过在一个页面中集成多个业务功能来支持多个权限配置模块,权限管理模块中的权限会更贴近实际业务,方便权限管理员使用。
4.2 基于角色-功能模型的权限管理系统设计
目前RBAC缺陷的本质是只给出了最抽象的模型,并未对现实的应用进行充分模拟。结合Web应用系统自身的特点和RBAC应用在Web系统中的不足,通过深入分析Web应用系统中页面与功能之间的逻辑关系,以及功能与权限配置模块之间的关系,本文提出了基于角色-功能模型的用户访问控制方法,通过配置用户、角色、页面、菜单、功能之间的关系来控制用户对页面、页面中所包含的html元素及操作等Web系统资源的访问。基于角色-功能模型的权限管理模型图如图3所示。
图3 基于角色-功能模型的权限管理模型
在这个权限管理模型中,页面、菜单与业务功能之间具有下面的关系:
(1)业务功能由一个或多个页面实现,每个页面可以实现一个业务功能的一个或多个操作(如查看、新增、修改、删除等),也可以实现多个业务功能的操作。
(2)每个最底层菜单是由一个或多个页面组成的,并且有一个入口地址,即点击菜单时应显示的页面地址;每个功能页面只属于一个最底层菜单。底层菜单与上层菜单之间以树形结构方式组织。
(3)一个最底层菜单通过页面实现了一个或多个业务功能,一个业务功能只通过一个最底层菜单中的相关页面实现。
为了进行访问控制,在权限管理模型中需要对页面和菜单进行业务功能的配置,以指明页面和菜单是负责完成哪些业务功能;并配置底层菜单的入口页面,每个功能页面属于哪个底层菜单。系统中的每个用户属于一个或多个角色,每个角色对各种业务功能都有相应的访问权限,而属于这些角色的用户也将具备角色所拥有的访问权限,特别地,对于一个用户属于多个角色的情况,用户具有的权限是各个角色所有拥有权限的并集[7]。基于角色-功能模型权限管理系统将会从以下的方面进行用户访问控制。
(1)用户身份验证:当用户通过账号和密码登录Web系统时,系统会对用户的账号和密码进行验证,检查用户是否为合法用户。如果为非法的用户,则拒绝进入系统;如果为合法的用户,则允许进入系统,并读取用户的访问权限信息存放于系统缓存中(Catch等)[8-9]。
(2)动态系统菜单:由于不同的用户拥有的角色不同,则对系统业务功能的访问权限不同。在用户进入Web系统后,需要根据用户的功能访问权限信息,鉴别出用户能够访问的业务功能。只要用户具有权限访问底层菜单所对应的任意一个业务功能,则用户具有权限访问该底层菜单,否则用户不具有访问该菜单的权限。若用户具有访问底层菜单的权限,则用户具有访问相应上层菜单的权限[10-11],否则用户不具有访问相应上层菜单的权限。根据用户对底层菜单的访问权限和菜单权限的树型结构关系,从而动态生成用户所能访问的系统菜单。当用户能够访问某页面并进行该页面访问时,根据页面中的菜单配置,加亮当前页面所对应的底层菜单及上层菜单。
(3)页面操作权限验证:当用户USER_A访问一个页面时,系统将根据页面所实现的业务功能和USER_A对相应业务功能的访问权限,判断此用户是否具有访问该页面的权限。如果USER_A没有权限访问页面,则禁止进入;如果USER_A有权限访问页面,则需要根据USER_A对业务功能的访问权限进一步判断用户能操作此页面中相应业务功能的哪些操作,对于用户没有权限进行的操作,应该把相应的页面元素隐藏或禁用。其中,判断用户能否进入页面的逻辑可以封装在页面的基类中,通过回调当前功能页面的业务功能配置,统一判断用户是否具有进入页面的许可;用户能使用页面中的哪些功能及相应的操作这一步,可编写一套内置了权限判断的公用用户控件,简化实现。
5 角色-功能模型的关键实现
在山东交通学院科研管理系统中,基于asp.net 3.5和Microsoft SQL Server2500的开发平台,采用asp.net 3.5中基类页面、母版及自定义控件[12],通过应用上文提出的基于“角色-页面模型”的权限管理模型有效地实现了Web系统的用户访问控制。
5.1 与角色管理相关的表
根据上文提出的Web应用系统权限管理模型(见图3),得出图4的与权限管理相关的数据库表(其中画横线的字段为主键,粗体字段不能为空):
(1)User、Role、RoleUser表用于定义用户实体及其属性、角色实体及其属性、用户到角色的指派。
(2)MenuItem表用于定义树型结构的菜单。在MenuItem表中,Url字段是指菜单(最小业务功能集合)的入口页面的URL,当记录所代表的菜单不是最底层菜单时,Url字段的值为NULL;ParentMenuItemId字段为自引用(MenuItemId)字段,是指该记录所对应的菜单的上层菜单,若该记录所对应的菜单为最顶层菜单,则ParentMenuItemId字段的值为NULL;DisplaySequence字段是指具有相同父菜单的子菜单的显示顺序;IsAlwaysEnabled字段是指该菜单所对应的页面是否需要进行权限验证,如果IsAlwaysEnabled的值是False,表示该菜单的入口页面对所有用户可见,不需要进行权限验证;否则,该菜单的入口页面需要进行权限验证。
(3)Funtion表用于定义菜单实现的业务功能,Access Type字段是指业务功能具备哪些业务操作(如添加、删除、审核等)。RoleFunction表是指角色到权限的指派,该表中的AccessFlag字段是指角色对业务功能的访问权限。
图4 与权限管理相关的数据库表
Funtion表和RoleFunction表中的两种权限在系统中使用统一的名称、编码和解读方式,以简化管理。
权限的实现采用基于整数二进制位的方法,整数的每一位代表一种操作,0代表不具备该操作,1代表具备该操作。将某角色对某功能的访问权限值与操作掩码进行与运算,结果与掩码相等则具有该掩码对应的权限,反之则没有。
5.2 页面业务功能配置
在上文提出的Web系统权限管理模型中(见图3),需要对页面进行一次业务功能及所属菜单的配置,以指明这个页面是负责完成哪些业务功能及其操作的,并指明该页面属于哪个最底层菜单。考虑到实现的容易性以及可操作性,在山东交通学院科研管理系统中,所有的页面都继承自BasePage抽象类,它包含了所有页面都可以使用的通用逻辑,其中有2个方法用来指明页面所属的最底层菜单及实现的业务功能,这2个方法的定义如下:
继承BasePage的页面类必须实现这2个方法。
(1)MenuItemName抽象方法返回页面所对应的菜单项的名称,返回的菜单项的名称将决定要显示哪些顶层菜单和左侧菜单。
(2)FunctionNames抽象方法以字符串数组的形式返回与该页面相关的功能。大多数情况下,一个页面只有一个功能;但有时一个页面同时实现了几个功能,需要将页面的安全设置分为几个部分,因此需要一个数组。
5.3 权限验证方法
系统从用户身份验证、动态系统菜单生成和页面操作权限验证三方面进行用户访问的控制。在用户登录时,检验用户是否为合法用户,读取用户的功能权限集合,根据功能权限得到用户能访问的最底层菜单,再通过菜单的树型组织结构生成用户能访问的动态菜单。而页面操作权限验证,发生在访问某个页面及其页面的数据和操作时,是权限管理的重点和难点所在。由于在访问每一个页面或执行每个操作前都需要进行权限的验证,因此本文将采用BasePage基类中的OnInit方法进行用户对页面访问权限的验证,一个页面的Oninit方法最先启动执行[10],只要把权限验证放在OnInit方法中,将能保证在进入每一个页面前都进行权限的校验,同时也能够有效减少编写代码的工作量。
具体的权限验证方法如下:
(1)从Function表中取出最底层菜单所实现的业务功能列表F及每个业务功能f实现的业务操作Operation-f。
(2)由当前用户所属的角色(可能属于多个角色)列表,从RoleFunciton表中取出用户所属的每个角色对于业务功能f的访问权限值,把这些角色中对于f的访问权限值相加即得到当前用户对于业务功能f的访问权限值Permission-f。
(3)Operation-f和Permission-f进行逻辑与运算,如果结果不为0,则代表用户有权限访问该业务功能f;否则代表用户没有权限访问该业务功能f。
(4)如果用户有权访问业务功能f,则用户有权访问实现该业务功能的最底层菜单及其上层菜单;若用户无权访问某菜单所实现的所有业务功能,则用户不能访问该菜单。
(5)当用户要进入某页面p时,若该页对用户始终可见,则在页面p的Oinint方法中取消对用户的权限验证。否则,通过页面p实现的FunctionNames返回页面p实现的功能列表Fp。
(6)对于Fp中的每个功能fp,把方法(1)中得到的fp的业务操作Operation-fp和方法(2)中得到的当前用户对fp的访问权限值Permission-fp进行逻辑与运算。若存在一个业务功能fp的逻辑运算结果不为0,代表用户有权访问该页面p;若Fp中的所有功能fp的逻辑运算结果均为0,代表用户无权访问该页面。
(7)如果用户有进入此页面的权限,则需要进一步验证用户能操作此页面中的哪些功能及操作,以控制页面中各元素的可见性。通过对功能fp访问权限值Permission-fp进行解码,即可判断Permission-fp拥有哪些具体操作。
6 结束语
RBAC是目前较为流行的一种安全控制技术,本文在分析Web应用系统中的页面、菜单与功能之间关系的基础上,以业务功能作为权限配置管理的基本单位,可以避免因Web系统引进权限管理模块而导致的大量重复代码,同时也减少了授权管理的复杂性,降低了对系统管理员的要求。通过将功能与菜单关联,可以实现权限管理的粗粒度访问控制;将功能与页面关联,可实现细粒度的访问控制。通过在项目中的实际应用,证明了本文所提的实现方案可靠方便,通用性强,可移植性高,有利于提高系统开发效率。基于角色-功能模型的权限管理系统其局限性表现在仅实现了RBAC96基本模型RBAC0。如果需要实现更复杂、功能更强的权限管理,则需要对该权限管理模型做进一步的扩展。
[1] 倪晚成, 刘连臣, 刘 伟. 基于角色一页面模型的Web用户访问控制方法[J]. 计算机工程与应用, 2006, 42(21): 125- 126.
[2] 陆庭辉, 文贵华. B/S结构下的用户访问控制方法[J]. 计算工程与设计, 2010, 31(7): 143-146.
[3] 范明虎, 英 红, 伍孝金. ASP.net中基于RBAC的通用权限管理系统[J]. 计算机工程, 2010, 36(1): 143-145.
[4] 杨文波, 张 辉, 刘 瑞. 一种基于角色访问控制的新模型[J]. 计算机工程, 2006, 32(21): 173-175.
[5] 夏榆滨, 宣明付. 基于RBAC的统一权限管理系统研究[J].微计算机信息, 2006, 22(9): 111-116.
[6] 李艳翠, 孔 芳, 朱巧明. 面向Web应用系统的访问控制设计及应用[J]. 计算机工程与设计, 2008, 29(5): 1076-1079.
[7] 边小凡, 赵 峰. 基于REST风格的RBAC模型研究[J].计算机应用与软件, 2009, 26(9): 126-163.
[8] 刁明光, 薛 涛, 潘文勇. 基于用户组和客体抽象的权限控制模型[J]. 计算机应用, 2009, 29(z1): 112-113.
[9] 董 斌, 陈进哲, 刘秀玲. 基于Web的RBAC权限机制在电子病历系统的研究[J]. 计算机工程与应用, 20 08, 44(26): 223-225.
[10] 邢天扬, 曹 曼. 基于TP-RBAC权限树算法研究及应用[J].计算机工程与设计, 2010, 31(5): 950-956.
[11] 张 兴, 王 华, 施俊士. Web信息系统中基于树型结构的RBAC模型设计与实现[J]. 计算机应用与软件, 2009, 26(11): 157-159.
[12] 朴春慧, 曲玉森, 杨春燕. 高校教师管理系统开发中的若干关键技术研究[J]. 计算机工程与设计, 2010, 31(14): 3323-3324.
编辑 索书志
Access Control Method for Web Application System Based on Role-function
PANG Xi-yu, WANG Cheng, TONG Chun-ling
(School of Information Science and Electrical Engineering, Shandong Jiaotong University, Jinan 250357, China)
The access control requirements of Web application system and the shortcomings in Web application system with Role-based Access Control(RBAC) mod el a re analyzed, a f undamental idea of access contr ol based on role-function model is proposed and its implementation details are discussed. Base d on naturally formed Web pag e orga nization structure according to th e business funct ion requirements of the system and access control requirements of users, business functions of pages are partitioned in bottom menu in order to form the basic unit of permissions configuration. Through configuring the relation between user, role, page, menu, function to control user access to system resources such as Web page, the html element and operation in the page. Through the practical application of scientific research management system in Shandong Jiaotong University, ap plication shows that implementation of access control in the page and menu to achieve business function, can well meet the enterprise requirements for user access co ntrol of Web system. It has the advantages of simple operation, strong versatility, and effectively reduces the workload of Web system development.
Web system; Role-based Access Control(RBAC); access control; business function; role-function model; dynamic system menu
10.3969/j.issn.1000-3428.2014.05.030
国家自然科学基金资助项目(61103022);济南市科技发展计划基金资助项目(201221140, 20122114);山东交通学院科研基金资助项目(Z201307, Z201230)。
庞希愚(1981-),男,硕士研究生,主研方向:信息安全;王 成,硕士研究生;仝春玲,教授、博士。
2013-03-21
2013-05-26E-mail:xiyupang@126.com
1000-3428(2014)05-0144-05
A
TP309