張曉群 董麗麗
摘 要:基于角色的訪問控制(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格式閱讀原文。