APP下载

基于RBAC模型的权限管理改进研究与实现

2015-12-23汤文亮

计算机工程与设计 2015年5期
关键词:栏目框架动态

汤文亮,李 科

(华东交通大学 软件学院,江西 南昌330013)

0 引 言

传统的业务审批已无纸化,不再由人充当作材料送审者,业务审批都由审批系统完成,这就要求审批系统足够可靠和安全,能实现信息安全中最基本的CIA-(保密性(confidentiality)、完整性(integrity)、可用性(availability))特性[1]。

业务审批流程的控制,由审批系统核心模块——权限管理负责实现,这就必须用到访问控制技术[2]。许多学者也做了很多关于访问控制技术的研究,其中基于角色的访问控制RBAC-(role-based access control)就是一种极具代表性的访问控制技术。文献-[3,4]提出了一种RBAC96模型-(也称RBAC 参考模型),分为4 种小模型:基本模型、角色分级模型、角色限制模型、统一模型,用户不直接与权限关联,通过角色来连接二者;文献-[5,6]中指出RBAC96模型的短处,它是一种强制访问控制,同时也是一个静态概念,用户、角色和权限的关系要事先强制设定,而且权限级数通常是单一级别;文献-[7]提出了一种RBAC97模型,包括URA97、PRA97、RRA97这3部分,对ARBAC97模型的研究还在继续中;文献-[8]提出了一种DRBAC模型,是在动态结盟环境下的分布式RBAC 模型,拥有3个特性,能够保证权限访问的机密性,不足的是权限指派方式比较保守,不够灵活。

目前,业务审批系统通常要求权限可多级、能动态管理,传统的RBAC却无法满足,所以在现有的RBAC 模型基础上,提出了一种新型的RBAC 模型-(new role-based access control,NRBAC)。本文做了相关的研究和详细的阐述,并以-“集装箱码头设备维护及工务调度管理系统-(简称DMM 系统)”为开发实例,利用Java主流的SSH 框架和JS脚本语言等相关技术,对NRBAC 模型做了具体的设计和实现,结果验证了NRBAC 模型的可行,最后指出了对NRBAC模型下一步的研究工作。

1 相关技术介绍

1.1 JavaScript技术

JavaScript是一种由解释器执行的面向对象的程序设计语言[9],也一种具有相对安全性的客户端脚本语言。因此,目前许多Web系统都积极地使用JavaScript客户端脚本语言,以遵循Web 2.0的趋势,它可以使网页频繁重组、友好地与用户交互[9]。

DMM 系统权限动态地创造、分配、撤销和栏目的生成等就是依靠JavaScript技术实现的。

1.2 SSH 框架简介

对一个Web系统而言,良好的系统架构可以加快系统整体的开发速度和保障系统的安全性,并且方便未来的拓展和后期维护工作。在这种情况下,针对Web开发的各种框架便应运而生了,SSH 框架 (struts2+sping+hibernate)就是其中之一[10]。如图1所示,一般分为5层架构:表现层、业务逻辑层、数据访问层、持久层和数据库层[11]。

图1 5层架构模型

表现层,主要负责与用户进行交互的jsp或html页面,通过调用业务逻辑层代码实现判断、显示等操作,主要体现在Action层中,由Struts2框架实现。业务逻辑层和数据库访问层基本类似,但数据库访问层是通过Hibernate来完成数据操作的,而业务逻辑层中是通过调用数据访问层来实现,在具体项目中,业务逻辑层也叫Service层。数据访问层又称DAO 层,在该层中包含了所有的操作数据的方法,如保存数据、删除数据、修改数据和查询数据,它包含3个组成部分,分别是DAO 接口、DAO 实现类和DAO工厂类。持久层主要包含2个部分,一个是Hibernate映射文件 (实体名.hbm.xml),一个是实体类。数据访问层和持久层,都由hibernate框架负责。数据库层用来接收数据访问层提交的数据,也为数据访问层提供数据反馈。但数据库层一般由数据库管理系统负责,与SSH 框架没有直接联系,只需在applicationContext.xml配置文件中配置所连接的数据库参数即可。

Spring框架是近几年非常流行的开源的轻量级框架,它的核心是控制反转或依赖注入 (IoC)[12]。Spring框架实际上是整合struts2 框架和hibernate框架的黏合剂,利用spring的IoC可以明确地定义组件接口,方便开发者独立地开发各个组件,然后根据组件间的依赖关系组装运行,很好地把struts2和hibernate结合起来,而且spring的事务管理把hibernate对数据库的操作进行了事物配置,即SSH框架利用spring容器统一管理数据源,极其方便地为DAO组件提供支持。

