過去三年,信息安全領域湧現大量新標準,其中最具影響力的當屬 Web Services Security (WSS)、Security Assertion Markup Language (SAML) 與 Extensible Access Control Markup Language (XACML)。這三大標準均基於 XML,旨在解決大規模分布式環境(如互聯網)下的身份聯盟、訪問控制與消息安全難題。本文將深度剖析它們的設計動機、核心架構及協同關係。
傳統系統假設所有訪問控制信息由單一系統管理。但在跨組織分布式系統中,用戶可能由不同機構用不同方式認證,屬性分散在多個認證域。集中治理不現實,SAML 提供標準化格式交換認證斷言、屬性斷言及授權決定斷言,實現身份聯盟。
傳統基於權限矩陣或角色的訪問控制難以表達「工作日 9-18 點僅允許經理審批超 1 萬元訂單」等復雜策略,導致策略硬編碼在應用中,維護極難。XACML 以聲明式策略語言描述「主體、資源、動作、環境」四元組條件,支持義務義務、建議等高級構造。
XACML 2.0 (2005.02) 專門定義了與 SAML 結合的 Profile,可將 SAML 斷言作為決策輸入,實現「身份聯盟 + 精細授權」無縫集成,也可獨立部署。
WSS 專注於保護 SOAP 消息完整性、機密性與發送者身份。不涉及訪問控制決策,但提供決策所需的安全上下文(如二憑證、SAML 斷言、用戶名令牌)。
<wsse:Security> Header:承載所有安全信息+------------------+ +------------------+ +------------------+
| SAML | | XACML | | WSS |
| Identity & |---->| Policy Decision |<----| Message Security|
| Attribute Assert| | Point (PDP) | | (Transport) |
+------------------+ +------------------+ +------------------+
^ ^ ^
| | |
| Assertion as | Policy as | Token/Signature
| Decision Input | Enforcement Rule | in SOAP Header
| | |
+------------------+ +------------------+ +------------------+
| Identity | | Policy | | SOAP |
| Provider (IdP) | | Administration | | Intermediaries |
| / Attribute | | Point (PAP) | | / Endpoints |
| Authority | | | | |
+------------------+ +------------------+ +------------------+
WSS、SAML、XACML 分別解決傳輸安全、身份聯盟、策略外部化三大核心問題,三者通過 XML 與 SOAP 標準實現鬆耦合集成。企業構建 SOA 安全體系時,建議:
後續文章將深入各標準的綁定細節、部署拓撲與性能調優實戰。