张晓群 董丽丽
摘 要:基于角色的访问控制(RBAC)技术解决了大型企业信息系统中复杂的安全访问问题。为了提高软件的可重用性,缩短应用系统的开发周期,研究并开发通用的RBAC插件,使其能够集成于各种企业信息系统中完成该信息系统的权限控制需求。分析Eclipse的工作机制以及基于OSGI规范的插件实现原理,提出在Eclipse 平台上设计和实现一个通用RBAC插件的设计方法,并运用Eclipse的插件开发方法实现通用的RBAC插件。
关键词:Eclipse;OSGI;Bundle;RBAC;角色;插件;PDE
中图分类号:TP311 文献标识码:B 文章编号:1004-373X(2009)04-093-03
Design and Implementation of RBAC Universal Plug-in Based on Eclipse
ZHANG Xiaoqun,DONG Lili
(Department of Information & Control,Xi′an University of Architecture & Technology,Xi′an,710055,China)
Abstract:Role-based Access Control (RBAC) is applied in information system of Enterprise to meet complicated permission administrate.In order to increase reuseability of software and shorten developmental time of information system,it is necessary to study and implement a universal RBAC plug-in which can be integrated with different Enterprise information system to solve its permission administrate.Eclipse′s work mechanism and implementation principle of plug-in is analysed,a method can be used to design and implement universal plug-in on the Eclipse platform.Finally,universal RBAC plug-in is developed in PDE by using method of Eclipse plug-in development.
Keywords:Eclipse;OSGI;Bundle;RBAC;role;plug-in;PDE
0 引 言
访问控制作为国际化标准组织定义的5项标准安全服务之一,是实现信息系统安全的一项重要机制[1-4]。作为访问控制技术之一且基于角色的访问控制(Role Based Access Control,RBAC)已在许多大型企业的信息系统中发挥了强大的优势。在将RBAC技术应用于大型企业的信息系统中时,需要在不同的应用系统中重复地编写实现RBAC功能的代码,这种重复性的劳动造成了人力和物力的极大浪费,也增加系统开发成本。
为了提高软件的可重用性,缩短应用系统的开发周期,这里的主旨在于开发一个通用的扩展RBAC插件,使得它能与不同的应用系统进行无缝集成,完成应用系统的访问权限控制功能,以缩短应用系统的开发周期。
1 Eclipse插件体系结构
Eclipse是IBM投入巨资开发的一个开放的、可集成的、基于Java的应用软件开发和运行的通用平台。Eclipse的体系结构是一个基于微内核的插件体系结构[5-7],如图1所示。
平台运行时是Eclipse的微内核,它负责Eclipse环境中其他功能部件(即插件)的自动安装、启动、运行和卸载。Eclipse之所以能够实现插件的动态协作功能,是由于它采用了OSGI规范作为其插件体系结构。Eclipse的内核由2部分组成:org.eclipse.osgi和org.eclipse.core,其中org.eclipse.osgi就是Eclipse对OSGI框架的实现,它的功能是在Eclipse中实现Bundle的安装、触发、卸载及Service的注册、卸载和调用。
OSGI(Open Service Gateway Initiative)为通过网络向设备提供服务建立开放的标准。基于OSGI规范的硬件设备,能够访问控制在网络任何位置的其他设备,并且网络设备可以被随时安装、更新、删除而不影响其他设备的运行,即硬件的“热插拔”技术。Eclipse将OSGI规范应用到软件业,实现了软件的“热插拔”技术。
Framework是OSGI规范的核心,它在Java虚拟机基础上定义了Bundle(或称为插件)的模块管理、生命周期管理以及服务管理[8,9]。
(1) 模块管理层定义了模块的类装载机制和元数据信息。元数据信息描述了Bundle的名称、版本号、提供商、依赖库、Import-Package和Export-Package等。其中Import-Package和Export-Package属性使得基于Eclipse开发的软件能够实现代码共享。
(2) 生命周期管理层定义了Bundle的6个状态及其对6个状态的管理。Eclipse通过OSGI的类装载机制和对6个状态的管理实现了插件的“懒装载”机制。即当插件被使用时,才被装入系统,占用内存空间;当不被使用时,被清除内存。
(3) 服务管理层在模块层和生命周期层的基础上定义了Bundle的服务注册、服务引用、服务监听,实现了Bundle间的动态协作服务。
由于Eclipse实现了OSGI框架,它才具有插件的动态装载功能,实现了软件的“热插拔”技术。
2 基于角色的访问控制(RBAC)模型
基于角色的访问控制的思想是在用户和权限之间插入“角色”,角色代表了对系统资源具有的访问权限。用户只有拥有了某个角色,才拥有该角色具有的权限。这种关联关系实现了用户与权限的逻辑分离,方便了授权管理。图2给出了RBAC的模型。下面给出RBAC模型的语义定义[10]:
USERS,ROLES,OBS,OPS,PRMS
UA罸SERS×ROLES用户集合到角色集合的多对多的分配关系。用户-角色分配 (r:ROLES)→2USERS,角色到用户的映射关系表示为:
assigned-users(r)={u∈USERS|(u,r)∈UA}。
PRMS=2(OPS×OBS)操作权限的集合。
PA罰RMS×ROLES权限集合到角色集合的多对多的分配关系。角色到权限映射关系表示为:
assigned-permissions(r)={p∈PRMS|(p,r)∈PA}。
SESSIONS会话集合。
用户与会话之间的映射关系为:user_session(u:USERS) →2SESSIONS,表示一个用户可以建立多个会话。
会话与角色之间的映射关系:
session_role(s:SESSIONS)→2ROLES,会话si到角色集合的映射关系,使会话获得角色的权限:Session_roles(si)羬r∈ROLES|(session_users(si),r∈UA)
3 通用RBAC插件的设计
RBAC插件能够与不同的应用系统集成,也就是说它能适应不同的企业要求,根据不同企业的组织结构生成适应该企业的角色关系图以及角色的权限关系。用面向对象的方法对RBAC进行分析,主要分为:部门类、角色类、用户类、权限类和资源类。图3是RBAC插件的类结构图。
图3 RBAC类结构
对RBAC插件的通用性首先要考虑对多数据库的支持。由于不同的用户习惯使用的数据库也可能不同,例如,有些用户习惯使用SQL Server数据库,而另一些用户习惯使用Oracle数据库,因此,插件所面临的后台数据库类型可能是多种多样的。为了使插件能适应各种数据库,采用图4所示的类层次结构来支持多数据库。其中:DBOperate是一个接口类,在数据库操作类的代码中相对不变;AbstractDBOperate类是一个抽象类,提供数据库操作的默认实现。各数据库独有的操作方法由各自的类实现。
对通用性要考虑的第二点是对代码共享的支持。
图4 数据库操作类
用户管理模块作为可共享的代码,供应用系统中的用户基本信息管理模块使用,因此,将用户管理模块作为提供包(Export-Package)在插件元数据信息中说明。并将用户类定义为该插件的一个新的扩展点,供第三方继续扩展。
4 插件的实现
扩展RBAC插件为用户呈现的界面为功能导航器、搜索视图和功能编辑器几个视图。由功能导航器可以导航到用户管理、角色管理、授权管理、会话管理和资源管理几个功能模块中,在功能编辑器视图中实现各个模块的功能。该插件在Eclipse平台上,应用插件开发工具PDE来开发,对Eclipse平台的透视图org.eclipse.ui.perspectives、视图org.eclipse.ui.views和编辑器org.eclipse.ui.editors等几个主要扩展点进行了扩展。
下面是通用的RBAC插件部分功能实现的plugin.xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<?eclipse version="3.2"?>
<plugin id="rbac" name="Rbac 插件"version="1.0.0"provider-name=""class="rbac.RbacPlugin">
<runtime>
<library name="rbac.jar">
<export name="*" />
</library>
<library name="lib\mysql-connector-java-3.0.17-ga-bin.jar" />
<library
</runtime>
<requires>
<import plugin="org.eclipse.ui" />
<import plugin="org.eclipse.core.runtime" />
</requires>
<extension point="org.eclipse.ui.perspectives">
<perspective name="RBAC管理" icon="" id="perspective.rbacPerspective" class="perspective.rbacPerspective" />
</extension>
<extension point="org.eclipse.ui.editors">
<editor name="角色信息管理" icon=""
class="archive.RoleEditor" id="archive.RoleEditor" />
</extension>
…
</plugin>
5 结 语
分析了Eclipse插件体系结构和工作机制,并给出了RBAC通用插件的设计模型。在Eclipse平台上运用Eclipse插件开发方法,开发了通用的RBAC插件。RBAC通用插件已被集成进各种大型企业的应用系统中,保障了信息的安全,缩短了应用系统的开发周期。
参 考 文 献
[1]黄益民,平玲娣,潘雪增.一种基于角色的访问控制扩展模型及其实现[J].计算机研究与发展,2003(10):1 521-1 528.
[2]李帆,郑纬民.基于角色与组织的访问控制模型[J].计算机工程与设计,2005(26):2 136-2 140.
[3]许春根,江子,严悍.基于角色访问控制的动态建模[J].计算机工程,2002,28(1):116-118.
[4]Sandhu R,Coyne E,Feinstein H,et al.Role-based Access Control Model.IEEE Computer,1996,29(2):38-47.
[5]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2005.
[6]刘亚宾,杨红.精通Eclipse[M].北京:清华大学出版社,2005.
[7]张云涛,龚玲.Eclipse精要与高级开发技术[M].北京:电子工业出版社,2005.
[8]佚名.Eclipse平台入门.http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-ecov /index.sht,2008.
[9]Blue Davy.OSGI实战.http://www.riawork.org,2007.
[10]Ferraiolo D,Sandhu R.Proposed NIST Standard for Role-based Access Control [J].ACM Transactions on Information and System Security,2001,4(3):224-274.
作者简介 张晓群 女,1965年出生,工程师。研究方向为分布式系统及计算机网络应用。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。