2 NRBAC模型的基本思想

NRBAC模型是以RBAC96 模型为原型,融入ARBAC97模型的角色管理思想,并引入DRBAC 的前2 种特性,是对RBAC的思想整合和创新,并且对RBAC96模型的权限/许可权集 (PRMS)做了具体的细分和改进,以此引出 “栏目”的概念。

2.1 NRBAC模型简介

NRBAC模型首先将权限管理进行了操作上的分离,分解为3个步骤:①权限的创造;②权限的分配\撤销;③权限的使用。如图2所示 (实线表示具体操作,虚线表示数据关联关系),重点放在了3个步骤的前两个,这也是实现权限可多级、动态的理论基础。

然后将操作和 “栏目”进行动态绑定 (通过某些技术,如JS技术等)形成权限,来提高角色访问时的可靠性和安全性,防止各个角色间的权限混乱,使得用户进行权限使用时能够防止非法访问现象的出现。

2.1.1 NRBAC模型的基本元素

如图2所示,对该模型的基本元素定义如下:

U,R (AR,OR),P,S,UI:用户集 (USERS),角色集 (ROLES),管 理 员 角 色 集 (AR),其 它 角 色 集(OR),权限集 (PRMS),会话 (SESSIONS),用户信息(USER INFORMATION)。

{OPS,OBS,RS}εPRMS:权限操作 (OPS),被操作的对象 (OBS),由对象管理的资源 (RS),三者共同组成了权限集 (PRMS),其中被操作的对象 (OBS)和由对象管理的资源 (RS),共同组成了 “栏目”这个概念;

ROLES={r|(rεar)∪(rεor)}:管理员角色集 (AR)和其它角色集(OR)统一归属于角色集合,方便角色管理;

COMP:create operate manage permissions,由AR 负责对PRMS 的控制、操作、管理;

PA:permission assign,由AR 负责对OR 的权限 分配,也包括对自己本身权限的分配;

UA:user assign,由AR 负责对用户分配角色;

U-UI:每一个用户 (USER)都对应唯一的用户信息

(USER INFORMATION);

SESSIONS:会话集,是用于初始化和创建多个集合间的映射;

U-S:用户会话集,S>U,每一个会话s对应由AR 指派而成的用户user(s)映射;

R-S:角色会话集,会话s到角色集合R-S {roles|(rolesε{PA|(PAεPRMS)})},用于初始化和创建角色和角色所持有的权限集;

图2 NRBAC模型数据关系

P-S:权限会话集,S>P,每一个会话s对应相应的权限映射。

2.1.2 NRBAC模型的实体分析

NRBAC模型由4个实体组成,分别是用户信息 (UI),用户(U)、角色(R)、权限(P),其中权限(P)也是一个操作集(就是拥有一种或者某几种操作\动作属性的集合)。

用户拥有唯一的与之对应的用户信息,将用户信息独立出来,也是基于对用户安全性和保密性的考虑,这正是提出UI的原因。在角色集中派生出AR,意味着废除了角色继承[3],防止权限被任意传递而影响系统的安全性,方便对项目的管理,也是权限创造的体现。实际项目中,AR相当于一个受信任的第三方,AR 虽然可以管理其他角色,但是又脱离不了角色集的范畴,可以防止AR 不受控制,这也是约束[3]思想的折射。AR 实际上是权限管理的核心,负责模型中最重要的PA 和UA 操作,这两个操作属于权限的分配\撤销范畴。AR 对USERS 进行UA 操作后,USERS也就被赋予了相应的ROLES,也可以赋予AR;AR 对PRMS进行COMP 操作后,PRMS也就赋予AR 相应的权限操作,这就是AR 作为管理者的权限由来,然后可以对OR 进行PA 操作,也就把PRMS赋给了R。

SESSIONS起激活、记忆的作用,主要体现在权限的使用方面,SESSIONS的产生是在COMP、PA、UA 操作过程中伴随而成的,当执行模型中的U-S、R-S、P-S 时,相应的会话会被初始化,直到用户注销为止,相应的会话才会关闭。

2.1.3 NRBAC模型的数据关系

如图3所示,NRBAC 模型是一个关系模型,U-R 和R-P的关系都是多对多 (many-to-many)关系,为了解决多对多的数据关系,通常的做法是增加中间表,将多对多转换为一对多和多对一,其中UA 和PA 就相当于中间表。

图3 NRBAC模型

