官术网_书友最值得收藏!

2.3 跨領域信息交換安全技術

安全保障體系是跨領域信息交換可靠、安全運行的基礎。跨領域信息交換需要具備良好的安全策略、安全手段、安全環境、安全管理措施,實現合法的用戶采用正確的方式,在正確的時間對相應的數據進行正確的操作,確保數據的機密性、完整性、可用性和合法使用。

傳統安全體系結構往往采用防火墻和入侵檢測系統實現基于邊界的安全控制,以阻止安全威脅。在跨領域信息交換中,由于數據傳輸要通過其安全邊界,因此這樣的安全模型不能夠滿足要求。跨領域信息交換在安全性上必須滿足如下要求:

(1)認證:所有的服務提供者都要求服務使用者在接受服務請求時進行身份驗證。作為服務使用者,在收到響應時也需要驗證服務提供者。

(2)授權:除了服務使用者的身份驗證,訪問服務還要求服務使用者具有一定的授權。這種授權通常基于某種訪問控制策略,如基于屬性的訪問控制。

(3)保密:保護底層的通信傳輸或傳送中的消息,使未經授權方無法獲取信息。

(4)數據完整性:提供保護,避免消息在傳輸過程中被篡改或破壞。

(5)不可抵賴性:確保消息發送者不能否認已發送的消息,消息接收方不能否認已收到的消息。

(6)可管理性:安全架構應提供上述安全功能的管理能力,包括憑證管理、用戶管理、訪問控制策略管理等。

(7)可審計性:包括安全日志和審計,這也是支持不可抵賴性的要求。

此外,對于跨領域信息交換,還需要考慮以下安全需求問題。

(1)跨信任域的安全。安全體系結構必須提供一個信任模型,可以跨不同信任域進行Web服務調用。

(2)安全策略的定制。在傳統安全域,資源和服務往往有一套統一的安全保護機制,在跨領域信息交換中服務提供者的要求可能會有所不同。例如,一個服務可能需要X.509證書進行認證,而另一個服務的身份驗證可能只需要用戶名和密碼認證。因此,安全策略必須能夠根據需要進行靈活調整。

(3)與現有信息安全解決方案的整合。跨領域信息交換的安全架構并不取代現有的安全基礎設施;相反,應充分利用現有的安全基礎設施,應與現有的安全工具和應用程序無縫集成。

(4)確保基礎設施服務的安全,如服務發現、消息傳遞和服務管理等。

(5)不可見性。安全體系結構應不影響其他服務的實現。具體地說,新安全體系結構的部署不會給服務提供者帶來以下問題:被限制使用任何一個特定的編程語言,向一個特定的硬件平臺進行服務遷移,針對任何特定供應商的API接口修改現有的服務實現,重新編譯或重建現有的代碼集。

為了滿足跨領域信息交換安全的需求,可以綜合運用基于XML的安全標準和規范,包括基于屬性的訪問控制(ABAC)、XML加密標準(XML Encrypt)、XML數字簽名標準(XML Digest)、XML公鑰管理規范(XKMS)、安全斷言標記語言(SAML)、擴展訪問控制標記語言(XACML)、Web服務安全規范(WS-Security)等。由于篇幅有限,本節重點介紹本書所涉及的幾種安全協議的基本原理。

2.3.1 基于屬性的訪問控制(ABAC)

傳統的基于角色的訪問控制(Role-Based Access Control,RBAC)模型,通過對用戶分配角色,再對角色賦予相應的權限來達到訪問控制的目的。但是,在開放的SOA環境中,基于角色的訪問控制存在一定的缺陷。

(1)角色是靜態的,隨著用戶和訪問資源的增多,需要定義更多角色。大量的角色將會增加維護的難度和成本。

(2)在多個角色訪問同一個資源的情況下,不能提供細粒度的訪問控制。

(3)在跨領域的訪問控制中,一個安全域角色和權限在另一個安全域內有可能會失效。

基于屬性的訪問控制(Attribute-Based Access Control,ABAC)模型,以訪問控制實體的屬性作為最小粒度,特別適合開放式環境,可為其提供細粒度的訪問控制。屬性作為訪問控制中的基本單位,主要包括主體屬性、資源屬性、環境屬性。

主體是指請求對某種資源執行某些動作的請求者。主體屬性主要定義主體的身份和特性,包括身份、角色、職位、年齡、IP地址等。

資源是指系統提供給請求者使用的數據、服務和系統組件。資源屬性包括資源的身份、URL地址、大小、類型等。

環境是指訪問發生時的、可操作的、技術層面的環境或上下文。環境屬性包括當前時間、日期、網絡的安全級別等。

1.ABAC的定義

基于屬性的訪問控制模型的定義如下[9]

(1)設S表示主體,R表示資源,E表示環境。

(2)SAk(k∈[1,K])、RAm(m∈[1,M])、EAn(n∈[1,N])為主體S、資源R和環境E的預定義屬性。

