外部服務安全問題
舉個例子來說,壹個SOA應用程序可能會依靠壹個基於Web的第三方服務來提供重要的功能和服務,這具有非常明顯的安全問題。不過這種問題在企業用戶激活了微軟的自動更新時就已經存在了。
從根本上說,這是壹個信任的問題,例如妳決定是否信任微軟發送給妳的更新程序。SOA可能會大大增加使用外部服務的次數,壹個小時可能進行數百次這樣的交互。
某些惡意的站點假裝提供某種功能或服務,而欺騙某些人決定信任它。惡意軟件通常偽裝成有用代碼,而且有時候也會提供壹些它承諾的功能,但是同時又在悄悄的進行用戶不希望的事情。
這是SOA可能會給企業帶來的三個主要安全影響之壹,反擊惡意軟件需要有個綜合技術和教育的戰略,無論它是與SOA相關的行為,還是企業中某個人從壹個文件***享站點上下載“免費”音樂,這些行為都要受到約束。 在惡意軟件感染企業網絡之前,這個安全技術能夠成功阻擋它們。但是最佳解決方案是教育用戶具有安全風險意識,讓他們知道未知站點的危險性,從而在第壹位置將風險最小化。
XML文件攜帶攻擊代碼
第二個主要缺陷發生在企業對XML文件的使用中,它更具有技術性,而且難於被截獲。從根本上來說,XML可以包含任何類型的數據或可執行程序,其中包含那些故意搞破壞的東西。今天的大多數企業已經在使用XML編碼的文件,因此它們已經被處於無防護的狀態下。
但是,SOA肯定會以數量級來增加傳輸的XML數量,這也就意味著安全缺陷的增加。而SOA架構中大量的這類傳輸也讓IT人員難於截獲偶爾出現的惡意軟件。而且惡意軟件日益復雜的技術已經非常清晰的告訴我們,攻擊者可以讓XML為它們所用。
在解決這種安全風險的時候,教育已經效果不大,因為它更有可能被註入到壹個合法的數據包中來進入企業網絡,甚至可能將自己分為好幾部分,混在不同的合法通信中。用戶可能沒有進行任何錯誤的操作。這類有針對性的攻擊正在變得越來越多。
但是,能夠解決這個問題的產品已經出現,Crossbeam公司和Forum公司已經結成聯盟,組合Crossbeam的X系列安全服務交換機、Forum的Xwall Web服務防火墻和Forum Sentry Web服務網關,推出壹個單項最佳解決方案,來截獲在XML和其他進入企業的數據流中截獲惡意軟件。
身份驗證問題
第三個憂慮是企業身份管理的會話模式可能不滿足SOA的更復雜要求。在壹個簡單的交易中,在會話開始的時候進行用戶身份認證,然後這個認證就會應用在整個會話中。
但是,在SOA模型中,用戶可能最初發動壹個交易後然後從服務器斷開,而交易可能會經過壹組後端服務,因此用戶沒有與最終的交易有直接的聯系。不僅要識別是誰發起了交易,還要識別是誰(或者在自動過程中是什麽東西)批準和處理了這個交易。需要認證所有這些單個的進程在這個交易中使用的信息,而不是在壹個交互的會話中詢問它們的信息。這是壹個到現在都沒完全解決的問題,但是SOA增加了這種安全缺陷的程度。
因為SOA非常強大,而且可以被用來輕松地利用外部程序和其他外部可信任夥伴的程序,這種缺陷可能會變得非常大。企業需要謹慎地制定安全策略,加上對用戶的安全意識培訓,再輔以合適的技術,來將所面臨的危險降到最小。
最好的解決這種問題的辦法是使用Security Assertion MarkupLanguage來創建壹個可以附加到交易中的代表性的身份。
安全性是SOA中的壹個焦點問題,因為SOA強調機器與機器的交互,而大多數IT安全性都是基於人與機器的交互。身份驗證和授權在這個環境中變得更加富於挑戰性。
在未受保護的SOA中,想要阻止Web服務的未授權使用實際上是不可能的;未授權用戶可以非常輕松地訪問Web服務。Web服務不具備跟蹤誰在使用它們或者誰被允許使用它們的固有功能。無法阻止不必要的監聽和消息偵聽。
未受保護的SOA讓黑客有機會監聽SOAP消息並看到私密信息。此外,在未受保護的SOA中,偵聽SOAP消息並重新發送消息或轉換消息內容要相對容易壹些。
由於SOA架構的開放性本質,您無法保護SOA中未知的第三方。第二級和第三級用戶(例如您的合作夥伴的合作夥伴)是可以訪問未受保護的SOA的。因此,未受保護的SOA很容易超負荷運轉。
如果沒有訪問控制,未受保護的用戶提供可信身份驗證的SAML斷言。
Web服務應用程序代理在實際的Web服務中接收和處理SOAP請求,從而對安全性有所幫助。它的SOA很容易被來自黑客的大量SOAP消息所“淹沒”。結果可能導致DoS攻擊損害系統的正常功能。
在分析SOA安全性需求時,可以考慮實現壹個支持SOAP消息監控、聯邦身份驗證、應用程序代理、契約管理、證書、密鑰和加密以及審計記錄的SOA安全性解決方案。這個清單似乎很長,但是事實上,如果缺少其中任何壹項,SOA的所有優點都可能遭到破壞。
SOAP消息監控利用了壹個SOAP攔截器模型,以便在將SOAP消息從調用系統發送給Web服務時對其進行偵聽和監控。SOAP消息監控是SOA安全性的基礎,因為它讓安全性解決方案能夠停止和分析每條消息,以進行用戶身份驗證和授權。
為了保護第三方,安全性解決方案利用聯邦身份驗證過程,從而提供對系統中用戶進行身份驗證的能力。最終將獲得壹個為Web服務可以使所有的用戶都遠離實際的服務。代理不僅可以減輕網絡的負載,還可以為SOA提供壹個額外的安全層。
契約管理是另壹項對安全性有所幫助的SOA管理特性。契約確立了誰有權使用Web服務以及何時可以使用它。契約通過消除非契約方的使用,提高了SOA的安全性。
對於壹個真正安全的SOA來說,證書、密鑰和加密同樣是必不可少的。最健壯的SOA安全性都源於實現了使用來自認證機構的私鑰/公鑰進行身份驗證的加密消息傳遞。XML加密允許Web服務用戶發送保留XML格式的加密SOAP消息。因此,系統實現了安全性,但卻仍然基於標準。數字簽名是加密模型的壹種變體,它使得Web服務的用戶可以創建壹個惟壹確認的數字“簽名”,從而可以驗證用戶身份和確保消息數據的完整性。
最後,為了跟蹤SOA的使用,有必要采用可以保存所有SOAP消息請求和響應的動態審計日誌的SOA安全性解決方案。審計日誌對於在SOA中研究安全性問題和診斷安全性漏洞,以及實現管理規章服從性,都是必需的。