U-UI是1:1 的关系,一个用户只有一个用户信息。OPS与各级OBS都有一个1:1 的关系,使得不同角色可以精确控制任意一级的OBS,也控制着操作对每一级OBS的访问许可权。对于OBS可以拓展到n 级,特别要注意各级的关联关系,一级OBS 与二级OBS、二级OBS 对三级OBS都是1:n 的关系,起直接控制的作用,一级OBS与三级OBS之间也是1:n的关系,但起的是间接控制作用。从数据库的主外键角度看,以上的关系可以用建外键的方式达到相同的关系效果,即一级OBS无外键数,二级OBS有1个外键数,三级OBS有2个外键数。推广到n 级,也应该满足式 (1),可以帮助确定栏目间的关系,f(n)函数指的是当前第n级所含的外键数目

2.2 NRBAC模型研究与构建

NRBAC模型的关注核心在于PRMS的形成,也就是对PRMS进行细分,提出了OPS,OBS,RS的概念,这里重新对“权限”进行定义:权限由操作 (Operation)、对象 (Object)和资源(Resource)组成,表示由操作去控制对象对资源的一个有权访问,即“Operation+Object+Resource”。

操作不对资源直接访问,而是交给了对象去控制,而栏目由 “OBS+RS”组成,也就相当于用操作去访问栏目。将操作和栏目绑定后形成权限,是为了方便以 “级 (类)”为单位给角色赋权,同时也方便权限的分配和撤销,也给OBS和RS增加了一层保护。这样的好处在于,防止恶意的非法操作直接控制资源,当涉及机密信息或者金融业务审批时,防止遭受外部入侵,以保证数据的完整性。

在这里,审批内容相似的归为一个类,也称为一级,一级就相当于一个栏目,一个栏目也就包含一个OBS 和RS,可以被无限归纳,也就是多级的概念,这正是本文实现多级动态权限的核心。角色通过权限去操作着每一级栏目,再通过对栏目来间接地操作资源,资源指的是所有由URL关联的报表、数据、图片、文档等。而把PRMS与角色进行关联,要通过COMP 中的Operate Permissions,这样权限就会被AR 所持有,AR 才真正具备PA 的资格。对于COMP中的Manage Permissions,有待进一步研究,初步设想是引入优先级来提高PRMS的灵活性和实用性,而引入优先级就必然涉及到数字属性[8]。

3 权限管理设计与实现

权限管理是DMM 系统中业务审批流程的核心部分,涉及7类角色:总经理、设备管理专员、维护维修人员、仓库管理专员、安检专员、设备操作人员、管理员,要求权限是动态的,不能事先设定死,而且业务流程非常复杂,就要求栏目是多级。结合某种技术 (本文选择JavaScript),NRBAC模型可以解决这些新需求。

3.1 数据库设计

依据NRBAC模型,结合DMM 权限管理部分的需求,设计了如图4 所示的数据库,其中字段is_show、is_opened、is_collapsible、is_collapsed 被JavaScript用于实现PA 功能。

图4 权限管理数据库设计

3.2 JavaScript前台页面设计

JS语言编写前台页面COMP、PA、UA 操作的代码,实现对权限动态地创造、分配、撤销,JavaScript是起控制作用。

下面的js代码是对图5中一级栏目的图片选择,当遍历图片时,图片只能选择一张,并且要获取图片路径,最后要保存选中的图片id 值。

如图5所示,该DMM 的系统管理实质上就是权限管理,与NRBAC 模型对应的一级栏目: “权限管理”,二级栏目:“栏目管理”、“角色管理”、“用户管理”,三级栏目:“新增栏目”、“新增角色”、“新增用户”等,这些栏目全部都是用JS语言编写的。

图5 权限创造界面

3.3 SSH 框架后台代码实现

DMM 的系统管理模块在后台进行了分层,根据SSH框架分为Action层、Service层、Dao层,每层的类命名都采用驼峰命名法则[13]。如图6 可以清晰地看出代码层次,与NRBAC模型的基本元素也是相对应的。

重点 介 绍 下Service 层 中UserServiceImpl.java 这 个类,因为初始化用户所持有的角色及角色对应的多级权限主要是在该类中进行,该类有个入口函数findInitData (),它触发NRBAC模型中3个Session 去激活权限,保证权限管理正常使用。

初始化用户所持有的角色及角色对应的多级权限算法描述如下:

图6 权限管理后台分层

(1)首先将用户的ID 号进行查询,把AR 分配给该用户所属的所有角色存储在一个List中,并将该查询结果存放在R-S中;