(3)ATTR(s)、ATTR(r)、ATTR(e)分別表示主體S、資源R和環境E的屬性賦值關系,則有

img

例如,對主體的單個屬性進行賦值Age(s)=30,Role(s)=Employee等。

(4)用一個基于s、r、e的布爾函數來判斷主體S能否在環境E的條件下訪問資源R。

Rule:img函數根據s、r、e的屬性值進行判斷,如果返回true則允許訪問,返回false則拒絕訪問。

(5)一種策略可以由多條規則組成,每條規則都包含了主體S、資源R、環境E的屬性值。

一條最簡單且一般化的策略規則包括彼此獨立的主體、資源、環境屬性。訪問控制決策是通過匹配主體、資源、環境屬性得出的。例如,規則“具有角色‘Manager’的用戶可以訪問‘Approve-Purchase’服務”表示為

img

2.ABAC的基本結構

ABAC的基本結構如圖2-32所示[10],其功能描述如下。

img

圖2-32 ABAC的基本結構

(1)策略實施點(Policy Enforcement Point,PEP)。

PEP是一個訪問控制的實體,可攔截SOAP服務請求,并向策略決策點(PDP)發送授權請求;然后根據授權響應結果,執行相應的動作,如允許用戶請求和拒絕用戶請求等。

(2)策略決策點(Policy Decision Point,PDP)。

PDP用于收集主體、資源和環境的屬性,并利用策略規則集來判斷用戶的訪問請求是否滿足要求,從而決定是許可還是拒絕,并將決策結果返回PEP。

(3)策略管理點(Policy Authority Point,PAP)。

PAP用于編寫策略和策略集,策略中主要定義了獲得訪問權必須滿足的屬性要求。

(4)屬性授權機構(Attribute Authority,AA)。

AA主要負責給PDP提供決策所需的各項屬性,主要包括主體屬性、資源屬性和環境屬性。

2.3.2 安全斷言標記語言(SAML)

跨領域信息交換需要滿足現有的各業務領域相互交織的、復雜的信任關系。如果按照各自為政的信任服務體系的構建方式,必然造成各業務領域之間的信任管理錯綜復雜、交叉認證鏈過長,從而導致整個信任服務體系難以有效地管理和運行。因此,可以采用一種新的機制,通過對自然人、機構和設備分別建立基準的職能信任服務體系,并在此基礎上進一步構建相應的授權服務體系來實現各業務領域的管理權限。安全斷言標記語言(Security Assertion Markup Language,SAML)提供了一種信任與授權的標準架構。它與具體的實現無關,允許對實體、特權、權限進行聲明,通過XML文檔來定義服務對象的鑒別、授權、權限和會話信息。因此,基于SAML構建跨領域的信任與授權系統,能夠以更加便捷和靈活的方式構建跨領域的安全體系。

SAML是一個基于XML的標準,是用于在不同的安全域(Security Domain)之間交換用戶身份、身份驗證和屬性信息的OASIS 開放標準,是OASIS組織安全服務技術委員會(Security Services Technical Committee)的產品。

SAML是一個XML框架,也就是一組協議,可以用來傳輸安全聲明。例如,兩臺遠程機器之間要通信,為了保證安全,可以采用加密等措施,也可以采用SAML來傳輸,傳輸的數據以XML形式,符合SAML規范,這樣就可以不要求兩臺機器采用什么樣的系統,只要求能理解SAML規范即可。這顯然比傳統的加密方式更好。

1.SAML聲明

SAML將傳輸的安全信息定義為相應的聲明。聲明用XML來描述,以Request/Response的形式在多個信任合作者之間傳送。聲明提供主體所執行的驗證、主體屬性、是否允許主體訪問特定資源的授權決策等信息。通過SAML聲明的形式將信任與授權信息綁定到SOAP等開放性協議中,并通過HTTP、SMTP等通用的應用層協議在網上傳遞,以達到信任與授權信息共享的目的。SAML定義了驗證、屬性和授權3種聲明。

(1)驗證聲明(Authentication)。

驗證聲明定義了用戶的認證信息,如認證機構、方式和有效期等;處理主體在特定時刻、特定機制下的身份驗證。

(2)屬性聲明(Attribute)。

屬性聲明提供將主體與特定屬性聯系起來的一種機制,如主體的系統用戶標志、所屬用戶組、角色、可訪問的資源、權限等。

(3)授權聲明(Authorization Decision)。

授權聲明管理是否允許用戶訪問特定的資源及權限。

每個聲明都包含Version、AssertionID、Issuer、IssueInstant(聲明創建時間)等必要信息,而<Conditions>元素則定義了聲明有效性驗證所依賴的條件。<Statement> 包含以下3個子元素:<SubjectStatement>用來描述認證對象的相關信息,<AuthenticationStatement> 記錄了認證方式、認證時間、IP 地址等內容,<AuthorizationDecisionStatement>記錄了授權的依據、權限等信息。聲明只能由認證授權方產生,用戶只是聲明的使用者,不能創建聲明。

