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