XML Web Service 安全性
來源: 天極網
XML Web Service 安全嗎?
鑒於安全性涉及諸多方面(例如身分識別驗證和授權、資料隱私和完整性等),以及 SOAP 規範中根本沒有提及安全性這一事實,我們不難理解人們為什麼認為答案是否定的。但是,請不要低估了 Microsoft? XML Web Service。如今,您可以採取許多措施來建立安全的 XML Web Service。
要解決 XML Web Service 的安全性問題,我們需要考慮以下問題:
要達到什麼樣的目的?- 僅允許授權使用者訪問 XML Web Service;禁止他人未經授權擅自查看訊息等。
如何達到預期效果?- 網路、傳輸層、OS、服務或應用。
解決方案中需要什麼層級的互通性?- 局部或全域。
那麼,我們如何確保當今 XML Web Service 的安全呢?答案就是:先回答上述問題,然後應用保護任何其他 Web 應用程式時所使用的相同技術,即:
保護串連安全
對互動操作進行身分識別驗證和授權
正如您下面將要瞭解到的,這些技術提供了多種選擇,您可以將這些選擇結合起來以獲得額外的效果。例如,可以將防火牆與 XML Web Service 一起使用,從而根據用戶端的身份以及為他們所建立的相應規則來限制對某些功能(方法)的訪問。
讓我們先來回顧一下保護現有基礎結構的各種選擇,瞭解它們的功能。
保護基礎結構的安全
一個安全的 XML Web Service 的核心是安全基礎結構。Microsoft 提供了廣泛的技術,如果把這些技術與總體安全保護計劃結合起來,企業就可以有效地保護其 IT 結構的安全。正確實施的規划過程包括:
詳細瞭解潛在的環境危險(例如病毒、駭客和自然災害)。
對與危險有關的安全性漏洞的後果進行預先分析並制定對策。
在這種理解和分析的基礎上,建立一個精心規劃的實現策略,將安全保護措施應用到商業網路的各個方面。
保護串連安全
保護 XML Web Service 安全的最簡單的一種方法就是確保 XML Web Service 用戶端與伺服器之間的串連安全。根據網路的範圍和互動操作的活動設定檔,我們可以通過多種技術來達到這一目的。最流行也最廣泛使用的三種技術為:基於防火牆的規則、安全通訊端層 (SSL) 和Virtual Private Cloud (VPN)。
如果您確切知道哪些電腦需要訪問您的 XML Web Service,則可以使用防火牆規則將訪問限制在已知 IP 位址的電腦範圍內。如果需要限制對專用網路(例如公司的 LAN/WAN)中的電腦的訪問,並且不用擔心將訊息內容保留為秘密(加密),那麼這種技術非常有用。防火牆(例如 Microsoft Internet Security and Acceleration [ISA] Server)可以提供先進的基於策略的規則,這些規則可以根據用戶端的原始位置或標識,對不同的用戶端提供不同的限制。當不同的用戶端訪問相同 XML Web Service 上的不同功能(方法)時,這種技術很有用。
安全通訊端層可用於在非託管網路(例如 Internet)上建立安全連線。SSL 可以對用戶端和伺服器之間發送的訊息進行加密和解密。通過加密資料,您可以防止訊息在傳送過程中被讀取。SSL 先對用戶端的訊息進行加密,然後將其傳送到伺服器。伺服器接收到訊息後,SSL 將對其進行解密並驗證訊息是否來自正確的寄件者(此過程稱為身分識別驗證)。伺服器或者用戶端和伺服器可能具有認證,這些認證用作身分識別驗證過程的一部分在串連加密的頂層提供身分識別驗證功能。雖然 SSL 是建立安全通訊的一種非常有效方法,但應當考慮其效能成本。Microsoft XML Web Service 既支援用戶端中的整合 SSL,也支援伺服器中的整合 SSL。
Virtual Private Cloud是專用網路的擴充,它可以串連共用網路或公用網路(如 Internet)。VPN 使您可以在兩台安全連線的電腦之間發送資料。VPN 與 SSL 相似,但 VPN 是一個長期的點對點連接。這使 VPN 可以高效安全地應用於 XML Web Service,但要求建立長期的串連並保持運行才能達到這種效果。
身分識別驗證和授權
身分識別驗證:身分識別驗證就是驗證標識的過程,即驗證某人(或某物)與其聲稱的人(或物)是否一致。該人或物稱為“當事者”。身分識別驗證要求證據,稱為“憑據”。例如,用戶端應用程式可以將密碼用作憑據。如果用戶端應用程式提供正確的憑據,則認為它與所聲稱的人或物一致。
授權:完成對當事者標識的身分識別驗證後,便可以進行授權了。伺服器通過檢查有關當事者的某些存取控制資訊(例如存取控制清單 [ACL])來確定存取權限。用戶端可能具有不同的存取層級。例如,某些用戶端可以完全訪問 XML Web Service;而其他用戶端則只能訪問某些操作。某些用戶端可以完全訪問所有資料,某些用戶端只能訪問資料的子集,而某些用戶端只能進行唯讀訪問。
在 XML Web Service 中實現身分識別驗證的一個簡單而直接的方法是,利用資訊交換所使用的協議的身分識別驗證功能。對於大多數 XML Web Service 來說,這意味著利用 HTTP 的身分識別驗證功能。將 Microsoft Internet Information Server (IIS) 和 ISA 伺服器與 Windows 2000 伺服器配合使用,能為 HTTP 提供多種身分識別驗證機制的整合支援。
基本驗證 - 使用用戶端的非安全或半安全標識,因為使用者名稱和密碼是以 base64 編碼文本發送的,而該文本易於解碼。如果憑據能與有效使用者帳戶匹配,IIS 將授予用戶端訪問 XML Web Service 的許可權。
SSL 上的基本驗證 - 與基本驗證相同,唯一區別在於通訊通道被加密,從而保護了使用者名稱和密碼。對 Internet 方案而言,這是一個很好的選擇,但使用 SSL 會對效能產生很大影響。
簡要身分識別驗證 - 使用散列以安全方式傳送用戶端憑據。但是,這種方法可能不會受到用於構建 XML Web Service 用戶端的開發人員工具的廣泛支援。如果憑據能與有效使用者帳戶匹配,IIS 將授予用戶端訪問 XML Web Service 的許可權。
整合 Windows 身分識別驗證 - 主要用於 Intranet 方案。使用 NTLM 或 Kerberos。用戶端必須屬於伺服器所在的域,或者屬於伺服器域的託管域。如果憑據能與有效使用者帳戶匹配,IIS 將授予用戶端訪問 XML Web Service 的許可權。
SSL 上的用戶端認證 - 要求每個用戶端擷取一個認證。認證被映射至使用者帳戶,IIS 將使用這些認證來授權對 XML Web Service 的訪問。儘管目前數位憑證尚未廣泛使用,但這仍然不失為 Internet 方案的一種可行選擇。這種方法可能不會受到用於構建 XML Web Service 用戶端的開發人員工具的廣泛支援。只能通過 SSL 串連使用這種方法,因此效能可能是一個需要考慮的問題。
從 XML Web Service 實施者的角度來看,使用上述任何一種身分識別驗證機制都有一個好處,即,無需在 XML Web Service 中進行代碼更改,因為在調用 XML Web Service 之前,IIS/ISA 伺服器將執行所有的身分識別驗證和 ACL 授權檢查。但是,在執行用戶端時,還需要完成其他一些工作。用戶端應用程式需要響應伺服器的身分識別驗證憑據請求。
在 XML Web Service 中進行身分識別驗證的其他方法包括:使用第三方服務(例如 Microsoft? .NET Passport 中的服務),使用 Microsoft ASP.NET 的會話功能,或者建立自訂驗證方法。
下一步:互通性
您可能會發現,如今,用於 Web 應用程式安全保護的標準技術可以單獨使用或組合使用,以建立安全的 XML Web Service。這些技術建立在豐富的經驗基礎之上,並且非常有效。不過,它們並沒有在 XML Web Service 體繫結構中提供整合解決方案。隨著 XML Web Service 方案日益複雜(例如跨託管邊界以及分佈於多個系統或企業中),XML Web Service 實施者需要建立有效但並不提供普遍互通性的自訂解決方案。
為滿足這些需要並增強 XML Web Service 的互通性,Microsoft 及其夥伴正在制定一套安全規範。該規範建立於 SOAP 規範的擴充性機制之上,提供整合至 XML Web Service 結構中的增強型安全保護功能。
這套安全規範的核心是 XML Web Service 安全語言 (WS-Security),它為 SOAP 訊息提供了三種增強功能:憑據傳送、訊息整合和訊息保密。這些功能自身不能提供完整的安全保護解決方案;但 WS-Security 是一個構建塊,它可以與基礎結構和其他 XML Web Service 協議結合使用,以滿足各種應用程式的安全保護要求。Microsoft Global XML Web Service 體繫結構是 WS-Security 和相關規範的主要內容,它為 XML Web Service 基礎結構的發展提供架構。