劉建爽 孫文磊 何 麗 黨亞洲
(新疆大學(xué)機(jī)械工程學(xué)院,新疆 烏魯木齊830047)
隨著網(wǎng)絡(luò)和信息化的高速發(fā)展,網(wǎng)絡(luò)協(xié)同化已成為產(chǎn)品快速制造技術(shù)[1]的一種發(fā)展趨勢(shì)?;贐/S結(jié)構(gòu)的WEB零件庫的建立實(shí)現(xiàn)了對(duì)企業(yè)外部海量的零部件資源相關(guān)知識(shí)及工程數(shù)據(jù)的直接調(diào)用和信息共享,極大方便了企業(yè)和用戶對(duì)現(xiàn)有的設(shè)計(jì)資源進(jìn)行優(yōu)化、重組,大大縮短了研發(fā)周期。然而,在提供方便的同時(shí),由于面對(duì)開放式的網(wǎng)絡(luò),WEB零件庫面臨著嚴(yán)重的安全問題,WEB零件庫包含大量CAD產(chǎn)品模型以及重要的技術(shù)參數(shù),這些都是廠家以及設(shè)計(jì)者智慧和心血的結(jié)晶,它們有著重大的經(jīng)濟(jì)價(jià)值,并且也是有價(jià)值的知識(shí)產(chǎn)權(quán)。解決安全問題是WEB資源庫進(jìn)行實(shí)用化的前提,因此如何才能保證和加強(qiáng)系統(tǒng)的安全性和保密性,是三維零件資源系統(tǒng)亟需解決的關(guān)鍵問題[2]。
安全對(duì)任何一個(gè)系統(tǒng)來說都十分重要,尤其對(duì)于WEB系統(tǒng)來說,其面臨的安全威脅更是來自方方面面。國(guó)際標(biāo)準(zhǔn)化組織定義為安全體系設(shè)計(jì)標(biāo)準(zhǔn)(1507498-2)的5大安全服務(wù)[3]包括:身份認(rèn)證、訪問控制、數(shù)據(jù)保密、數(shù)據(jù)完整性和不可否認(rèn)性服務(wù)。對(duì)于WEB零件庫而言,其功能復(fù)雜,訪問用戶也比較多,由于面對(duì)的是開放式網(wǎng)絡(luò),網(wǎng)上的用戶行為是不可控的,除了必要的網(wǎng)絡(luò)一級(jí)的安全控制外,還必須采用適合的訪問控制機(jī)制對(duì)用戶的權(quán)限進(jìn)行有效管理。
訪問控制有3個(gè)基本要素[4]:主體、客體和訪問策略。訪問控制的實(shí)現(xiàn)首先要對(duì)合法的訪問客戶進(jìn)行驗(yàn)證,然后選取合理的訪問策略,進(jìn)而對(duì)非法用戶或者說越權(quán)的用戶進(jìn)行管理。
目前最為常用的訪問控制策略主要有3種:自主訪問控制(discretionary access control,DAC)、強(qiáng)制訪問控制(mandatory access control,MAC)和基于角色的訪問控制(role-based access control,RBAC)。通過比較分析,3種訪問控制模型的優(yōu)缺點(diǎn)如表1。
表1 訪問控制模型
RBAC模型中主要定義了:用戶、角色、權(quán)限及會(huì)話4個(gè)主要的實(shí)體[5],其模型圖如圖1所示。在RBAC模型中用戶與權(quán)限之間卻沒有直接的關(guān)系,用戶通過被賦予角色,然后擁有權(quán)限。用戶與角色是多對(duì)多的關(guān)系,1個(gè)用戶可以從屬于1個(gè)或者多個(gè)角色。權(quán)限與角色之間的關(guān)系也是多對(duì)多,1個(gè)角色可以擁有多個(gè)權(quán)限。會(huì)話可以理解為:當(dāng)用戶以某個(gè)角色身份去訪問資源時(shí),這種交互即稱為會(huì)話。
RBCA的核心思想是:分配給每一個(gè)用戶合適的角色,每一個(gè)角色都具有對(duì)應(yīng)的若干操作權(quán)限,角色是安全控制的核心。將角色作為用戶和資源訪問權(quán)限的橋梁,根據(jù)角色直接與訪問權(quán)限相聯(lián)系[6],從而實(shí)現(xiàn)用戶與訪問權(quán)限的邏輯分離。與其他兩種相比較,RBAC模型使用靈活并且便于維護(hù),在工程應(yīng)用中使用廣泛。
基于B/S結(jié)構(gòu)的WEB系統(tǒng)是基于HTTP協(xié)議的請(qǐng)求/響應(yīng)模型實(shí)現(xiàn)的,通??梢酝ㄟ^使用請(qǐng)求攔截技術(shù)來實(shí)現(xiàn)用戶的訪問控制功能。因此分析ASP.NET平臺(tái)的請(qǐng)求處理機(jī)制,在關(guān)鍵處注入驗(yàn)證和授權(quán)代碼,也是實(shí)現(xiàn)訪問控制的一項(xiàng)關(guān)鍵技術(shù)。
AJAX(異步JavaScript和XML)是一種網(wǎng)頁開發(fā)技術(shù),可以創(chuàng)建交互式網(wǎng)頁應(yīng)用。它是幾種技術(shù)的組合,我們常用的有:HTML+css、javascript、XML和XSLT等[7]。本文主要通過應(yīng)用XSLT方法實(shí)現(xiàn)細(xì)粒度訪問控制。
XML文檔具有層次結(jié)構(gòu)性,其中的元素是由屬性及其子元素組成。因此在不同元素之間、不同屬性之間、及其元素與屬性之間所運(yùn)用的訪問控制策略也不盡相同。
在WEB零件庫中,資源的參數(shù)信息都是以XML文檔的形式傳送到客戶端,XML文檔每個(gè)層次都包含著零件資源的不同技術(shù)參數(shù)細(xì)節(jié),例如零件名稱/標(biāo)識(shí)、零件特性及特征、參數(shù)化驅(qū)動(dòng)接口、供應(yīng)商、參數(shù)化列表、CAD模型等信息。XML便成為了信息傳輸和交換的載體。我們通過XSLT向XML文檔添加需要顯示的資源信息,便可以實(shí)現(xiàn)數(shù)據(jù)的局部顯示以及隱藏某些數(shù)據(jù)的目的。它可以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和顯示分離,進(jìn)而可以根據(jù)用戶的權(quán)限或者需求顯示不同的內(nèi)容。
WEB零件庫采用的是3層B/S結(jié)構(gòu),分別為界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)層[8]。系統(tǒng)由大量的頁面組成,系統(tǒng)用戶使用時(shí),首先通過網(wǎng)頁瀏覽器登錄到系統(tǒng)主頁,然后經(jīng)由頁面中的菜單欄便可到達(dá)各功能頁面,接下來就可以根據(jù)自己的需求在頁面上進(jìn)行相應(yīng)的功能操作,這一系列行為都是經(jīng)過用戶向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器進(jìn)行響應(yīng)完成的。所以總的來說對(duì)WEB零件庫進(jìn)行用戶訪問控制,可以理解為哪些頁面允許用戶訪問或者功能頁面上哪些功能允許操作。
在WEB零件庫系統(tǒng)中,頁面內(nèi)容主要包含下拉菜單、模型瀏覽區(qū)、模型參數(shù)表以及一些功能按鈕(可進(jìn)行參數(shù)化驅(qū)動(dòng)和下載),用戶進(jìn)行訪問時(shí),我們可以根據(jù)用戶的權(quán)限控制頁面中的數(shù)據(jù),對(duì)其可見或者隱藏,從而實(shí)現(xiàn)為不同的用戶提供不同的訪問頁面,進(jìn)而實(shí)現(xiàn)資源的細(xì)粒度訪問控制。
倪晚成等人在根據(jù)WEB的特點(diǎn)提出的基于“角色-頁面模型”的用戶訪問控制方法中,對(duì)WEB應(yīng)用的功能進(jìn)行了詳細(xì)的劃分,使每個(gè)頁面元素或者說包含的功能都有1個(gè)用戶權(quán)限與之相對(duì)應(yīng),將RBAC模型中用戶-角色-權(quán)限的關(guān)系轉(zhuǎn)換成用戶-角色-頁面的關(guān)系。這種方法雖然容易實(shí)現(xiàn),但是由于對(duì)頁面劃分得太細(xì),就會(huì)導(dǎo)致頁面過多,加重服務(wù)器負(fù)載。為了解決這些問題,本文在“角色-頁面模型”的基礎(chǔ)上,提出了“角色-XSLT模板-頁面控制”的用戶訪問控制方法,通過配置他們之間的關(guān)系來控制用戶對(duì)頁面的訪問以及對(duì)頁面中相應(yīng)功能的操作。
當(dāng)用戶訪問系統(tǒng)時(shí),首先要對(duì)用戶進(jìn)行訪問權(quán)限的驗(yàn)證,判斷是否擁有訪問權(quán)限,沒有則為非法用戶,拒絕訪問;如果有,則可以進(jìn)入系統(tǒng),然后讀取其模塊訪問權(quán)限信息,根據(jù)這些信息自動(dòng)生成相應(yīng)的系統(tǒng)菜單,進(jìn)而進(jìn)行相應(yīng)權(quán)限的操作。當(dāng)合法用戶在所需的功能頁面進(jìn)行操作時(shí),用戶請(qǐng)求會(huì)通過Internet發(fā)送到WEB服務(wù)器端;WEB服務(wù)器接收到后,通過調(diào)用業(yè)務(wù)邏輯層中的相應(yīng)功能模塊與數(shù)據(jù)層中的相關(guān)數(shù)據(jù),對(duì)用戶的請(qǐng)求進(jìn)行處理,最后以HTML的形式將結(jié)果反饋至瀏覽器。權(quán)限管理模型圖如圖2。
WEB零件庫系統(tǒng)包含大量的頁面,每個(gè)頁面中又有不同的頁面元素和功能操作。在“角色-模塊-頁面模型”中,模塊由多個(gè)頁面組成,這些頁面可以共同完成該模塊的功能。通過XML-XSLT方法對(duì)頁面進(jìn)行頁面顯示及操作功能的配置,首先預(yù)定義XSLT模板,當(dāng)用戶訪問時(shí),根據(jù)其權(quán)限從XSLT模板庫中選擇相對(duì)應(yīng)的模板,然后再調(diào)用XML-XSLT解析器生成XML文檔,最后顯示在客戶端。
基于角色的訪問控制最重要的就是處理好用戶、角色、權(quán)限之間的關(guān)系。在WEB零件資源庫中,使合法的用戶能夠正常訪問,并能實(shí)現(xiàn)在線參數(shù)化、下載相關(guān)模型,是本系統(tǒng)最重要的內(nèi)容。
4.1.1 用戶分析
用戶即系統(tǒng)的使用者,他可以是擁有合法賬號(hào)的使用者也可以是游客。在基于WEB的零件資源集成庫系統(tǒng)中,所有參與系統(tǒng)的用戶可分為系統(tǒng)管理員用戶、系統(tǒng)授權(quán)用戶、供應(yīng)商用戶和游客用戶4大類。
4.1.2 角色及權(quán)限分析
為了保證系統(tǒng)內(nèi)數(shù)據(jù)的安全性,尤其是三維CAD模型及其重要技術(shù)參數(shù)的保護(hù),需要對(duì)用戶劃分角色,為每一類用戶設(shè)定嚴(yán)格的用戶角色,在基于WEB的零件資源集成庫系統(tǒng)中,所有參與系統(tǒng)的用戶可分為系統(tǒng)管理員用戶、系統(tǒng)授權(quán)用戶、供應(yīng)商用戶和游客用戶4大類。
(1)系統(tǒng)管理員主要負(fù)責(zé)WEB零件資源系統(tǒng)的正常運(yùn)行,為用戶配置相應(yīng)的權(quán)限,保證各方利益。不僅要使?jié)M足合法用戶的正常需求,同時(shí)也要保證資源不能被越權(quán)訪問。
(2)合法用戶即系統(tǒng)的授權(quán)用戶,他們是系統(tǒng)的主要使用者,能正常獲得與之授權(quán)相對(duì)應(yīng)的權(quán)限,保證應(yīng)享受到的服務(wù),滿足不同的用戶根據(jù)自身需要按照靈活的訪問控制策略對(duì)不同層次的資源進(jìn)行訪問。
(3)供應(yīng)商用戶是系統(tǒng)中一些零件的提供者,他們可以對(duì)自己的零件進(jìn)行操作(增加、刪除、修改、分類等)。
(4)游客就是指未注冊(cè)的系統(tǒng)用戶,對(duì)他們可以開放簡(jiǎn)單的功能,例如瀏覽模型和樹形查詢。
由5張數(shù)據(jù)庫表組成,它們分別是:存放用戶帳號(hào)信息的Users表、存放角色信息的Roles表、存放權(quán)限項(xiàng)信息的Permissions表、存放用戶和角色對(duì)應(yīng)關(guān)系的User-Role表以及存放角色權(quán)限對(duì)應(yīng)關(guān)系的Role-Permissions表。
Users表用于定義用戶及其屬性,如表2所示。
表2 Users表
Role表用做記錄角色名稱和標(biāo)識(shí)號(hào),其設(shè)計(jì)如表3所示。
表3 Role表
Permissions表用做存儲(chǔ)系統(tǒng)中的權(quán)限,其設(shè)計(jì)如表4所示。
表4 Permissions表
User-Role表用做定義用戶與角色之間的關(guān)系,如表5所示。
表5 User-Role表
Role-Permission主要定義角色對(duì)每個(gè)模塊的訪問權(quán)限,如表6所示。
表6 Role-Permission表
其數(shù)據(jù)關(guān)系圖如圖3。
本系統(tǒng)是在Windows環(huán)境下使用微軟的Visual Studio 2008作為開發(fā)工具開發(fā)的。采用了傳統(tǒng)的3層架構(gòu),即界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。界面層使用ASP.NET技術(shù)實(shí)現(xiàn),數(shù)據(jù)訪問層使用ADO.NET技術(shù)實(shí)現(xiàn),數(shù)據(jù)庫管理系統(tǒng)選用SQL Server作為默認(rèn)實(shí)現(xiàn)。系統(tǒng)運(yùn)行在IIS6.0服務(wù)器中。
當(dāng)用戶登錄成功進(jìn)入系統(tǒng)首頁進(jìn)行訪問時(shí),會(huì)獲取1個(gè)用戶ID,然后也會(huì)獲得其角色I(xiàn)D,系統(tǒng)通過查詢角色-權(quán)限的關(guān)系表賦予用戶權(quán)限,之后系統(tǒng)就會(huì)讀取用戶可訪問的模塊列表,模塊包含的頁面由從XSLT模板庫中預(yù)選的XMLT模板構(gòu)成,通過XML-XSLT解析器變成生成新的XML文檔,客戶端的瀏覽器上顯示。具體訪問實(shí)例如圖4所示。
XML-XSLT方法可以實(shí)現(xiàn)視圖頁面層的訪問控制以及多樣性的表達(dá),零件資源模型中包含零件資源所有數(shù)據(jù)信息,在WEB零件資源庫中,欲傳送給客戶端的各種零件資源的數(shù)據(jù)信息存儲(chǔ)在XML文檔中的,它是一種有邏輯且具有層次的樹結(jié)構(gòu)。如果用戶的訪問權(quán)限改變時(shí),只需要更新權(quán)限所對(duì)應(yīng)XSLT模板即可,不需要對(duì)零件庫系統(tǒng)的內(nèi)容和結(jié)構(gòu)進(jìn)行改變。其中具有細(xì)粒度控制的XSLT模板的代碼如下:
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"exclude-result-prefixes="msxsl">
……
<xsl:for-each select="root/part/Model_VRML"><!--三維CAD模型預(yù)覽-->
<div class="style1">
<o(jì)bject align="middle"classid="clsid:4B6E3013-6E45-11D0-9309-0020AFE05CC8">
<param name="src">
<xsl:attribute name="value"><xsl:value-of select="wrl_Path"/> </xsl:attribute>
</param>
</object>
</div> </xsl:for-each>
<table class="style2"> <!--參數(shù)列表顯示-->
<xsl:for-each select="root/part/parameter_list/parameter">
<tr class="style3">
<td> <xsl:value-of select="param_name"/> = </td>
<td><xsl:value-of select="param_value"/> </td>
<td><xsl:value-of select="param_unit"/> </td>
</tr> </xsl:for-each>
</table>
……
</xsl:stylesheet>
本文通過分析比較常用的3種訪問控制技術(shù),以“角色-頁面模型”為基礎(chǔ),提出了基于“角色-模塊-頁面模型”的訪問控制方法,并運(yùn)用XML-XSLT方法實(shí)現(xiàn)視圖頁面層的訪問控制以及多樣性的表達(dá),有效地解決了系統(tǒng)權(quán)限授予以及管理過程存在的一些問題,減少了編程實(shí)現(xiàn)中繁瑣的權(quán)限邏輯判斷代碼,提高了效率。通過在WEB零件庫系統(tǒng)中的應(yīng)用,該訪問控制極好地滿足了WEB零件庫系統(tǒng)對(duì)用戶權(quán)限控制的要求,實(shí)現(xiàn)了數(shù)據(jù)模型與訪問控制模型的分離,細(xì)化了訪問粒度,提高了權(quán)限配置靈活度以及安全性等目標(biāo),有效地防止用戶的非法訪問。
[1]何麗.支持復(fù)雜產(chǎn)品快速設(shè)計(jì)的網(wǎng)絡(luò)化零件資源庫系統(tǒng)研究[D].烏魯木齊:新疆大學(xué),2013.
[2]倪晚成,劉連臣,劉偉.基于角色-頁面模型的Web用戶訪問控制方法[J].計(jì)算機(jī)工程與應(yīng)用,2006,42(21):124-126.
[3]黃純國(guó),劉福順.Web系統(tǒng)訪問控制模型研究[J].小型微型計(jì)算機(jī)系統(tǒng),2007,28(10):1827-1831.
[4]陸庭輝,文貴華.B/S結(jié)構(gòu)下的用戶訪問控制方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(7):1433-1436.
[5]霍遠(yuǎn)國(guó),馬殿富,劉健,等.面向Web服務(wù)資源的兩層訪問控制方法[J].計(jì)算機(jī)科學(xué),2010,37(7):125-129.
[6]李章玉,羅軍.基于RBAC的XML訪問控制研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(1):53-55.
[7]王宏偉,孫文磊,何麗.AJAX技術(shù)在Web零件庫系統(tǒng)中的應(yīng)用研究[J].制造業(yè)自動(dòng)化,2011,33(6):106-110.
[8]陳學(xué)龍,鄭洪源,丁秋林.一種基于TRBAC的動(dòng)態(tài)多級(jí)WEB服務(wù)訪問控制模型[J].計(jì)算機(jī)科學(xué),2014,41(3):181-184.