- 1 -
中国科技论文在线
基于 RBAC 的扩展权限管理模型的设计与
实现#
金鑫1,2,王晶1,李炜1*
基金项目:国家自然科学基金(No. 61072057,60902051);国家 973 计划项目(No. 2012CB315802);
中央高校基本科研业务费专项资金(BUPT2009RC0505);国家科技重大专项(No. 2011ZX03002-001-01,
移动互联网总体架构研究).
作者简介:金鑫,(1984-),男,硕士研究生,研究方向为业务网络智能化。
通信联系人:王晶,(1974-),女,副教授,业务网络智能化。
(1. 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 5
2. 东信北邮信息技术有限公司,北京 100191)
摘要:本文对基于角色的访问控制(Role-Based Access Control)模型进行了研究,并针
对 Web 系统的特点和安全性等问题,提出了相应的设计原则。最后,对应具体项目,采用
FleaPHP 作为框架,设计并实现了一种专用的扩展权限管理模型。
关键词:RBAC;安全;权限管理;FleaPHP 10
中图分类号:TP311
Design and Implementation of Extended Privilege
Management Model Based On RBAC
Jin Xin1,2, Wang Jing1, Li Wei1 15
(1. State Key Laboratory of Networking and Switching Technology,Beijing University of Posts
and Telecommunications, Beijing 100876;
2. EBUPT Information Technology Co. Ltd., Beijing 100191)
Abstract: The article researches models based on RBAC, and then introduces several design
principles, aiming to solve the security problems of a web system. Finally, the article designs an 20
extended privilege management model in a real project using the structure of FleaPHP.
Keywords: RBAC; Security; Privilege Management; FleaPHP
0 引言
随着互联网的不断发展,网络安全问题显得日益重要。而基于 Web 的系统,由于资源25
的开放性和共享性,其系统安全也一直是急需解决的问题。经过人们长期的深入研究,提出
了许多加密、认证机制。但随着系统规模和问题复杂度的不断增加,人们越来越意识到,任
何单一的安全手段都存在一定的局限性,要想真正的解决问题,必须依靠多种手段的综合。
传统的访问控制策略包括:自主访问控制(DAC,Discretionary Access Control)、强制
访问控制(MAC,Mandatory Access Control)等。但是它们都存在一些缺陷,如 DAC 安全30
性能较弱,缺乏防止“隐密通道”的能力,MAC 对于访问控制严格,实现工作量大,不适用
于主体或者客体经常更新的应用环境。
在此基础上,20世纪 90年代David Ferraiolo和Rick Kuhn提出了首个RBAC(Role-Based
Access Control)模型[1]。在此之后,Ravi Sandhu等人又提出了具有代表性和规范性的RBAC96
模型[2],由于该模型实现了用户和权限的分离,使得权限控制更加灵活,因而得到了广泛的35
应用。
本文设计了一种专用的扩展 RBAC 权限管理模型,并将其应用到实际中。该模型符合
基本 RBAC 模型的规范标准,并采用基于用户行为[3]的方法对用户访问进行控制。这一过程
- 2 -
中国科技论文在线
中利用的设计原则和方法,对于其他 Web 系统,具有一定的借鉴意义。
1 RBAC 模型介绍 40
基本思想
RBAC 的基本思想是在用户和权限之间引入角色的概念,将用户和角色联系起来,并通
过对角色的授权来控制用户对资源的访问。RBAC 对访问权限的授予由管理员统一管理,并
授予给角色,而用户不直接与权限关联,系统将根据用户在组织内所拥有的角色来做出访问
控制。 45
由于 RBAC 将用户与访问权限进行逻辑分离的特性,因此极大的方便了对于权限的管
理。在实际工作环境中,由于角色与用户的对应关系一经确定就相对固定,而且指派工作不
需要过多的技术,这一任务可由对业务流程较为熟悉的行政或管理人员担当。而将权限授予
角色的工作较为复杂,需要一定技术能力,可由专门的开发人员进行分配,但开发人员无法
将权限授予给具体用户,这与实际工作情况也是一致的。 50
在 NIST(The National Institute of Standards and Technology,美国国家标准与技术研究
院)标准 RBAC 模型中,主要由四个部件模型组成,包括基本模型 RBAC0(Core RBAC)、
角色继承模型 RBAC1(Hierarchal RBAC)、角色限制模型 RBAC2(Constraint RBAC)和
统一组合模型 RBAC3(Combined RBAC)。RBAC1 和 RBAC2 都是建立在 RBAC0 模型基
础之上的,而 RBAC3 是 RBAC1 和 RBAC2 的组合,RBAC3 模型对核心模型引入了角色继55
承和约束限制,是一个相对完整的模型。RBAC 模型之间的关系如图 1 所示:
图 1 RBAC 模型家族关系图
模型的数据元素及关系 60
一个基本的 RBAC 模型如图 2 所示:
图 2 基本 RBAC 模型
可以看出,它主要由四个数据元素和两种关系组成: 65
四个数据元素包括:
1) 角色(Role):一定数量的权限的集合,是粗粒度和细粒度的接口。角色是一个引
入概念,是用户自身职能或者对资源操作能力的一个实体。角色可以是一个根据需
要进行抽象的概念,也可以是具有某种实际含义的对应系统中某种功能的语义体。
2) 用户(User):用户是访问或操作计算机信息系统中数据、界面、Web 页面菜单等70
- 3 -
中国科技论文在线
资源实体的主体。用户可以是人、机器设备或者计算机软件程序服务等。
3) 权限[4](Permission):资源(Resource)是系统中我们需要访问控制的实体,如菜
单、页面等;而操作(Operation)是主体实施在客体资源上的访问方式,如读写、
修改、浏览等。权限就是操作资源实体上的许可,是执行操作的权利。权限由操作
和资源组成,它是一个二元组(操作,资源)。用 Op 表示操作,用 Re 表示资源,75
用 P 表示权限,则 P=(Op,Re)。
4) 会话[4](Session):会话是每当用户进入系统时就会获得相应的角色集合,从而就
建立了一次会话。在 RBAC 模型中用户是一个静态概念,而会话是动态的,每次
会话就是由用户发起的。用户 U 与会话 S 之间是一对多的关系,即访问系统时,
一个用户可能建立一个或多个会话,而一个会话只能关联到一个用户。而会话结束,80
相应的角色立即钝化,处于未激活状态。
另外,当用户数目较多时,为每位用户分别指派角色变成了非常繁琐的事情。此时可以
引进用户组(Group)的概念,将角色指派给用户组,这样,组内的所有用户便具有用户组
的所有角色权限,实现了批处理的功能。而且在实际生产环境中,用户组的概念可以与公司
的组织结构相对应,具有很高的现实意义。 85
两种关系包括:
1) 角色权限分配(Permission Assignment):根据角色的职责为角色分配相应的权限。
用户通过登录系统获取角色集间接地获取到系统中的访问权限。在分配权限时,通
常遵循最小特权原则,这样既能保证在允许范围内充分行使特权又不会超出其本身
应有的权限范围。 90
2) 用户角色分配 UA(User Assignment):指在系统中为用户添加相应的角色,用户与
角色之间通常是多对多的关系。用户角色分配通常根据用户在系统中的实际职责来
分配相应的角色。
2 扩展权限管理模型的设计
设计原则 95
依据基本 RBAC 模型,我们可知模型设计包括对其基本数据元素的设计,即角色设计、
用户设计、权限设计和会话设计。对于每一类设计,都需要遵循一定的设计原则。
1) 角色设计原则:
角色分层原则:如果一个客体被授权访问一个角色,且该角色包含另一个角色,则该客
体也被允许访问被包含的角色。 100
角色授权原则:角色具有互斥关系,具有互斥关系的角色不能被赋予给同一个用户。例
如在银行中,一个人不能既赋予会计角色又赋予出纳角色。另外,一个客体在未经授权的情
况下不能拥有某一个活跃的角色。
角色继承原则:角色是可以继承的,但是具有互斥关系的角色不能被同一角色继承。角
色拥有被继承角色的所有权限,另外还可能包含一些被继承角色所不具有的权限。角色继承105
时,互斥关系也会被继承。
2) 用户设计原则:
一个用户只能对应一个执行者,因为如果一个执行者能够拥有多个用户身份,那么基于
角色的权限管理就失去了意义[5]。
3) 权限设计原则: 110
由于权限是资源与操作的集合,因此对于不同的应用系统,权限的分配与设计也应有所
区别。但就一般性而言,权限设计仍具有一定约束性可言:
权限具有前置关系,即权限 P1 可能需要具有权限 P2 才有效。
- 4 -
中国科技论文在线
权限不具有包含关系,即对于任意权限 P1、P2,不应具有关系 P1 包含于 P2。
权限也不具有互斥关系。 115
在此约束关系的基础上,可以认为,权限的粒度取决于资源的粒度。例如在本系统中,
资源的粒度包括“终端”,那么权限的粒度应该是针对“终端”展开的,如“终端管理”、
“终端监控”等权限。
4) 会话设计原则:
在 RBAC 中引入会话机制,是为了实现最小权限原则。会话允许只激活赋予给用户的部分120
角色,如果没有会话,所有角色将处于活动状态,这可能会违反最小权限原则。考虑到通用
性,以及为了满足角色的动态职责分离,会话应该设计成可以激活用户的一个或多个角色[6]。
总体架构
营业厅联播系统,简称 EBMS(Electronic Broadcast Management System),它定位于借
助网络与系统平台,通过数字传输和视频播放等信息化技术,将营业厅电视、电子海报屏幕125
等各类电子显示设备进行联网,以远程管理的方式实现对各类电子屏幕统一内容、统一播放、
统一监控的集中化管理,提升营业厅一体化、无纸化宣传管理水平和效果。
按照要求,系统功能应该包括审批待办事项、终端管理、内容管理、任务管理等,每一
功能模块对应于一类角色,包括审批员、终端、内容、任务操作员等。每类角色由系统分配
相应权限,并在权限范围内各司其职。在某一类角色中,根据实际情况,具体用户还可以在130
继承的基础上拥有不同的权限。例如在终端管理的功能模块中,可能具有终端管理员和普通
终端操作员两类用户,终端管理员具有该模块下的所有权限,包括终端的建立、编辑、删除
等,还可以向终端发送远程命令、监控终端状态等。而对于普通终端操作员,可能只具有终
端的建立、编辑权限。其他功能模块的情况与此类似。在系统部署到具体省份时,可能还会
有省、市级管理员、广告主、代理商等角色。这时,结构将更为复杂。由此可知,系统的权135
限组织已经不同于传统网站的管理员、用户二级平行结构,需要我们对 RBAC 模型进行扩
展,以实现权限分配的简单性和灵活性。
根据系统的实际需求,我们设计了数据库 ER(Entity Relationship)图,如图 3 所示:
图 3 RBAC 模型对应的 ER 图 140
该模型严格遵循前一章节所述的设计原则,并支持群组(Group)的功能。每一功能实
- 5 -
中国科技论文在线
体(如 usergroup、operator、powerinfo、role)均支持子类的继承。在角色表 role 中,字段
sysroleId 用于区分系统角色类型,包括管理员、广告主、代理商等。系统角色是根据功能类
型的不同进行区分的一类角色,可以认为是所有其他角色的超类。系统角色拥有的权限在设145
计初期时进行定义,且一经确定便不能更改,其权限配置保存在后台文件中。
服务器端我们采用基于 PHP 语言的框架 FleaPHP 进行开发工作。FleaPHP 采用 Passive
MVC 模式,将系统分为三个层次,即 Model(模型)层、View(视图)层和 Controller(控
制器)层。其中,Model 用于封装与业务逻辑有关的代码和数据,例如对订单数据进行各种
运算。在 Passive MVC 模式中,Model 完全不知道自己身处于 MVC 结构之中。换句话说,150
Model 就是一个普通的对象,与 MVC 模式里面的其他组成部分完全没有关联。View 用于呈
现内容给用户,也就是将程序运行的结果返回给浏览器。Controller 用于接收用户输入信息,
然后调用 Model 对输入数据进行处理并获得处理结果。最后将结果传递到 View,从而让用
户能够看到自己操作的结果。在具体设计时,按照纵向分割的思想,我们在 Model 层下方
设计了 Table 层,用来实现与关系数据库的所有操作。 155
这样,借助 FleaPHP,服务器端权限访问控制的流程如图 4 所示:
图 4 应用程序的执行流程
160
浏览器端,采用 ExtJS 对用户行为进行控制。ExtJS 由 JavaScript 编写,是一种用于创
建前端用户界面,并与后台技术无关的前端 Ajax 框架。ExtJS 的特点在于强大的图形展现功
能和对表格控件的使用,利用它构建的 Web 应用具有与桌面程序一样的标准用户界面和操
作方式,并且能够横跨不同的浏览器平台。因此,ExtJS 已经成为开发具有完美用户体验的
Web 应用的首选。 165
3 扩展权限管理模型的实现
登录认证的实现
系统登录认证的流程图如图 5 所示:
- 6 -
中国科技论文在线
170
图 5 登录认证流程图
对于 ExtJS 进行 Ajax 请求的功能模块,服务器端依然采用 MVC 模式,其调用方式如图
6 所示:
Controller层:
接收用户信息,验证码等
Model层:
封装信息,并分配用户SESSION
Table层:
查询OPERATOR表,查看用户信息是
否与数据库中相匹配 175
图 6 服务器端 Ajax 请求执行流程
对于图中尚未体现的 View 层,它会根据用户的具体角色信息,按照 Controller 层返回
的参数,在 ExtJS 的控制下,对页面进行构造,并将最终内容返回给浏览器。例如名为“超
级管理员”的用户,他拥有系统的所有权限,ExtJS 会根据 Controller 层返回的 Json 数据,将180
所有一、二、三级菜单和按钮呈现出来,从而实现权限的授予。而名为“Test”的用户,可能
只拥有操作广告的权限,按照同样的方式,他的登录界面只能显示与广告相关的菜单和按钮。
角色管理的实现
根据 RBAC 模型的基本概念,角色与权限形成直接映射关系,因此角色管理的相关操
作在 Table 层只针对角色表、权限表和角色-权限关联表。功能点包括角色列表、角色添加/185
编辑、权限修改、角色删除等。系统依照 MVC 的思想,自下而上,最终通过 View 层的构
造将页面呈现给用户。各功能模块的调度关系如图 7 所示:
- 7 -
中国科技论文在线
图 7 角色管理示意图
190
用户管理的实现
由于用户所属角色拥有的权限是该用户权限的最大集合,因此,用户权限无法超越其角
色权限。这是通过在 Table 层联查用户、角色和权限表来进行控制的。属于同一角色的不同
用户可以根据自身特点在权限集合内任意设置权限而不必相互一致,这大大增加了系统的灵
活性,方便用户根据需求进行自定义设置。另外,用户管理功能还支持群组,便于日常管理。195
用户管理各功能模块的关系如图 8 所示:
用户管理页面
用户添加窗口 用户删除窗口 权限修改页面
getList() createOperator() editOperator() delOperator() setPower()
用户列表
Controller层
用户编辑窗口
getList() createOperator() editOperator() delOperator() setPower()Model层
Table层 角色
表
用
户
表
角色
|
用户
表
View层
用
户
组
表
用户
|
用户组
表
图 8 用户管理示意图
- 8 -
中国科技论文在线
4 结束语 200
本文介绍了 RBAC 模型的基本概念,模型数据元素及其关系,并提出了模型设计时应
遵循的原则。在此基础上,根据项目的实际需要,提出了一种基于基本 RBAC 的扩展权限
管理模型,并从数据库 ER 图设计、系统总体架构的角度对该模型进行了阐述。通过对该模
型的设计,并借助优秀的 PHP 框架 FleaPHP,我们实现了对用户、角色和权限三者的良好
控制,不但减小了授权管理的复杂性,增加了系统的安全性,而且在操作上,权限分配更加205
直观。基于 RBAC 的扩展权限管理模型,对于其他相似系统的使用,也具有一定借鉴价值。
[参考文献] (References)
[1] David F. Ferraiolo and D. Richard Kuhn, Role-Based Access Controls, 15th National Computer Security
Conference(1992)Baltimore, Oct 13-16, 1992, pages 554-563 210
[2] Ravi S. Sandhu, Edward J. Coynek, Hal L. Feinsteink and Charles E. Youmank, Role-Based Access Control
Models, IEEE Computer, Volume 29, Number 2, February 1996, pages 38-47
[3] Ping Ni, Jianxin Liao, Chun Wang, Keyan Ren. Web information recommendation based on user behaviors.
2009 WRI World Congress on Computer Science and Information Engineering. March 31, 2009-2009. 4. 2:
426-430 215
[4] 汤象峰,基于 RBAC 的动态工作流系统的研究与应用,硕士学位论文,武汉,武汉理工大学,2010 年
[5] D. F. Ferraiolo, J. Barkley, D. R. Kuhn, A Role Based Access Control Model and Reference Implementation
within a Corporate Intranet, ACM Transactions on Information Systems Security, Volume 1, Number 2, February
1999
[6] 周志烽,王晶,基于 RBAC 的安全管理模块的设计与实现,电信工程技术与标准化,2010 年第 10 期,220
84-88