2.SAML工作原理

SAML可以實現在不同的安全系統中跨信任域交換認證和授權信息。SAML本身沒有定義新的認證與授權機制,但定義了用于不同授權系統間傳輸安全信息的交換機制。所以,SAML不僅是一種用來描述信任與授權信息的標準,更是一種解決分布式應用系統中信任與授權共享問題的框架體系。

SAML體系結構如圖2-33所示[11]。資源的請求方與提供方以SAML聲明傳遞安全信息,SAML聲明由認證與授權權威機構頒發,確保聲明的有效性。SAML工作流程具體給出了SAML聲明的傳遞過程,其步驟如下。

img

圖2-33 SAML體系結構

(1)客戶端向身份鑒別提交憑證信息。

(2)身份鑒別調用認證管理服務系統對客戶端憑證信息進行驗證,并產生認證聲明;同時,通過認證的客戶端將得到一個含有SAML聲明的令牌。

(3)客戶端使用這個含有SAML聲明的令牌請求訪問被保護的資源。

(4)客戶端對被保護資源的SAML訪問請求被策略實施點截獲,提交給策略決策點。

(5)策略決策點根據決策參考信息產生SAML授權聲明,批準或拒絕客戶端的訪問請求。

2.3.3 擴展訪問控制標記語言(XACML)

擴展訪問控制標記語言(eXtensible Access Control Markup Language,XACML)是OASIS組織發布的一種基于XML、用于表示訪問控制規則和策略的安全標準。XACML最大的優點就在于它提供了統一的策略描述語言,能適應多種應用環境,支持廣泛的數據類型和規則聯合算法,策略表達能力很強,可用來描述各種復雜和細粒度的訪問控制安全需求。

XACML定義了授權決策所需規則的策略語言,提供了根據策略和規則來控制Web服務訪問的更細粒度的安全機制,能夠在Web Services這種分布式環境中根據主體、資源和環境屬性等動態評估訪問請求,并進行授權決策[12]

XACML在策略表達上結構清晰,將安全規則表示為主體、客體、行為和約束4個主要屬性的屬性值集合。XACML是基于XML的訪問控制策略標記語言,使用標簽來標識安全策略的各個元素。XACML的標簽規定了策略名、規則名、規則屬性等,種類豐富。XACML通過<Policy>標簽及其屬性值聲明策略ID、策略適用群組和規則聯合算法,以對策略做出標識和說明。PolicyID和PolicyTarget分別用于聲明策略ID和策略適用群組;RuleCombiningAlgId聲明了規則聯合算法,規則聯合算法的作用是解決安全策略中不同安全規則可能造成的沖突,以保證每個訪問請求只得到一個最終授權結果。策略是由規則組成的,XACML用標簽<RuleID></Rule>來標識規則。在規則標簽頭中,RuleID是規則ID,Effect標識該規則是一個許可規則還是一個拒絕規則。在規則體內,用<Target></Target>標識規則的各屬性,包括主體(Subject)、客體(Resourc)和行為(Action),對每個屬性,都在相應標簽中先標識屬性名稱,如“FileType”,再標識該屬性的屬性值。約束屬性用<Condition>標簽標識,位于<Target>之后。在安全規則的4個屬性中,如果對某個屬性沒有安全約束限制,則可以省略該屬性的標簽。XACML策略表達舉例如圖2-34所示。

img

圖2-34 XACML策略表達舉例

XACML與SAML體系結構緊密相關,都涉及處理身份驗證、授權和訪問控制問題,但解決的問題又不盡相同。SAML負責在不同安全域中交互的實體間安全傳遞身份認證信息和授權決策信息;XACML則給出了一種安全架構,完成授權決策的判定。雖然XACML提供了一個標準化的安全訪問控制決策模型,但沒有定義這些構件之間的通信協議和安全機制來提供消息的機密性和完整性保護;而SAML定義了聲明、協議和傳輸安全機制。所以,XACML和SAML的結合可以提供一個完整的Web服務授權訪問控制方案。

主站蜘蛛池模板: 印江| 杨浦区| 东宁县| 仙桃市| 乌拉特前旗| 上杭县| 黄梅县| 杂多县| 新巴尔虎右旗| 仁布县| 长海县| 衢州市| 社旗县| 桂林市| 玛曲县| 民和| 浦江县| 乐亭县| 吉木乃县| 平安县| 顺义区| 林周县| 永昌县| 雅江县| 九龙城区| 开平市| 鱼台县| 正镶白旗| 玉龙| 龙川县| 鄂尔多斯市| 施秉县| 济宁市| 临汾市| 美姑县| 西盟| 卢湾区| 长沙县| 绥德县| 平遥县| 休宁县|