王秀瑋,劉旭東
(1.煙臺職業(yè)學(xué)院建筑工程系;2.煙臺職業(yè)學(xué)院科研處,山東煙臺 264670)
Web服務(wù)已經(jīng)作為SOA[1](面向服務(wù)編程)的一種重要實現(xiàn)而被廣泛接受,其基于標(biāo)準(zhǔn)技術(shù)、平臺無關(guān)的特點也為下一代分布式的企業(yè)級集成提供了充分的技術(shù)支持.隨著人們對互聯(lián)網(wǎng)安全的重視,Web服務(wù)的安全問題也受到各技術(shù)廠商和研究人員的關(guān)注.IBM、微軟等廠商提出了各種標(biāo)準(zhǔn)和措施來解決Web服務(wù)的安全問題,但如何協(xié)同多個標(biāo)準(zhǔn)來完成Web服務(wù)綜合安全系統(tǒng)的設(shè)計,并沒有給出很好的解決方案.在多數(shù)同類研究中,也只是提供了Web服務(wù)安全某方面的考慮,并沒有對其全局安全進行統(tǒng)籌考慮.本文將基于此問題,提出一種Web服務(wù)的綜合安全模型,其包含:Web服務(wù)傳輸安全性、Web服務(wù)訪問控制、Web服務(wù)安全審核,并借助于AOP(面向方面編程)技術(shù),對三者進行協(xié)同實現(xiàn).
Web服務(wù)的安全性問題提出基于其安全威脅的存在,在Web服務(wù)的通信過程中,存在著信息泄露、電子欺騙、重放攻擊等威脅,要保證Web服務(wù)的安全性,對其傳輸載體SOAP消息(簡單對象訪問協(xié)議消息,XML形式)的安全防護應(yīng)該放在首位,當(dāng)前的通信防護措施可分為兩類:傳輸安全、消息安全.傳輸安全使用傳輸級協(xié)議(如HTTPS)獲取傳輸安全性,它的優(yōu)點是可以被廣泛采用、可用于多個平臺以及計算較為簡單,但同時它只能保證點到點的消息安全.消息安全模式使用 WS-Security(和其他規(guī)范)實現(xiàn)傳輸安全性,其直接應(yīng)用于SOAP消息并與應(yīng)用程序數(shù)據(jù)一起包含在SOAP信封內(nèi),獨立于傳輸協(xié)議、可擴展性更強以及可確保端到端安全性.基于此特點,本文選用消息安全來保證Web服務(wù)傳輸安全性.
消息安全可細分為數(shù)據(jù)保密性和數(shù)據(jù)完整性.
1)數(shù)據(jù)保密性需要通過SOAP消息加密來實現(xiàn)[2-3],常用的加密手段包括對稱密鑰加密和非對稱密鑰加密.其中對稱加密算法效率高,速度快,但需要加密和解密方交換密鑰,這常常帶來不安全因素.非對稱加密基于公鑰密碼體系,其算法公開,加密方和解密方通過PKI體系提供一攬子解決方案[4],無需交換密鑰.加密方和解密方各擁有公鑰和私鑰兩個密鑰,公鑰公開,私鑰自己保存.加密方利用對方的公鑰對信息進行加密,這樣只能由對方收到信息后利用其私鑰才能解開.但公鑰密碼體系密鑰較長,運算速率較之對稱密鑰體系相差較大.因此,常對二者結(jié)合使用,共同完成信息的加密.其解決方案為:隨機生成對稱密鑰,利用其對SOAP消息的需加密部分進行加密,然后利用接收方的公鑰對對稱密鑰進行加密,所有的加密算法和密鑰信息都根據(jù)XML加密標(biāo)準(zhǔn)嵌入消息本身內(nèi)部的節(jié)點中.接收方收到加密消息后,首先利用自己的私鑰解密消息的對稱密鑰,然后利用解密后的對稱密鑰進行解密消息內(nèi)容,得到原始消息.
2)數(shù)據(jù)完整性通過SOAP消息簽名來實現(xiàn),SOAP消息簽名技術(shù)類似于SOAP消息加密,其通過公鑰密碼體系對需簽名部分進行數(shù)字簽名,然后在接收方進行簽名驗證.其與非對稱加密技術(shù)的區(qū)別在于,非對稱加密是利用對方的公鑰對消息進行加密,然后對方利用私鑰進行解密,而簽名則是利用發(fā)送方的私鑰對消息(或者消息的摘要)進行簽名,接收方利用發(fā)送方的公鑰進行簽名驗證.
實際應(yīng)用中,常把SOAP消息加密和SOAP消息簽名放在一起考慮.為防止簽名被利用,常對消息進行簽名后再加密,可有效防止簽名被篡改和挪做它用.
要想訪問Web服務(wù)不被惡意調(diào)用,對其進行身份認證和訪問控制的實現(xiàn)是必須的.沒有身份認證的訪問控制是不安全的,沒有訪問控制的身份認證是沒有意義的.常常把兩者聯(lián)合起來考慮.
2.2.1 身份認證研究
在身份認證領(lǐng)域,為了減少身份認證的次數(shù),提高身份認證的效率,常采用單點登錄的實現(xiàn)方式,即統(tǒng)一身份認證.用戶訪問服務(wù)一次后,即可對授權(quán)域內(nèi)的服務(wù)進行無縫訪問.目前最受關(guān)注的解決方案是基于OASIS頒布的用于實現(xiàn)各廠商單點登錄和安全基礎(chǔ)設(shè)施之間的互操作性的SAML(Security Assertion Markup Language)安全斷言標(biāo)記語言[5],其基于XML框架,通過交換有關(guān)使用主題的安全斷言信息來完成不同使用域間交互信息的傳遞.本文采用基于SAML的單點登錄方案來實現(xiàn)Web服務(wù)的身份認證.
2.2.2 訪問控制研究
常見的訪問控制技術(shù)[6]有:自主訪問控制(Discretionary Control,DAC)、強制訪問控制(Mandatory Control,MAC)和基于角色的訪問控制(Role-Based Control,RBAC).三者都有自己特定的使用域,DAC是基于身份的控制,控制對象比較分散,主體數(shù)目和資源較多時,系統(tǒng)很難管理.MAC一般應(yīng)用于軍用場合,其基于嚴格的主客體訪問規(guī)則,保密性較好但不夠靈活,不適于Web服務(wù)的動態(tài)性環(huán)境.RBAC以角色作為權(quán)限和用戶的中介,實現(xiàn)了用戶與訪問權(quán)限的邏輯分離,動態(tài)性較好.因此本文的訪問控制將采用RBAC機制,同時為了保持與SOAP消息和SAML基于XML標(biāo)準(zhǔn)的一致性,本文采用基于XACML(可擴展訪問控制標(biāo)記語言)的角色訪問控制機制.XACML是一種基于XML的安全標(biāo)準(zhǔn),用于表示控制信息訪問的規(guī)則和策略,具有可移植性和標(biāo)準(zhǔn)性,便于在各種不同的訪問控制系統(tǒng)中實現(xiàn)互通互用.
2.2.3 Web服務(wù)審核研究
審核為管理員提供了一種檢測已經(jīng)發(fā)生或正在發(fā)生的攻擊的方式.此外,審核有助于開發(fā)人員調(diào)試與安全相關(guān)的問題.例如,如果授權(quán)或檢查策略配置中的錯誤意外拒絕授權(quán)用戶進行訪問,開發(fā)人員可以通過檢查事件日志迅速發(fā)現(xiàn)并隔離此錯誤的原因.建立審核策略是安全的重要方面.監(jiān)控對象的創(chuàng)建或修改提供了一種跟蹤潛在安全性問題的方法,從而幫助確保用戶的責(zé)任性,并在出現(xiàn)違反安全的事件時提供證據(jù).實現(xiàn)審核的常規(guī)手段是使用服務(wù)操作系統(tǒng)所自帶的安全審核機制,但這種審核措施力度比較大,在Web服務(wù)環(huán)境這種分布式的復(fù)雜環(huán)境下,基于編程實現(xiàn)的安全審核可更好的實現(xiàn)審核的細粒度控制和審核策略制定.本文在J2EE環(huán)境下基于AOP技術(shù)來實現(xiàn)Web服務(wù)的安全審核.
通過對Web服務(wù)安全的三個核心方面的分析研究,下面給出Web服務(wù)安全綜合模型如圖1所示.
圖1 Web服務(wù)綜合安全模型
該模型共由十個部分組成:主體、Aspect管理、身份認證服務(wù)、訪問控制服務(wù)、目標(biāo)服務(wù)、審核、四個加密/簽名(解密/驗證)處理模塊.下面分別給予解釋.
1)主體:指請求訪問目標(biāo)服務(wù)的所有應(yīng)用程序或服務(wù).
2)目標(biāo)服務(wù):為用戶提供所需的服務(wù),是一個服務(wù)集合,接受用戶調(diào)用.
3)Aspect管理(切面管理)模塊:完成所有客戶端與目標(biāo)服務(wù)的交互,采用面向方面AOP思想來實現(xiàn),類似一個攔截器,它與目標(biāo)服務(wù)組成目標(biāo)服務(wù)域.
4)身份認證服務(wù):發(fā)布為一個Web服務(wù),該服務(wù)提供用戶的登錄與SAML身份認證聲明與令牌,用于在不同的信息系統(tǒng)之間傳遞其身份認證信息.
5)訪問控制服務(wù):訪問控制服務(wù)也是一個獨立的服務(wù),它為用戶對目標(biāo)服務(wù)的請求訪問提供公共策略訪問控制,以保證服務(wù)只能被授權(quán)的用戶訪問,在訪問具體服務(wù)時,如果還有本地策略控制,則需要均滿足才能訪問目標(biāo)服務(wù).
6)審核:位于Aspect管理模塊中,對所攔截到的交互情況按照一定的策略進行審核,并將審核結(jié)果寫入預(yù)先設(shè)定的安全日志中.
7)四個消息安全處理模塊:雖位于不同的模型位置,但它們處理的問題對象是一致的,四者均用于對消息的相關(guān)安全處理,如加密、解密、簽名、驗證,具體功能依賴當(dāng)前的使用環(huán)境.
該模型有效的綜合了Web服務(wù)安全所涉及的各個方面,對其分別選取了適當(dāng)?shù)膶崿F(xiàn)技術(shù),并采用了面向方面技術(shù)來提取各個技術(shù)的實現(xiàn)切入點,有效實現(xiàn)了多種技術(shù)在實現(xiàn)上的統(tǒng)一管理,將信息系統(tǒng)的客戶端和目標(biāo)服務(wù)域以及Web服務(wù)安全系統(tǒng)進行了有效融合.Web服務(wù)安全系統(tǒng)并不是一個獨立的子系統(tǒng),它的功能獨立,但實現(xiàn)卻融合在客戶端和目標(biāo)服務(wù)端以及二者之間的通信通道上.設(shè)計中將Web服務(wù)安全系統(tǒng)劃分為信息系統(tǒng)客戶端、Web服務(wù)授權(quán)訪問控制端、信息系統(tǒng)目標(biāo)服務(wù)域三個部分.
信息系統(tǒng)客戶端主要是面向用戶的,負責(zé)數(shù)據(jù)展現(xiàn)和接受用戶的輸入信息,生成SAML身份請求,調(diào)用訪問控制域的身份認證服務(wù),接收返回的SAML令牌,訪問業(yè)務(wù)Web服務(wù).
Web服務(wù)訪問控制域提供身份認證與訪問控制相關(guān)的服務(wù),主要包括三個方面的服務(wù):身份認證服務(wù)、訪問控制服務(wù)、身份/訪問策略維護服務(wù).單點登錄的實現(xiàn)主要靠身份認證服務(wù)來實現(xiàn),該服務(wù)根據(jù)請求的SAML信息生成SAML響應(yīng)令牌返回客戶端,通過該令牌實現(xiàn)單點登錄;對目標(biāo)服務(wù)的訪問控制通過身份認證服務(wù)和訪問控制服務(wù)來實現(xiàn),身份認證服務(wù)提供身份查詢,訪問控制服務(wù)提供公共策略查詢,除此之外,有時候也需要考慮目標(biāo)服務(wù)的本地策略.身份/訪問策略維護服務(wù)提供維護身份和策略的接口,便于統(tǒng)一維護.同時,訪問控制域還需要進行令牌生存周期管理,一般是把當(dāng)前的令牌實體放入容器(緩存)中,接受查詢與刪除.
信息系統(tǒng)目標(biāo)服務(wù)域,當(dāng)有服務(wù)請求時,目標(biāo)服務(wù)域先查看用戶是否有SAML令牌,如果沒有就會定位到登錄模塊,讓用戶先登錄,登錄后就持有SAML身份令牌,在允許訪問服務(wù)前,目標(biāo)服務(wù)先調(diào)用訪問控制域的身份認證服務(wù),通過SAML令牌請求SAML身份認證聲明,然后通過用戶屬性請求訪問控制服務(wù)(公共訪問控制策略),返回結(jié)果為是否允許訪問,如果還有本地特定策略,那么還需要繼續(xù)訪問本地策略,全部允許才可以最終訪問目標(biāo)服務(wù).目標(biāo)服務(wù)接收調(diào)用后將返回調(diào)用結(jié)果.同時,服務(wù)的每次請求結(jié)果都將依據(jù)審核規(guī)則寫入系統(tǒng)安全日志.
在J2EE環(huán)境下實現(xiàn)上述的Web服務(wù)系統(tǒng)將依賴各種技術(shù)對應(yīng)的開發(fā)包.本文中,Web服務(wù)采用cxf開發(fā)包完成,消息安全采用實現(xiàn)ws-security的Wss4j開發(fā)包,身份認證服務(wù)采用opensaml開發(fā)包,訪問控制采用sunxacml開發(fā)包,AOP技術(shù)采用Spring框架下SpringAOP結(jié)合@AspectJ實現(xiàn).總體安全技術(shù)部署場景如圖2所示.
圖2 總體安全技術(shù)部署場景
為了檢驗系統(tǒng)的運行效果,特分別對系統(tǒng)進行了運行測試,在發(fā)送SOAP消息到利用SOAP消息接受返回信息的過程中,通過SOAP消息探查工具Membrane SOAPMonitor對加裝安全服務(wù)后的SOAP消息進行了攔截,并與為加裝前的SOAP消息進行了比較測試,發(fā)現(xiàn)系統(tǒng)較好的完成了傳輸安全,在SAML令牌的發(fā)放和XACML的策略控制中,都獲得了較好的效果.
本文立足于解決Web服務(wù)的綜合安全性問題,區(qū)別于以前同類研究中多數(shù)集中于安全性問題的某一方面,從安全性問題的全局定義入手,提出了傳輸安全、訪問控制和審核為一體的綜合安全定義.在分析當(dāng)前各種實現(xiàn)技術(shù)的基礎(chǔ)上,從Web服務(wù)的特性出發(fā),以可擴展性和標(biāo)準(zhǔn)性為目的,融合多種先進的國際標(biāo)準(zhǔn)和系統(tǒng)設(shè)計方法,最終構(gòu)建了一種有效Web服務(wù)綜合性模型.實現(xiàn)了目標(biāo)服務(wù)域的單點登錄,但沒有考慮當(dāng)用戶規(guī)模非常大時,目標(biāo)服務(wù)域維持單點登錄所需要的代價,這還是一個需要不斷完善和亟待研究的問題.
[1]Kishore Channabasavaiah,Kerrie Holley.Migrating to a service-oriented architecture[EB/OL].[2011-8-17].http://www.cytetech.com/documents/SOA-IBM.
[2]劉振鵬,周冬冬,薛林雁,等.一個基于SOAP消息的Web服務(wù)綜合安全模型[J].武漢大學(xué)學(xué)報(理學(xué)版),2006,52(5):156-158.
[3]張功萱,宋斌,王平云.基于SOAP消息的網(wǎng)絡(luò)消息安全策略[J].南京理工大學(xué)學(xué)報(自然科學(xué)版),2007,31(1):165-168.
[4]馬臣云,王彥,等.PKI網(wǎng)絡(luò)安全認證技術(shù)與編程實現(xiàn)[M].北京:電子工業(yè)出版社,2008.
[5]單永剛.數(shù)字圖書館網(wǎng)格基于SAML單點登錄的研究[J].電腦知識與技術(shù),2009,15(1):71-73.
[6]周星海.基于SOAP的Web服務(wù)訪問控制技術(shù)的研究[D].大連:大連海事大學(xué),2006.