楊帆,李文艷
(1.北京航空航天大學(xué) 計算機學(xué)院,北京 100191;2.中國建設(shè)銀行總行,北京 100033)
面向服務(wù)的體系架構(gòu)(Service Oriented Architecture,簡稱為SOA)已經(jīng)成為分布式應(yīng)用的一種流行的設(shè)計規(guī)范,并成為了網(wǎng)絡(luò)環(huán)境下異構(gòu)系統(tǒng)和資源進行互連和協(xié)作的高效解決方案,而服務(wù)是SOA架構(gòu)的核心概念。面向服務(wù)的計算,其基本思想是將應(yīng)用資源服務(wù)化,可通過服務(wù)描述文件,向潛在用戶提供符合統(tǒng)一規(guī)范的良定義的接口,以便進行服務(wù)的發(fā)現(xiàn)、組合和調(diào)用,并實現(xiàn)松耦合的組織關(guān)系[1]。
當(dāng)服務(wù)使用因特網(wǎng)作為通信手段,并且遵循因特網(wǎng)的相應(yīng)標(biāo)準(zhǔn)規(guī)范時,服務(wù)為Web服務(wù)。由于Web服務(wù)的交互是基于公開的通信協(xié)議和交互機制,調(diào)用接口也是開放的,在實現(xiàn)便利性的同時,也因此帶來了相應(yīng)的安全問題。
目前,Web服務(wù)面臨的主要安全威脅可以分為以下四大類:
Web服務(wù)交互的數(shù)據(jù),尤其是隱私、機密數(shù)據(jù),被非授權(quán)用戶進行非法訪問的風(fēng)險,例如非授權(quán)方通過截取Web服務(wù)的交互數(shù)據(jù)獲取用戶的銀行賬戶信息。訪問控制技術(shù)可以減少這方面的風(fēng)險[2]。
未經(jīng)授權(quán)的用戶對消息中整個數(shù)據(jù)的刪除和修改,或者針對性的對部分?jǐn)?shù)據(jù)進行篡改、刪除和注入附加信息。例如偽造信息、會話劫持、重放攻擊。消息的加解密技術(shù)可以減少這方面的風(fēng)險。
攻擊者攻占一個SOAP報文的傳輸中介,比如中介路由器,在參與方不知情的情況下,在Web服務(wù)的提供者和請求者之間通過傳輸中介對交互的報文信息進行截取或篡改。消息的數(shù)字簽名技術(shù)可以減少這方面的風(fēng)險。
攻擊者通過發(fā)送大量無用的請求報文以占用大量資源,使得合法用戶的合法服務(wù)請求報文無法及時解析。例如,短時間內(nèi)發(fā)送大量的消息,尤其是含有解密或簽名驗證需求的安全報文,會在短時間內(nèi)占用絕大多數(shù)的系統(tǒng)資源,將會嚴(yán)重的影響服務(wù)的可用性,甚至進而影響服務(wù)所在中間件系統(tǒng)的可用性。XML的預(yù)處理技術(shù),即對接收到的XML報文進行分析處理,可以減少這種攻擊造成的威脅[3]。傳統(tǒng)的網(wǎng)絡(luò)安全機制,比如路由器、防火墻、IP地址訪問限制,以及使用SSL安全套接字層,只能在網(wǎng)絡(luò)層保證Web服務(wù)安全。比如缺乏檢查網(wǎng)絡(luò)流量(例如SOAP報文中的XML格式文本)的內(nèi)容,以及授權(quán)驗證和訪問控制決策的能力。
Web服務(wù)需要對報文進行加密和數(shù)字簽名,以保證報文的機密性和完整性;同時需要了解請求者是誰,正在請求的信息是什么,以及正在請求什么特定服務(wù)或操作,以建立基于請求者、服務(wù)提供者、請求何種操作等情況采取基于策略的訪問控制決策模型。安全策略管理器通過對Web服務(wù)對應(yīng)的服務(wù)描述文檔中安全策略標(biāo)識的解析,通過策略樹算法的處理完成安全策略的建模,并將其加載到內(nèi)存中。
訪問控制模塊的策略決策點接收到上下文處理器發(fā)送的符合XACML請求格式的評估上下文后,根據(jù)本次請求的具體內(nèi)容,主要包括主體、資源、操作和各種屬性信息,在容器內(nèi)提前部署的策略庫中選擇合適的策略。策略定位器負責(zé)查找與請求消息相對應(yīng)的策略。策略中標(biāo)明了服務(wù)的用戶集,以及該用戶集可進行的操作[4]。
策略評估的過程是從容器內(nèi)的策略文檔中獲取與本次請求相關(guān)的策略,只有通過評估的策略,才能在決策過程中繼續(xù)進行決策。策略決策點解析本次請求以及通過評估選擇的與其適用的策略,通過對請求與策略中規(guī)則部分的解析,獲得訪問控制的授權(quán)結(jié)果。
具體處理流程可分為如下幾個步驟:
(1)客戶端發(fā)送的訪問請求通過身份認(rèn)證處理器到達策略執(zhí)行點(PEP),身份認(rèn)證處理器對報文中的用戶標(biāo)識信息等斷言信息進行驗證解析。
(2)策略執(zhí)行點(PEP)對訪問的請求SOAP報文進行分析,通過特征標(biāo)簽判斷該請求報文的訪問控制斷言種類。請求中包括主體、資源、環(huán)境及行為的屬性進行建模,并將相應(yīng)數(shù)據(jù)發(fā)送給上下文處理器。
(3)策略信息點完成對系統(tǒng)容器內(nèi)的訪問控制策略文件的解析,將用戶屬性、環(huán)境屬性和資源屬性等信息傳遞給上下文處理器。
(4)上下文處理器將授權(quán)請求信息格式化,并發(fā)送給策略決策點。策略決策點通過上下文處理器傳遞的信息,套用規(guī)則集,進行訪問控制決策,并將決策結(jié)果反饋給請求方。
在信息系統(tǒng)的應(yīng)用場景中,由于各分系統(tǒng)的軟硬件環(huán)境的多樣性和異構(gòu)性,所以采用面向服務(wù)的軟件體系結(jié)構(gòu),并實現(xiàn)以服務(wù)為核心的軟件開發(fā)方式,提供服務(wù)化的軟件集成手段和運行環(huán)境,可以屏蔽各終端應(yīng)用環(huán)境的多樣性,為應(yīng)用系統(tǒng)的基于C++/DLL等各種服務(wù)或構(gòu)件提供靈活的創(chuàng)建和重組,完成軟件的服務(wù)或構(gòu)件的封裝、系統(tǒng)按需裝配、系統(tǒng)部署、軟件集成運行,支持應(yīng)用系統(tǒng)的靈活部署和按任務(wù)動態(tài)集成[5]。
通過使用Loadrunner及SOAPUI軟件,對平臺容器中部署的安全服務(wù)進行調(diào)用測試。測試服務(wù)為信息系統(tǒng)中的海況歷史數(shù)據(jù)查詢服務(wù)。對Web服務(wù)中間件容器部署的安全服務(wù)進行穩(wěn)定性測試,調(diào)用服務(wù)時長8小時,在100個線程并發(fā)訪問采用128位密鑰加密算法的接口為復(fù)雜數(shù)據(jù)類型的即時海況查詢服務(wù),測試的平均響應(yīng)時間不超過500毫秒,訪問控制錯誤率不超過萬分之一[6]。
系統(tǒng)應(yīng)用實驗表明,基于策略的訪問控制和消息的安全處理為信息系統(tǒng)的可靠性、安全性提供了保障,支持了SOA架構(gòu)下Web服務(wù)的安全交互。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和遠程控制、信息自動化等應(yīng)用場景的推廣,用戶對安全性的要求將會越來越高。
本文從SOA體系架構(gòu)背景出發(fā),結(jié)合Web服務(wù)應(yīng)用目前所面臨的安全挑戰(zhàn),設(shè)計了策略樹的構(gòu)建算法,采用了將報文加密、數(shù)字簽名及身份驗證相結(jié)合的安全處理方式,提出了一種基于策略的Web服務(wù)安全處理辦法?;谝陨涎芯?,完成了Web服務(wù)安全處理模塊的系統(tǒng)實現(xiàn),并在信息系統(tǒng)的應(yīng)用場景中進行了安全處理模塊的實際應(yīng)用。