隨著 Web 服務(wù)由技術(shù)概念到實(shí)踐應(yīng)用的不斷發(fā)展,種種跡象表明Web服務(wù)將是未來(lái)應(yīng)用架構(gòu)的一個(gè)極為重要的模式
隨著 Web 服務(wù)由技術(shù)概念到實(shí)踐應(yīng)用的不斷發(fā)展,種種跡象表明Web服務(wù)將是未來(lái)應(yīng)用架構(gòu)的一個(gè)極為重要的模式。當(dāng) Web 服務(wù)用于試驗(yàn)計(jì)劃和大規(guī)模生產(chǎn)時(shí),擁有一種松散耦合的、與語(yǔ)言和平臺(tái)無(wú)關(guān)的、在組織內(nèi)跨企業(yè)、跨因特網(wǎng)鏈接應(yīng)用程序的方法的好處正變得愈發(fā)明顯。我們的客戶(hù)、業(yè)界分析家和新聞界確定了當(dāng) Web 服務(wù)日益成為主流時(shí)要解決的關(guān)鍵問(wèn)題:安全性。這篇文章就是討論如何選擇并實(shí)現(xiàn)基于標(biāo)準(zhǔn)的安全體系架構(gòu),滿足真實(shí)企業(yè)的 Web 服務(wù)安全需要。
Web 服務(wù)體系架構(gòu)的關(guān)鍵是能夠交付集成的、可互操作的解決方案。通過(guò)應(yīng)用這個(gè)安全模型,確保 Web 服務(wù)的完整性、機(jī)密性和安全性,這對(duì)軟件商和它們的客戶(hù)來(lái)說(shuō)都至關(guān)重要。將會(huì)出臺(tái)的Web服務(wù)基本的安全規(guī)范包括:
用于整合的Web服務(wù)描述語(yǔ)言、用于認(rèn)證和授權(quán)的安全性聲明標(biāo)記語(yǔ)言、用于渠道保密的安全槽層(SSL)、用于高度機(jī)密的XML加密標(biāo)準(zhǔn)和用于高級(jí)授權(quán)的XML數(shù)字簽名。此外,其他幾項(xiàng)規(guī)范也會(huì)陸續(xù)出臺(tái),包括:
Web服務(wù)安全性規(guī)范(包括XML-加密和XML-數(shù)字簽名)、XML密鑰管理規(guī)范和用于授權(quán)的可擴(kuò)展訪問(wèn)控制標(biāo)記語(yǔ)言規(guī)范等等。
為Web服務(wù)提供安全功能和組件的模型需要把現(xiàn)有的流程和技術(shù)與將來(lái)的應(yīng)用程序的安全性需求集成起來(lái)。統(tǒng)一的安全技術(shù)就必須把應(yīng)用程序?qū)Π踩男枨髲奶囟ǖ臋C(jī)制中抽象出來(lái)。目的是讓開(kāi)發(fā)者能夠容易地使用異類(lèi)系統(tǒng)建立可互操作的安全解決方案。成功的Web服務(wù)安全方法需要一組靈活的、可互操作的基本元素,通過(guò)策略和配置,這些安全性基本元素可以使多種安全解決方案成為可行的方案。可行的Web服務(wù)安全性機(jī)制需要滿足和包括下列組件的要求:
網(wǎng)絡(luò)安全性
支持如SSL等提供機(jī)密性和完整性的安全傳輸機(jī)制。
XML消息安全性
1)XML數(shù)字簽名,以便接收方可以證明消息發(fā)送方的身份。
2)XML加密,提供數(shù)據(jù)元素的機(jī)密性使能夠驗(yàn)證交換。W3C發(fā)布XML密鑰管理服務(wù)(XML Key Management Services,簡(jiǎn)稱(chēng)XKMS)的備忘錄,幫助分發(fā)及管理在端點(diǎn)之間進(jìn)行安全通信所需的密鑰。
端點(diǎn)驗(yàn)證及授權(quán)
1)支持在企業(yè)之間交換信息的合同中定義哪些雇員可以使用哪些服務(wù)。中介體負(fù)責(zé)審計(jì)和服務(wù)原始性證明。
2)支持網(wǎng)絡(luò)內(nèi)部的、可信任的第三方驗(yàn)證服務(wù),例如Kerberos。
安全性服務(wù)描述
1)描述是否支持?jǐn)?shù)字簽名、加密、驗(yàn)證和授權(quán)以及如何支持它們。Web服務(wù)請(qǐng)求者使用服務(wù)描述的安全性元素,來(lái)查找符合政策要求及其安全性方法的服務(wù)端點(diǎn)。
2)OASIS成立了一個(gè)技術(shù)委員會(huì)來(lái)定義授權(quán)和驗(yàn)證斷言(Authorization and Authentication Assertions,簡(jiǎn)稱(chēng)SAML),幫助端點(diǎn)接受和決斷訪問(wèn)控制權(quán)。
3)OASIS同時(shí)成立了另一個(gè)技術(shù)委員會(huì)來(lái)標(biāo)準(zhǔn)化訪問(wèn)控制權(quán)的表達(dá) (eXtensible Access Control Markup Language,簡(jiǎn)稱(chēng)XACML),幫助端點(diǎn)能夠以一致的方式解析SAML斷言。
XML相關(guān)標(biāo)準(zhǔn)化團(tuán)體"Organization for the Advancement of Structured Information Standards(OASIS)"的加盟企業(yè)成立了制定Web服務(wù)安全標(biāo)準(zhǔn)"Web Services Security(WS-Security)"的技術(shù)委員會(huì)"Web Services Security Technical Committee(WS-Security TC)"。這是OASIS于美國(guó)當(dāng)?shù)貢r(shí)間2002年7月23日宣布的。
WS-Security標(biāo)準(zhǔn)的目的是確保Web服務(wù)應(yīng)用軟件處理數(shù)據(jù)的完整性及保密性,規(guī)定了Web服務(wù)協(xié)議SOAP的擴(kuò)展及消息頭(Message Header)。這是由IBM、微軟和VeriSign共同研究制定的。 WS-Security融合了多種安全模式、結(jié)構(gòu)和技術(shù),是面向Web服務(wù)的標(biāo)準(zhǔn)規(guī)格之一。各種系統(tǒng)可以通過(guò)平臺(tái)及不依賴(lài)語(yǔ)言的方法確保相互兼容。
WS-Security 描述通過(guò)消息完整性、消息機(jī)密性和單獨(dú)消息認(rèn)證提供保護(hù)質(zhì)量對(duì) SOAP 消息傳遞的增強(qiáng)。這些機(jī)制可以用于提供多種安全性模型和加密技術(shù)。WS-Security 還提供關(guān)聯(lián)安全性令牌和消息的通用機(jī)制。WS-Security 不需要特定類(lèi)型的安全性令牌。它在設(shè)計(jì)上就是可擴(kuò)展的(例如支持多安全性令牌格式)。舉例來(lái)說(shuō),客戶(hù)機(jī)可能會(huì)提供身份證明和他們有特定商業(yè)認(rèn)證的證明。
另外,WS-Security 還描述如何對(duì)二進(jìn)制安全性令牌編碼。此規(guī)范特別描述如何對(duì) X.509 證書(shū)和 Kerberos 票據(jù)編碼以及如何加入難于理解的加密密鑰。它還包括可以用于進(jìn)一步描述消息中包含的憑證特征的擴(kuò)展性機(jī)制。
WS-Security 很靈活,它被設(shè)計(jì)成用來(lái)構(gòu)建多種安全性模型(包括 PKI、Kerberos 和 SSL)的基礎(chǔ)。WS-Security 特別為多安全性令牌、多信任域、多簽名格式和多加密技術(shù)提供支持。規(guī)范提供了三種主要的機(jī)制:安全性令牌傳播、消息完整性和消息機(jī)密性。這些機(jī)制本身并不提供完整的安全性解決方案。相反,WS-Security 是一種構(gòu)件,它可以與其它 Web 服務(wù)擴(kuò)展和更高級(jí)的特定于應(yīng)用程序的協(xié)議聯(lián)合使用,以適應(yīng)多種安全性模型和加密技術(shù)。這些機(jī)制可以獨(dú)立使用(例如傳送安全性令牌),或以緊密集成的方式使用(例如,對(duì)消息簽名和加密,并提供與用于簽名和加密的密鑰相關(guān)的安全性令牌層次結(jié)構(gòu))。
1、WS-Security及有關(guān)的規(guī)范
下面介紹一個(gè)能夠滿足真實(shí)企業(yè)的Web服務(wù)安全性需要的基于標(biāo)準(zhǔn)的體系架構(gòu)。IBM、Microsoft和Verisign聯(lián)手制定了有關(guān)Web服務(wù)安全性的計(jì)劃和指南,用來(lái)開(kāi)發(fā)一組提供保護(hù)Web服務(wù)安全性的規(guī)范。這個(gè)安全性模型把不同的安全性技術(shù),比如公用密鑰基礎(chǔ)架構(gòu)、Kerberos等集中在一起,以保證能夠在現(xiàn)有的系統(tǒng)環(huán)境中構(gòu)建安全的Web服務(wù)。通過(guò)利用Web服務(wù)模型核心處的自然可擴(kuò)展性,這些規(guī)范建立在一些基礎(chǔ)技術(shù)的基礎(chǔ)之上,如SOAP、WSDL、XML數(shù)字簽名(XML Digital Signature)、XML加密(XML Encryption)和SSL技術(shù)。這允許Web服務(wù)提供者和請(qǐng)求者開(kāi)發(fā)滿足他們應(yīng)用程序的個(gè)別安全性需求的解決方案。這是一個(gè)由IBM、Microsoft和Verisign提議的WS-Security規(guī)范定義,用于保護(hù)消息完整性和機(jī)密性的核心工具,以及用于把有關(guān)安全性的聲明與消息關(guān)聯(lián)起來(lái)的機(jī)制。
目前,SSL、Transport Layer Security(TLS)和IPSec被用于為Web服務(wù)應(yīng)用程序提供傳輸級(jí)別的安全性。它們的安全性功能包括認(rèn)證、數(shù)據(jù)完整性和數(shù)據(jù)機(jī)密性,保證點(diǎn)對(duì)點(diǎn)Web服務(wù)安全性。Web服務(wù)應(yīng)用程序是個(gè)多跳(Multi-Hop)拓?fù)洌蕾?lài)于消息處理中介體轉(zhuǎn)發(fā)消息。當(dāng)傳輸層之外的中介體接收并轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),數(shù)據(jù)的完整性和任何隨數(shù)據(jù)流動(dòng)的安全性信息都可能失去。所以,全面的Web服務(wù)安全性體系架構(gòu)必須是一個(gè)提供端到端安全性的機(jī)制。
圖1所示為提議的Web服務(wù)安全性規(guī)范組合。
圖1 WEB 服務(wù)安全性規(guī)范組合
這組規(guī)范建立在SOAP標(biāo)準(zhǔn)規(guī)范上,包括一個(gè)WS-Security的消息安全性模型、一個(gè)描述Web服務(wù)端點(diǎn)策略的WS-Policy、一個(gè)WS-Trust信任模型和一個(gè)隱私權(quán)模型WS-Privacy。在這些規(guī)范的基礎(chǔ)上,可以跨多個(gè)信任域創(chuàng)建安全的、可互操作的Web服務(wù),還可以提供后繼規(guī)范,例如安全會(huì)話WS-SecureConversation、聯(lián)合信任WS-Federation和授權(quán)WS-Authorization。安全性規(guī)范、相關(guān)活動(dòng)和互操作性概要文件組合在一起,將方便開(kāi)發(fā)者建立可互操作的、安全的Web服務(wù)。下面簡(jiǎn)單描述被提議的各個(gè)規(guī)范:
WS-Security
描述如何向SOAP消息附加簽名和加密報(bào)頭,還描述如何向消息附加安全性 令牌,比如二進(jìn)制安全性令牌的X.509證書(shū)和Kerberos票據(jù)。提供了一個(gè)通用機(jī)制把可擴(kuò)展的安全性令牌與消息關(guān)聯(lián)起來(lái)。使用XML簽名和安全性令牌可以確保消息的完整性,消息在傳輸過(guò)程中未被修改。同樣地,使用XML加密和安全性令牌可以使SOAP消息的一部分保密,提供消息機(jī)密性。
WS-Policy
描述中介體和端點(diǎn)上的安全性策略的能力和限制,比如所需的安全性令牌、 所支持的加密算法和隱私權(quán)規(guī)則。這是可擴(kuò)展的,并且不會(huì)對(duì)可以描述的要求和能力的類(lèi)型做什么限制,此規(guī)范識(shí)別幾個(gè)基本的服務(wù)屬性,包括隱私權(quán)屬性、編碼格式、安全性令牌要求和支持的算法。
WS-Trust
描述使Web服務(wù)能夠安全地進(jìn)行互操作的信任模型的框架。此規(guī)范描述如何 通過(guò)創(chuàng)建安全性令牌保證服務(wù)把現(xiàn)有的直接信任關(guān)系用作代理信任的基礎(chǔ)。
這些安全性令牌保證服務(wù)建立在WS-Security的基礎(chǔ)上,用一種保證令牌的完整性和機(jī)密性的方式傳送那些必需的安全性令牌。
WS-Privacy
描述Web服務(wù)提供者和請(qǐng)求者如何聲明主題隱私權(quán)首選項(xiàng)和組織隱私權(quán)實(shí)踐聲明的模型。通過(guò)使用WS-Policy、WS-Security和WS-Trust的組合,商業(yè)機(jī)構(gòu)可以聲明并指出遵守聲明的隱私權(quán)策略。此規(guī)范描述一個(gè)關(guān)于如何把隱私權(quán)語(yǔ)言嵌入到WS-Policy的描述,以及如何使用WS-Security把隱私權(quán)聲明與消息關(guān)聯(lián)起來(lái)的模型,它還描述如何使用WS-Trust機(jī)制,同時(shí)為用戶(hù)首選項(xiàng)和組織實(shí)踐聲明評(píng)價(jià)這些隱私權(quán)聲明。
WS-SecureConversation
描述如何管理和認(rèn)證各方之間的消息交換,包括安全性上下文交換以及建立 和派生會(huì)話密鑰。
WS-Federation
描述如何管理和代理異類(lèi)聯(lián)合的環(huán)境中的信任關(guān)系,包括支持聯(lián)合身份。此 規(guī)范定義如何使用WS-Security、WS-Policy、WS-Trust和WS-SecureConversation 規(guī)范構(gòu)建聯(lián)合信任案例,例如如何把Kerberos和PKI基礎(chǔ)架構(gòu)聯(lián)合起來(lái)。
WS-Authorization
描述如何管理授權(quán)數(shù)據(jù)和授權(quán)策略,如何在安全性令牌內(nèi)指定聲明,以及這 些聲明在端點(diǎn)處將如何被解釋。此規(guī)范在授權(quán)格式和授權(quán)語(yǔ)言上是靈活且可 擴(kuò)展的。
由于這個(gè)Web服務(wù)安全性模型與現(xiàn)今普遍使用的用于認(rèn)證、數(shù)據(jù)完整性和數(shù)據(jù)機(jī)密性的現(xiàn)有安全性模型兼容,所以它可以把基于Web服務(wù)的解決方案與現(xiàn)有的其他安全性模型集成起來(lái)。例如,現(xiàn)有技術(shù)如SSL為消息提供簡(jiǎn)單的點(diǎn)對(duì)點(diǎn)完整性和機(jī)密性,而Web服務(wù)安全性模型支持把這些現(xiàn)有的安全傳輸機(jī)制與WS-Security和其他規(guī)范集成來(lái)提供跨多個(gè)中介體和傳輸協(xié)議的端到端完整性和機(jī)密性。Public Key Infrastructure(PKI)模型涉及到簽發(fā)帶公用對(duì)稱(chēng)密鑰的證書(shū)的證書(shū)機(jī)構(gòu)和聲明除密鑰所有權(quán)之外屬性的機(jī)構(gòu)。這種證書(shū)的擁有者可以使用相關(guān)的密鑰來(lái)表示多種聲明。另外,Kerberos模型依靠與密鑰分發(fā)中心(Key Distribution Center)通信,通過(guò)簽發(fā)加密的對(duì)稱(chēng)密鑰來(lái)代理各方之間的信任。Web服務(wù)安全性模型支持安全性令牌服務(wù)使用公用不對(duì)稱(chēng)密鑰簽發(fā)安全性令牌。現(xiàn)有的信任模型通常都是基于企業(yè)間的協(xié)定,例如UDDI商業(yè)注冊(cè)中心的Web服務(wù)。UDDI有多個(gè)參與者,它的信任模型不是根據(jù)特定認(rèn)證機(jī)制的要求為信任定義一個(gè)單獨(dú)的模型,而是把認(rèn)證的責(zé)任交給每個(gè)節(jié)點(diǎn)的信息管理員。每個(gè)UDDI中的Web服務(wù)可能有自己的認(rèn)證機(jī)制并強(qiáng)制遵守自己的訪問(wèn)控制策略,而信任取決于服務(wù)請(qǐng)求者和管理其信息的操作員之間的信任。
2、Web服務(wù)可靠性及SOAP層安全擴(kuò)展
由富士通、日立、NEC、Oracle、Sonic軟件和Sun等領(lǐng)先IT廠商宣布,它們將合作發(fā)布Web服務(wù)可靠性(Web Services Reliability)技術(shù)規(guī)范工作草案。這一WS-Reliability技術(shù)規(guī)范將通過(guò)提供一個(gè)更為可靠的傳輸基礎(chǔ)設(shè)施,加快Web服務(wù)的采用,以適應(yīng)企業(yè)界各種各樣的應(yīng)用需求。
WS-Reliability是一個(gè)針對(duì)開(kāi)放的、可靠的Web服務(wù)訊息遞交的技術(shù)規(guī)范,包括擔(dān)保遞交、復(fù)制訊息排除和訊息分類(lèi)等,使各種Web服務(wù)之間得以進(jìn)行更可靠的訊息傳遞。WS-Reliability基于SOAP協(xié)議,而不局限于基礎(chǔ)傳輸協(xié)議。
自從SOAP規(guī)范從2001年發(fā)布以來(lái),SOAP規(guī)范的加密性,認(rèn)證和授權(quán)等安全機(jī)制一直受到人們的廣泛關(guān)注。這三個(gè)方面對(duì)于任何的B2B來(lái)說(shuō)都是很重要的 ,但SOAP標(biāo)準(zhǔn)在制定規(guī)范時(shí)并沒(méi)有過(guò)多考慮SOAP 的安全性要求。因?yàn)镾OAP一個(gè)很重要的設(shè)計(jì)目標(biāo)就在于它的簡(jiǎn)單性,盡可能的利用已有的標(biāo)準(zhǔn)和協(xié)議來(lái)實(shí)現(xiàn)相應(yīng)的功能。
SOAP安全的解決方案基于三個(gè)W3C的XML規(guī)范來(lái)實(shí)現(xiàn):XML Digital Signature, XML encryption, and XML Key Management Services。SOAP層安全處于傳輸層和應(yīng)用層之上,對(duì)SOAP層的安全性進(jìn)行擴(kuò)展,把關(guān)于安全的五個(gè)基本要求應(yīng)用到整個(gè)的SOAP信息中,包括SOAP頭以及SOAP體。同時(shí),更多的安全措施也可結(jié)合SOAP層安全與傳輸層以及應(yīng)用程序來(lái)共同解決。(如下圖2)
??????
圖2 SOAP層安全擴(kuò)展
1)SOAP 安全擴(kuò)展: 數(shù)字簽名 (Signature)
"SOAP Security Extensions: Digital Signature"最初設(shè)想是利用XML的數(shù)字簽名(XML Digital Signature syntax [XML-Signature])對(duì)SOAP進(jìn)行擴(kuò)展,在SOAP的頭元素中定義簽名屬性(<SOAP-SEC:Signature>)來(lái)實(shí)現(xiàn)。
2)安全性令牌(Security Token) -定義安全性令牌表示與安全性相關(guān)的信息(例如,X.509 證書(shū)、Kerberos 票據(jù)和認(rèn)證者、來(lái)自 SIM 卡的移動(dòng)設(shè)備安全性令牌、用戶(hù)名等等)。
SOAP規(guī)范在SOAP 1.1的頭元素里定義了XML Signature 的使用,數(shù)字簽名經(jīng)過(guò)加密算法計(jì)算后的值附加在數(shù)據(jù)對(duì)象后面,數(shù)據(jù)接受對(duì)象從簽名中可以驗(yàn)證數(shù)據(jù)的來(lái)源和完整性。加密后的傳送信息可避免數(shù)據(jù)接受者受到偽造信息的蒙騙。雖然數(shù)字簽名了提供這些安全服務(wù):信息源的證明--信息的接受者可以確定這條信息的發(fā)出者的身份;信息的完整性---信息的接受者可以確定這條信息發(fā)出后沒(méi)有被纂改;不可抵賴(lài)性---事物中的任何一方事后都不能否認(rèn)他的行為。但是:數(shù)字簽名沒(méi)有提供信息認(rèn)證,惡意破壞者可以記錄一個(gè)信息并反復(fù)發(fā)送(重復(fù)攻擊),為了避免受這種類(lèi)型的攻擊,數(shù)字簽名必須結(jié)合一定的方法來(lái)保證信息的唯一性,如:時(shí)間戳(time stamps)或nonces 等。簽名的日期和時(shí)間都附加在消息上,并與消息一起簽名。添加這些信息可以在中加入擴(kuò)展元素實(shí)現(xiàn)。當(dāng)數(shù)字簽名用來(lái)驗(yàn)證發(fā)送方的標(biāo)識(shí)時(shí),發(fā)送者必須提供一個(gè)私有秘鑰等等。SOAP信息也可以使用其他安全技術(shù),更多的SOAP安全規(guī)范正在不斷的完善之中,隨著SOAP安全性的增強(qiáng),SOAP技術(shù)會(huì)得到越來(lái)越廣泛的應(yīng)用。
3) UDDI安全:識(shí)別與授權(quán)
使用UDDI的發(fā)布API的關(guān)鍵原則是只允許被授權(quán)的用戶(hù)進(jìn)行發(fā)布或修改UDDI商業(yè)注冊(cè)中心中的數(shù)據(jù)。每一個(gè)分布式的UDDI商業(yè)注冊(cè)中心維護(hù)-張唯-的授權(quán)用戶(hù)列表,并跟蹤所有用戶(hù)創(chuàng)建的businessEntity或tModel數(shù)據(jù)。只有信息的創(chuàng)建者才允許對(duì)該信息進(jìn)行更改或刪除。
每個(gè)UDDI商業(yè)注冊(cè)中心的實(shí)例被稱(chēng)為一個(gè)操作入口站點(diǎn)(Operator Site),操作入口站點(diǎn)被允許定義他自己的用戶(hù)授權(quán)機(jī)制,不過(guò)所有的簽署協(xié)議的公共的UDDI注冊(cè)中心操作入口站點(diǎn)都需要滿足規(guī)定協(xié)議中定義的最小安全規(guī)范以提供類(lèi)似的安全機(jī)制。