(2)把上一步中查询到的角色进行遍历,然后根据每次迭代的角色ID 进行OPS查询,把结果存放在P-S 中;

(3)把栏目分级 (DMM 系统分了三级),每级都有直接关联的权限,这就是在NRBAC 模型中每级的OBS 与OPS都进行了1∶1关联的原因;

(4)每个权限对应着一个栏目信息,考虑到有的角色可能有重复的权限,所以有时候会存在重复的栏目,为此,每次迭代的时候都要除去重复的栏目,这里使用一个Set集合(一种不允许重复元素的集合)来保存用户的所有栏目。

如图7所示,初始化用户所持有的角色及角色对应的多级权限的处理步骤,具体如下所示。

图7 初始化流程

如图8 所示,这是DMM 系统管理的界面跳转流程,也是多级动态权限管理逻辑关系,更是对NRBAC 模型实现的全局概况。

图8 权限管理界面跳转流程

4 结束语

本文在RBAC 模型的基础上,提出了一种改进后的RBAC模型--NRBAC模型,主要解决业务审批系统中对多级动态权限的新需求,利用角色集派生出的AR 角色来动态地创造、分配和撤销权限,同时将PRMS进行了细化,实现操作与资源分离,从而用栏目去绑定权限,既保证了业务审批过程中数据的完整性和保密性,也解决了多级、动态权限的问题。然后结合JavaScript技术和SSH 框架,以DMM 系统为实例,按照NRBAC 模型实现了多级动态权限的要求,验证了该模型的可行性。下一步的研究工作主要围绕COMP操作中的Manage Permissions展开,通过引入优先级来提高权限管理的灵活性。

[1]HU Xiangdong,WEI Qinfang,HU Rong.Applied cryptography [M].2nd ed.Beijing:Publishing House of Electronics Industry,2013:16-19 (in Chinese). [胡向东,魏琴芳,胡蓉.应用密码学 [M].2版.北京:电子工业出版社,2013:16-19.]

[2]Claudio A Ardagna,Sabrina De Capitani di Vimercati,Stefano Paraboschi,et al.Expressive and deployable access control in open Web service applications [J].IEEE Computer Society,2011,4 (2):96-109.

[3]Sandhu R,Conyne EJ,Lfeinstein H,et al.Role based access control model[J].IEEE Computer Society,1996,29 (2):38-47.

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

[5]Enokido T,Takizawa M.Role based access control in distributed object systems[C]//Proc of 28th International Conference on Distributed Computing Systems Workshops,2008:24-29.

[6]Xie Hui,Zhang Bin,Hu Dianyou.A role-based dynamic authorization model and its implementation in PMI[C]//Proc of International Conference on Computer Science and Software Engineering,2008:661-664.

[7]Sandhu R,Munawer Q.The RRA97 model for role-based administration of role hierarchies [C]//Proc of 14th Annual Computer Security Applications Conference,1998:39-49.

[8]Eric Freudenthal,Tracy Pesin,Lawrence Port,et al.dRBAC:Distributed role-based access control for dynamic coalition environments [C]//Proc of Distributed Computing Systems,2002:411-420.

[9]Seong-Won Lee,Soo-Mook Moon.Selective just-in-time compilation for client-side mobile JavaScript engine [C]//Proc of the Proceedings of the 14th International Conference on Compilers,Architectures and Synthesis for Embedded Systems,2011:5-13.

[10]JIA Bei,ZHEN Mingmin,DU Lei,et al.Java Web integrated development of actual combat[M].Beijing:Tsinghua University Press,2013:586-588(in Chinese).[贾蓓,镇明敏,杜磊,等.Java Web整合开发实战[M].北京:清华大学出版社,2013:586-588.]

[11]GU Yuesheng,BU Da,DU Lei,et al.Java Web program design and project practice [M].Beijing:Publishing House of Electronics Industry,2011:401-405 (in Chinese).[古乐声,卜炟,杜磊,等.Java Web程序设计与项目实践 [M].北京:电子工业出版社,2011:401-405.]

[12]Kepa M,Sakowicz B,Nowak P,et al.Application for videoconference based on JEE platform [C]//Proc of CAD Systems in Microelectronics,Lviv-Polyana,2009:431-434.

[13]Wikipedia.CamelCase [EB/OL]. [2014-04-24].http://en.wikipedia.org/wiki/CamelCase.

猜你喜欢

栏目框架动态
国内动态
国内动态
国内动态
框架
广义框架的不相交性
关于栏目的要求
动态
栏目主持人语
“大师问答Ask the Guru!”栏目问答精选(二)
栏目制,为什么这样红