SOA安全噩夢(mèng)何時(shí)休?
集成能夠幫助簡(jiǎn)化商業(yè)流程、提高產(chǎn)品上市的時(shí)間、使企業(yè)對(duì)業(yè)務(wù)、共享的數(shù)據(jù)和服務(wù)中的變化更快地做出反應(yīng)。例如,正確建立的SOA架構(gòu)能夠讓一個(gè)電子商務(wù)網(wǎng)站與自己的供應(yīng)商、分銷(xiāo)商、信用卡公司和消費(fèi)者無(wú)縫地集成在一起。在一個(gè)客戶(hù)下訂單之后,系統(tǒng)將自動(dòng)編排大量的信息,不須要在每一次登錄時(shí)都詢(xún)問(wèn)用戶(hù)或者系統(tǒng)。
SOA還允許企業(yè)在不放棄和不更換老式系統(tǒng)的情況下通過(guò)抽象化某些商業(yè)流程、服務(wù)或者數(shù)據(jù)來(lái)重新煥發(fā)這些老系統(tǒng)的青春。企業(yè)能夠利用它們對(duì)現(xiàn)有的老式系統(tǒng)的投資,同時(shí)建立無(wú)縫地與老系統(tǒng)集成在一起的新系統(tǒng)。
對(duì)于最終用戶(hù)來(lái)說(shuō),這是涅槃。對(duì)于安全部門(mén)的人來(lái)說(shuō),這是他們最糟糕的噩夢(mèng)。
集成的負(fù)面影響
上面提到的SOA的好處伴隨著在安全、隱私和遵守法規(guī)方面的很大風(fēng)險(xiǎn)。對(duì)于那些輕松地把防火墻后面和防火墻外面的其它服務(wù)集成在一起的服務(wù)來(lái)說(shuō),它們必須是可發(fā)現(xiàn)的和容易轉(zhuǎn)變的。許多SOA實(shí)施使用Web服務(wù)。Web服務(wù)使用WSDL(Web服務(wù)說(shuō)明語(yǔ)言)說(shuō)明如何啟用這個(gè)服務(wù)。UDDI(統(tǒng)一描述、發(fā)現(xiàn)和集成)是一種標(biāo)準(zhǔn),通常與Web服務(wù)一起使用,允許發(fā)現(xiàn)和提取服務(wù)。SOA中常用的另外兩個(gè)標(biāo)準(zhǔn)是XML(可擴(kuò)展標(biāo)記語(yǔ)言)和SOAP(簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)。XML是一種自我說(shuō)明格式,包含明文形式的信息,而SOAP是交換基于XML的信息的協(xié)議并且以明文提供重要的信息。雖然這些標(biāo)準(zhǔn)讓企業(yè)更容易地集成服務(wù),但是,如果沒(méi)有適當(dāng)?shù)陌踩胧?,它也?huì)把這個(gè)王國(guó)的鑰匙交給黑客。
許多老式的系統(tǒng)的構(gòu)造從來(lái)都不是要暴露給外部的,特別是不能暴露給防火墻外部的系統(tǒng)?,F(xiàn)在,采用SOA之后,由于SOA的可發(fā)現(xiàn)的和自我說(shuō)明的性質(zhì),黑客能夠訪問(wèn)他們以前無(wú)法接觸的系統(tǒng)和數(shù)據(jù)。
企業(yè)中的挑戰(zhàn)
業(yè)內(nèi)人士向許多架構(gòu)師、廠商、培訓(xùn)師和安全專(zhuān)家提出了一個(gè)簡(jiǎn)單的問(wèn)題:你認(rèn)為在實(shí)施SOA的時(shí)候架構(gòu)師需要解決的最大的安全風(fēng)險(xiǎn)是什么?這個(gè)問(wèn)題的答案有如下幾類(lèi):
機(jī)構(gòu)中缺乏對(duì)這種風(fēng)險(xiǎn)的嚴(yán)重的認(rèn)識(shí)和知識(shí)。
在服務(wù)、系統(tǒng)和企業(yè)之間傳播證書(shū)。
監(jiān)視、審計(jì)和強(qiáng)制執(zhí)行政策的能力。
缺乏認(rèn)識(shí)和知識(shí)
重要的是企業(yè)架構(gòu)師要得到適當(dāng)?shù)呐嘤?xùn),這樣他們就能夠很好地理解SOA以識(shí)別這種風(fēng)險(xiǎn)。許多SOA計(jì)劃都是企業(yè)架構(gòu)師小組從技術(shù)的觀點(diǎn)推動(dòng)的。如果架構(gòu)師不熟悉風(fēng)險(xiǎn)和其它問(wèn)題,他們不僅不知道需要建立什么來(lái)這個(gè)服務(wù)的安全,而且他們還不知道在什么時(shí)候引進(jìn)安全和審計(jì)專(zhuān)家。安全需要提前建立,不應(yīng)該在事后建立。把安全建在每一個(gè)服務(wù)中對(duì)于每一項(xiàng)服務(wù)的性能和可維護(hù)性可能是一個(gè)負(fù)擔(dān)。安全應(yīng)該作為一套核心的服務(wù)實(shí)施,允許集中管理和維護(hù)安全。此外,管理層必須理解這個(gè)風(fēng)險(xiǎn)并且提供適當(dāng)?shù)闹С趾唾Y金以便有效地保證企業(yè)的安全。
傳播證書(shū)
許多服務(wù)是“無(wú)頭的”,也就是說(shuō)這些服務(wù)沒(méi)有相關(guān)的用戶(hù)接口。這些服務(wù)是通過(guò)啟動(dòng)其它服務(wù)并且由其它服務(wù)啟動(dòng)的,而且必須要把證書(shū)按照順序從頭到尾不間斷傳遍整個(gè)系統(tǒng)。更有挑戰(zhàn)性的是一個(gè)信息可能包含為多個(gè)服務(wù)用戶(hù)提供的XML數(shù)據(jù)。
以一個(gè)電子商務(wù)網(wǎng)站為例,一個(gè)訂單能夠引發(fā)一個(gè)包含提供給一個(gè)供應(yīng)商、分銷(xiāo)商和信用卡公司的XNL數(shù)據(jù),每一方都有不同的安全要求。只有信用卡公司有權(quán)訪問(wèn)這個(gè)信用卡信息(信用卡信息應(yīng)該按照PCI的要求加密)。供應(yīng)商需要知道什么產(chǎn)品和在目錄的什么地方。分銷(xiāo)商需要知道有關(guān)產(chǎn)品和發(fā)貨地址的信息。因此,你從這個(gè)例子可以看出,過(guò)去簡(jiǎn)單地使用SSL的日子是不夠的。在這個(gè)例子中,同樣的信息要同時(shí)發(fā)給三個(gè)不同的公司并且不需要任何一家公司登錄。許多公司采用WS-*標(biāo)準(zhǔn)(如Ws-Security、WS-Trust、WS-Federation、Ws-Policy等)來(lái)解決這些風(fēng)險(xiǎn)。
最佳做法包括XML加密,使用公共密鑰和/或者令牌,政策驅(qū)動(dòng)的安全方法,而不是采用硬編碼。但是,在建立這些最佳做法的時(shí)候,事情會(huì)變得更加復(fù)雜。XML加密可以造成性能下降,從而產(chǎn)生XML設(shè)備/加速器的需求。政策驅(qū)動(dòng)的安全需要用于更新、維護(hù)和審計(jì)安全政策的工具。這將把我們帶到下一類(lèi)問(wèn)題...
審計(jì)、監(jiān)視和強(qiáng)制執(zhí)行政策
許多回答這個(gè)問(wèn)題的人強(qiáng)調(diào)了對(duì)于所有的服務(wù)的端對(duì)端的監(jiān)視和審計(jì)重要性。說(shuō)把適當(dāng)?shù)陌踩胧┙ㄔ谶@個(gè)架構(gòu)中是一回事。證明這個(gè)事情是另一回事。
把安全建成一種服務(wù)的架構(gòu)師需要從審計(jì)和管理規(guī)定的角度考慮這種需求。我們有SOX、HIPAA、PCI和許多其它的法規(guī)。有時(shí)候,這些法規(guī)是相互沖突的。例如,SOX要求我們存儲(chǔ)有所有關(guān)金融交易的一切記錄,而PCI法規(guī)要求我們不能用明文存儲(chǔ)信用卡號(hào)碼。而且我們同時(shí)還必須把信用卡號(hào)碼信息傳送給金融機(jī)構(gòu)。要實(shí)現(xiàn)這個(gè)目的,企業(yè)的所有種類(lèi)的加密和其它加密措施都要進(jìn)行審計(jì)。要通過(guò)這些審計(jì),我們必須記錄每一個(gè)服務(wù)電話(huà)的正確的信息級(jí)別,向各種審計(jì)人員和管理部門(mén)提供一種方法,證明我們是遵守它們的規(guī)定的。一次糟糕的交易就會(huì)讓審計(jì)失敗。
一個(gè)大的挑戰(zhàn)是外部服務(wù)用戶(hù)以意想不到方式適應(yīng)了某些服務(wù)。必須要有預(yù)見(jiàn)性地監(jiān)視服務(wù)的消費(fèi)以便識(shí)別出出人意料的不符合安全政策的用戶(hù),在災(zāi)難性結(jié)果出現(xiàn)之前迅速達(dá)成一個(gè)解決方案。最后,我們必須保證正確的數(shù)據(jù)在正確的時(shí)間交給正確的人。
我們能做什么?
有兩件事情能夠緩解這種風(fēng)險(xiǎn)。第一是提高認(rèn)識(shí)。投資進(jìn)行培訓(xùn)和培訓(xùn)每一個(gè)人,不僅僅使培訓(xùn)開(kāi)發(fā)人員。管理層需要高水平的培訓(xùn)課程,而架構(gòu)師、安全專(zhuān)家、審計(jì)師、開(kāi)發(fā)人員、測(cè)試人員、商業(yè)分析師和其他人需要針對(duì)他們需求的培訓(xùn)。
第二,安全是每一個(gè)人的責(zé)任,不僅僅是企業(yè)架構(gòu)師和安全架構(gòu)師的責(zé)任。機(jī)構(gòu)要全力保證企業(yè)的安全。業(yè)內(nèi)人士建議企業(yè)雇用有經(jīng)驗(yàn)的SOA安全人員或者雇用一個(gè)顧問(wèn)把這個(gè)知識(shí)傳授給機(jī)構(gòu)內(nèi)部的安全部門(mén)。