0 引言
目前多數(shù)實(shí)際應(yīng)用系統(tǒng)的安全功能模塊都采用內(nèi)嵌業(yè)務(wù)模塊的方式開(kāi)發(fā)實(shí)現(xiàn),安全組件和業(yè)務(wù)組件耦合度過(guò)高,導(dǎo)致兩者之間的交互關(guān)系繁雜,功能邏輯抽離性差;另外,安全系統(tǒng)涉及認(rèn)證、授權(quán)、訪問(wèn)控制和責(zé)任認(rèn)定等領(lǐng)域,現(xiàn)有的集中開(kāi)發(fā)模式?jīng)]有從軟件形態(tài)、邏輯形態(tài)以及最后的物理形態(tài)上對(duì)安全組件進(jìn)行進(jìn)一步構(gòu)件化分離,造成部件功能劃分模糊重疊,不易開(kāi)展安全功能專(zhuān)有評(píng)測(cè),二次開(kāi)發(fā)代價(jià)高、周期長(zhǎng)、風(fēng)險(xiǎn)大。
1 相關(guān)工作發(fā)展現(xiàn)狀
網(wǎng)絡(luò)應(yīng)用的高速發(fā)展和分布式服務(wù)的不斷深入使得系統(tǒng)安全產(chǎn)品從封閉型、單體化的形態(tài)向協(xié)作型、可插拔的中間件模式轉(zhuǎn)變。近年來(lái),國(guó)際上已涌現(xiàn)出一批具有影響力的安全中間件項(xiàng)目。耶魯大學(xué)開(kāi)發(fā)的CAS,Internet2/Mace和IBM開(kāi)發(fā)的Shibboleth,英國(guó)Kent大學(xué)開(kāi)發(fā)的PERMS,美國(guó)NASA開(kāi)發(fā)的Cardea等都采用了面向?qū)S邪踩δ荛_(kāi)發(fā)的中間件形式。提供針對(duì)單一需求的安全服務(wù)。但是這些中間件系統(tǒng)內(nèi)部構(gòu)件化和可替換性還處在粗粒度的發(fā)展階段,封裝的算法和協(xié)議層次單一,無(wú)法適應(yīng)企業(yè)應(yīng)用對(duì)安全功能定制的裁剪性和敏捷性需求;旧蠜](méi)有提供面向安全開(kāi)發(fā)人員或者業(yè)務(wù)涉及人員進(jìn)行多次開(kāi)發(fā)、自由組裝的平臺(tái)和方法。
還有一些旨在提供基礎(chǔ)性安全技術(shù)的開(kāi)發(fā)包,例如Bouncy Castle Crypto、Crypto++、IAIK Crypto等,這些項(xiàng)目可以提供全面豐富的密碼算法具體實(shí)現(xiàn)、公鑰/屬性證書(shū)生成器、密碼學(xué)相關(guān)數(shù)學(xué)工具。已經(jīng)在很多實(shí)際系統(tǒng)作為安全基礎(chǔ)設(shè)施大量應(yīng)用,但其兩個(gè)基本不足在于:開(kāi)發(fā)包內(nèi)部結(jié)構(gòu)仍然比較復(fù)雜,即使面向?qū)I(yè)人員的學(xué)習(xí)曲線仍然較高;缺乏構(gòu)建上層安全集成服務(wù)的組裝模式和開(kāi)發(fā)模版,不能提供直接面向業(yè)務(wù)安全的功能接口,后期的開(kāi)發(fā)量仍然較大。
2 基于共性安全構(gòu)件的安全業(yè)務(wù)建模
本文提出的共性安全構(gòu)件,又稱(chēng)為信息安全共性構(gòu)件,旨在將安全功能從傳統(tǒng)的業(yè)務(wù)邏輯中分離,進(jìn)而分割成具有不同安全子功能的模塊,各模塊對(duì)外提供接口,獲得可獨(dú)立開(kāi)發(fā),可方便組裝、拆解、更換的優(yōu)勢(shì)。共性安全構(gòu)件提供良好的擴(kuò)展性,可以用于快速便捷地搭建安全系統(tǒng),從而實(shí)現(xiàn)安全系統(tǒng)自底向上的,配置型可定制性開(kāi)發(fā)。
2.1 共性安全構(gòu)件三層結(jié)構(gòu)
共性安全構(gòu)件可以按其實(shí)現(xiàn)完整功能的復(fù)雜度劃分到三個(gè)不同層次的子集中;A(chǔ)構(gòu)件只實(shí)現(xiàn)一個(gè)具體算法或者定義具體的算法結(jié)構(gòu),處于最底層;功能構(gòu)件由基礎(chǔ)構(gòu)件搭建而成,能獨(dú)立提供一種安全業(yè)務(wù)功能;服務(wù)構(gòu)件由基礎(chǔ)構(gòu)件和功能構(gòu)件搭建而成,實(shí)現(xiàn)一套完整的安全業(yè)務(wù),并能以web服務(wù)的形式供外部調(diào)用。
2.2 基于服務(wù)構(gòu)件的安全業(yè)務(wù)建模方法
共性安全構(gòu)件的開(kāi)發(fā)是從底層基礎(chǔ)構(gòu)件到中層功能設(shè)施構(gòu)件然后到上層的集成服務(wù)構(gòu)件,而業(yè)務(wù)流程的開(kāi)發(fā)是從上層業(yè)務(wù)建模到中層的過(guò)程分析然后到底層的服務(wù)集成,這是兩個(gè)不同方向的開(kāi)發(fā)。
現(xiàn)有系統(tǒng)的安全功能開(kāi)發(fā)往往局限于具體的安全事務(wù),缺乏從安全業(yè)務(wù)的角度考慮流程安全完整性。本文從已有的應(yīng)用業(yè)務(wù)中抽取并設(shè)計(jì)了一個(gè)完整的安全訪問(wèn)業(yè)務(wù)流程,利用BPEL編排將構(gòu)件開(kāi)發(fā)與業(yè)務(wù)流程開(kāi)發(fā)無(wú)縫地結(jié)合起來(lái),形成完善的安全業(yè)務(wù)流程的開(kāi)發(fā)模式。
BPEL是為整合web服務(wù)而制定的一種標(biāo)準(zhǔn)規(guī)范,它可以在不影響原有web服務(wù)正常運(yùn)行的前提下,將web服務(wù)進(jìn)行調(diào)度和協(xié)調(diào),從而形成具有商業(yè)價(jià)值的業(yè)務(wù)流程。在基于服務(wù)構(gòu)件的安全業(yè)務(wù)流程開(kāi)發(fā)過(guò)程中引入BPEL語(yǔ)言,可有效提高安全系統(tǒng)開(kāi)發(fā)的效率。
安全訪問(wèn)業(yè)務(wù)流程主要包括安全認(rèn)證,授權(quán)與訪問(wèn)控制,審計(jì)與責(zé)任認(rèn)定三大處理流程。在這些處理流程之下,還集成了域定位服務(wù)、認(rèn)證服務(wù)、跨域身份聯(lián)合服務(wù)、斷言服務(wù)、策略查詢(xún)服務(wù)、屬性查詢(xún)服務(wù)、審計(jì)記錄服務(wù)等跨域或單域訪問(wèn)過(guò)程中需要的web服務(wù),能夠提供一套完整的安全訪問(wèn)業(yè)務(wù)流程所需的各種功能。以下通過(guò)訪問(wèn)控制流程的實(shí)施步驟和其中涉及的子流程給出完整的實(shí)現(xiàn)步驟說(shuō)明。
訪問(wèn)控制流程是從業(yè)務(wù)的角度利用BPEL建模工具對(duì)服務(wù)構(gòu)件進(jìn)行粘合從而實(shí)現(xiàn)靈活的安全訪問(wèn)控制系統(tǒng)。整個(gè)流程包含了一個(gè)總的訪問(wèn)控制過(guò)程,包括認(rèn)證,授權(quán)以及審計(jì)部分。每一個(gè)功能的具體實(shí)現(xiàn)都封裝在所調(diào)用的服務(wù)構(gòu)件中。流程中不包括細(xì)粒度的安全處理過(guò)程。
BPEL流程的執(zhí)行過(guò)程描述采用了程序設(shè)計(jì)語(yǔ)言偽代碼的方式,其中變量和方法的命名都采用了統(tǒng)一的形式,目的是使流程的執(zhí)行過(guò)程表述更加清晰,是實(shí)際BPEL流程建模和執(zhí)行過(guò)程的抽象描述。
BPEL流程中調(diào)用的每一個(gè)web服務(wù)可以是由web服務(wù)粘合而成的子流程,例如對(duì)訪問(wèn)控制流程中的Authentication Enforce Service,可以采用BPEL流程進(jìn)行建模,如圖1所示。
圖1 BPEL建模的安全認(rèn)證過(guò)程流程圖
這樣,我們利用BPEL自上而下地從業(yè)務(wù)流程的角度構(gòu)建了一個(gè)安全訪問(wèn)控制系統(tǒng)模型。通過(guò)這種方式,可以從很大程度上避免對(duì)底層細(xì)節(jié)的處理,這些細(xì)節(jié)可以交給具體的web service以構(gòu)件的形式進(jìn)行封裝。由于不涉及到細(xì)節(jié)處理?梢允沽鞒痰膱(zhí)行邏輯更加嚴(yán)密,從更大程度上減少系統(tǒng)的安全漏洞和隱患。同時(shí)由于web service可以根據(jù)需要而更換,系統(tǒng)的升級(jí)和更新將更加方便,減少了系統(tǒng)維護(hù)的代價(jià)。
2.3 共性安全構(gòu)件組裝開(kāi)發(fā)技術(shù)
AOP和DI技術(shù)是軟件工程領(lǐng)域成熟的開(kāi)發(fā)方法。它們面向接口和對(duì)象,采用程序設(shè)計(jì)語(yǔ)言提供的反射機(jī)制實(shí)現(xiàn)系統(tǒng)的動(dòng)態(tài)部署和功能替換。
本文從構(gòu)件的層面,將AOP和DI思想引入到共性安全構(gòu)件的組裝開(kāi)發(fā)過(guò)程中,將提供類(lèi)似功能的構(gòu)件歸類(lèi),抽取通用的操作接口。上層構(gòu)件對(duì)底層構(gòu)件的調(diào)用采用松散耦合機(jī)制,對(duì)易變的底層構(gòu)件調(diào)用其接口,具體構(gòu)件在部署時(shí)由配置文件指定,這樣可以有效提高構(gòu)件的復(fù)用性,同時(shí)加快構(gòu)件部署系統(tǒng)時(shí)的效率和靈活性。下面結(jié)合屬性檢索構(gòu)件說(shuō)明如何將AOP和DI的思想結(jié)合到共性安全構(gòu)件的開(kāi)發(fā)過(guò)程中及其帶來(lái)的優(yōu)勢(shì)。
在傳統(tǒng)的訪問(wèn)控制模型中,屬性檢索必不可少。通常需要根據(jù)用戶(hù)的屬性信息來(lái)為其提供相應(yīng)的訪問(wèn)權(quán)限。但是在不同的應(yīng)用場(chǎng)景下,不同的對(duì)象屬性檢索方式可能不同。如果在設(shè)計(jì)一個(gè)訪問(wèn)控制系統(tǒng)的時(shí)候,使用哪種屬性檢索方式還不確定,通常的做法將會(huì)是將所有的屬性檢索構(gòu)件全部集成到其中,然后根據(jù)用戶(hù)提供的消息來(lái)決定使用哪一個(gè)構(gòu)件,正如圖2中所描述。這與設(shè)計(jì)安全構(gòu)件的初衷相背離。用安全構(gòu)件搭建系統(tǒng)的優(yōu)勢(shì)就是構(gòu)件可方便進(jìn)行拆解和組裝,易更換和升級(jí)。
圖2 集成式屬性檢索構(gòu)件
下面結(jié)合AOP和DI思想,提供一種更好的解決方案。圖3顯示了重新設(shè)計(jì)的屬性檢索構(gòu)件架構(gòu),首先提取出所有屬性檢索過(guò)程所需要的操作,然后將這些操作封裝成一個(gè)接口Attribute Retrieve Faetory。每個(gè)屬性檢索構(gòu)件都實(shí)現(xiàn)該接口,遵循該接口定義的規(guī)范。系統(tǒng)開(kāi)發(fā)時(shí)針對(duì)接口進(jìn)行編碼,運(yùn)行時(shí)根據(jù)配置文件,采用面向?qū)ο笳Z(yǔ)言的反射機(jī)制注入實(shí)際需要的具體屬性檢索構(gòu)件。每一個(gè)屬性檢索構(gòu)件只要實(shí)現(xiàn)了該接口,就可方便地組裝到系統(tǒng)中。這樣既可簡(jiǎn)化系統(tǒng)架構(gòu),又有利于系統(tǒng)的擴(kuò)展,方便新的屬性檢索構(gòu)件的開(kāi)發(fā)和配置。
圖3 采用AOP和DI思想實(shí)現(xiàn)的遁用屬性檢索構(gòu)件
在創(chuàng)建構(gòu)件的過(guò)程中,合理地使用AOP和DI思想可以帶來(lái)很大的方便。雖然采用反射機(jī)制在運(yùn)行時(shí)創(chuàng)建對(duì)象會(huì)帶來(lái)一定的效率損失,但是可以簡(jiǎn)化系統(tǒng)架構(gòu),優(yōu)化配置過(guò)程,更重要的是使系統(tǒng)的擴(kuò)展、構(gòu)件的開(kāi)發(fā)應(yīng)用更加方便快捷。反射機(jī)制和對(duì)象的動(dòng)態(tài)生成功能在靜態(tài)面向?qū)ο笳Z(yǔ)言如Java、C#中都已經(jīng)提供了一定的機(jī)制來(lái)實(shí)現(xiàn),可以較方便地將其應(yīng)用到構(gòu)件開(kāi)發(fā)應(yīng)用中。依賴(lài)注入結(jié)合AOP思想的開(kāi)發(fā)技術(shù),可以將構(gòu)件之間的繼承關(guān)系和共性特征很好地展現(xiàn)出來(lái),使構(gòu)件層次劃分、類(lèi)別劃分更加清晰,也更容易實(shí)現(xiàn)構(gòu)件的開(kāi)發(fā)、組裝、擴(kuò)展和升級(jí)。圖4描述了基于AOP和DI思想的安全構(gòu)件組裝開(kāi)發(fā)模式。
圖4 基于AOP和DI思想的安全構(gòu)件組裝開(kāi)發(fā)模式
3 性能測(cè)試與實(shí)驗(yàn)數(shù)據(jù)
本節(jié)從系統(tǒng)性能方面,針對(duì)之前設(shè)計(jì)的安全業(yè)務(wù)流程中安全認(rèn)證系統(tǒng)進(jìn)行測(cè)試,獲取試驗(yàn)數(shù)據(jù)并與傳統(tǒng)的安全認(rèn)證中間件產(chǎn)品CAS、OpenID協(xié)議進(jìn)行比較,驗(yàn)證安全構(gòu)件集成建模方法的有效性。為了使系統(tǒng)之間更具可比性,本文只針對(duì)服務(wù)端一次成功驗(yàn)證的時(shí)間進(jìn)行比較,時(shí)間的截取從認(rèn)證信息發(fā)出到認(rèn)證斷言頒發(fā)成功為止,采用統(tǒng)一的用戶(hù)名口令認(rèn)證方式。同時(shí)為了減少網(wǎng)絡(luò)IO對(duì)傳輸速率的影響,認(rèn)證系統(tǒng)都采用本地部署的方式,并且CAS和OpenID協(xié)議都采用單域的認(rèn)證機(jī)制,以減少跨域流程帶來(lái)的性能損失,防止其對(duì)比較結(jié)果產(chǎn)生影響。安全認(rèn)證系統(tǒng)的BPEL流程圖如圖6所示,它包含了可用的四種具體認(rèn)證方式。本節(jié)只對(duì)用戶(hù)名口令認(rèn)證方式進(jìn)行測(cè)試。其他三種方式的認(rèn)證服務(wù)構(gòu)件并未實(shí)現(xiàn)。但是為了使比較結(jié)果更加趨于實(shí)際應(yīng)用,流程中保留了分支活動(dòng)。為此,安全認(rèn)證BPEL流程接受的輸入?yún)?shù)除了包含用戶(hù)名、口令之外,還有所選擇的認(rèn)證方式標(biāo)識(shí),如圖5所示。
圖5 安全認(rèn)證系統(tǒng)輸入?yún)?shù)
CAS和OpenID的基本認(rèn)證流程如圖6所示,本試驗(yàn)為減少實(shí)驗(yàn)環(huán)境對(duì)測(cè)試性能的影響,將客戶(hù)端、依賴(lài)方、認(rèn)證服務(wù)器部署到統(tǒng)一機(jī)器上,并且只統(tǒng)計(jì)認(rèn)證服務(wù)器進(jìn)行認(rèn)證的時(shí)間,即圖6流程中從客戶(hù)端發(fā)送用戶(hù)身份數(shù)據(jù)(步驟3)到依賴(lài)方收到認(rèn)證結(jié)果(步驟4)之間的時(shí)間。
圖6 CAS和OpenID的基本認(rèn)證流程
本文利用3GHz主頻、2G內(nèi)存的計(jì)算機(jī),部署了CAS 3.0服務(wù)、OpenID服務(wù)以及安全認(rèn)證系統(tǒng),采用本地MySql身份數(shù)據(jù)庫(kù),針對(duì)一次成功的單域認(rèn)證所用的時(shí)間,對(duì)三個(gè)系統(tǒng)性能進(jìn)行比較分析,另外還對(duì)安全認(rèn)證系統(tǒng)內(nèi)的用戶(hù)名口令認(rèn)證服務(wù)構(gòu)件做了測(cè)試,以此分析基于BPEL構(gòu)件整合方案的性能損耗。具體數(shù)據(jù)見(jiàn)表1所示。
表1 各認(rèn)證系統(tǒng)性能數(shù)據(jù)比較
通過(guò)上述數(shù)據(jù)可以看出,基于安全服務(wù)構(gòu)件搭建的安全認(rèn)證系統(tǒng)在效率上較CAS和OpenID更為出色,但是與直接使用口令認(rèn)證服務(wù)構(gòu)件進(jìn)行認(rèn)證的效率相比,卻存在一定差距。根據(jù)認(rèn)證流程可以分析得出,這部分效率損失主要集中在web Service接口調(diào)用時(shí),對(duì)數(shù)據(jù)的xml編解碼過(guò)程之中。由此可見(jiàn),使用BPEL粘合服務(wù)構(gòu)件搭建安全業(yè)務(wù)系統(tǒng),是以部分性能損耗為代價(jià),換取高效的開(kāi)發(fā)、靈活的部署方式,在很多場(chǎng)景下是具有實(shí)際應(yīng)用價(jià)值的。
為了提高安全業(yè)務(wù)系統(tǒng)的效率,可以增加安全服務(wù)構(gòu)件的粒度,減少安全業(yè)務(wù)流程中web service的調(diào)用次數(shù);此外,研發(fā)更加高效的安全服務(wù)構(gòu)件粘合技術(shù)是解決該問(wèn)題最直接的手段。
4 結(jié)語(yǔ)
本文試圖介紹一種新型的建模方法,通過(guò)將AOP和BPEL等軟件開(kāi)發(fā)技術(shù)和思想結(jié)合到信息安全共性構(gòu)件的開(kāi)發(fā)和應(yīng)用中,使信息安全系統(tǒng)的建模過(guò)程更加方便,從上層而言避開(kāi)了瑣碎的實(shí)現(xiàn)技術(shù)細(xì)節(jié),所建立的系統(tǒng)邏輯清晰,從而減少了系統(tǒng)中存在的安全漏洞,具有更高的安全性能。同時(shí)從底層而言由于信息安全共性構(gòu)件的使用,系統(tǒng)的可重用性大大提高,用戶(hù)可以根據(jù)實(shí)際需要更換相應(yīng)的構(gòu)件,具有良好的擴(kuò)展性,系統(tǒng)的維護(hù)和更新更加便捷。
從長(zhǎng)遠(yuǎn)來(lái)看,云計(jì)算、服務(wù)托管是近來(lái)新興的業(yè)務(wù)模式和網(wǎng)絡(luò)應(yīng)用層體系結(jié)構(gòu)。由此產(chǎn)生出新的安全需求和安全問(wèn)題。包括策略集成在內(nèi)的諸多安全技術(shù)應(yīng)更好地借助共性安全構(gòu)件這一先進(jìn)開(kāi)發(fā)理念,從新的業(yè)務(wù)角度出發(fā),重新定位受保護(hù)的核心資產(chǎn)和安全目標(biāo)實(shí)施方式.提供與產(chǎn)業(yè)應(yīng)用升級(jí)同步的安全服務(wù)模式升級(jí)。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于服務(wù)構(gòu)件集成的安全訪問(wèn)業(yè)務(wù)建模方法
本文網(wǎng)址:http://www.ezxoed.cn/html/solutions/1401932319.html