摘要:Web服務(wù)的分布式與異構(gòu)性,使得對服務(wù)請求者的身份認(rèn)證和授權(quán)復(fù)雜化。針對這些問題提出了一個基于SAML、XACML、RBAC等關(guān)鍵技術(shù)的身份認(rèn)證與訪問控制模型。該模型采用SAML輔件技術(shù)實現(xiàn)Web服務(wù)的單點登錄;用XACML實現(xiàn)RBAC模型,簡化授權(quán)管理,同時達(dá)到對資源的細(xì)粒度訪問控制的目標(biāo);用擴(kuò)展的SAML語法保證XACML信息的安全有效傳輸。
關(guān)鍵詞:Web服務(wù);身份認(rèn)證;基于角色訪問控制;可擴(kuò)展訪問控制標(biāo)記語言;安全斷言標(biāo)記語言
引言
Web服務(wù)是新一代企業(yè)計算的關(guān)鍵技術(shù),實現(xiàn)了不同環(huán)境之間的互操作,目前已經(jīng)在Internet上得到了廣泛的應(yīng)用。但是基于異構(gòu)系統(tǒng)這一特性也帶來了一系列的安全性問題。Web服務(wù)跨域協(xié)作時,需要在最初服務(wù)者背后跨越多個服務(wù)為服務(wù)請求者傳遞認(rèn)證與授權(quán)信息,由于對資源的訪問控制變成了分布式管理方式,相同的安全策略可能在組織內(nèi)部的多個點執(zhí)行,需要一種能夠相互理解的策略描述語言。因為需要保證網(wǎng)絡(luò)資源不被非法訪問和使用,授權(quán)訪問機(jī)制變得復(fù)雜化。安全斷言標(biāo)記語言(seeurity Assertion Markup Language,SAML)提供了一個健壯且可擴(kuò)展的數(shù)據(jù)格式集,可用于在各種環(huán)境下交換數(shù)據(jù)和身份識別信息。可擴(kuò)展訪問控制標(biāo)記語言(eXtensible Access Control Markup Language,XACML)提供了創(chuàng)建策略和規(guī)則來控制資源訪問的機(jī)制,是一種比簡單的拒絕訪問或授權(quán)訪問更細(xì)粒度的訪問控制。基于角色訪問控制(Role Based Access Control,RBAC)引入了角色的概念,解耦了用戶與權(quán)限的關(guān)系,是替代傳統(tǒng)的強(qiáng)制訪問控制和自主訪問控制的一項重要技術(shù)。本文給出了一個基于SAML、XACML、RBAC等關(guān)鍵技術(shù)的身份認(rèn)證與訪問控制模型,可有效地解決上述Web服務(wù)的安全問題。
1 技術(shù)概述
1.1 RBAC模型
基于角色的訪問控制是目前公認(rèn)的解決大型企業(yè)的統(tǒng)一資源訪問控制的有效方法。在RBAC中權(quán)限被賦予角色,而不是用戶,當(dāng)一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權(quán)限。引入角色概念的好處是,把用戶與權(quán)限隔離開來,角色作為用戶與權(quán)限的代理層,解耦了權(quán)限與用戶的關(guān)系;在企業(yè)中角色相對于用戶的變化要小得多,對用戶權(quán)限的授予和收回只是簡單地分配或取消用戶特定的角色,從而減小了授權(quán)管理的復(fù)雜性,降低了管理開銷;同時能靈活地支持企業(yè)的安全策略,并對企業(yè)的變化有很大的伸縮性,當(dāng)企業(yè)的安全策略發(fā)生變化時能很快地對角色模型作出調(diào)整,而不再需要修改應(yīng)用代碼。
1.2 SAML和XACML規(guī)范
現(xiàn)代Web服務(wù),往往需要多個服務(wù)相互協(xié)作來完成用戶的某項請求,但是每個Web服務(wù)都有單獨的認(rèn)證系統(tǒng),用戶需要多次承受認(rèn)證的麻煩,因此人們認(rèn)識到需要有一種在不同的協(xié)作域之間傳遞實體信息,域又不失去對這些信息的所有權(quán)的機(jī)制。SAML滿足了這種要求,它通過一個標(biāo)準(zhǔn)的認(rèn)證過程,使用一組給定的標(biāo)準(zhǔn)對一組指定的用戶進(jìn)行身份驗證,驗證結(jié)果以斷言方式加載在消息中,各個安全域都承認(rèn)認(rèn)證結(jié)果的合法性。SAML建立了一種獨立于協(xié)議和平臺的驗證和授權(quán)交換機(jī)制,其框架是基于XML的,很容易集成到Web服務(wù)中。
SAML為驗證、授權(quán)聲明和使用XML傳輸這些聲明提供了機(jī)制,但還需要詞匯來表示授權(quán)決策所需的規(guī)則。XACML就是專門為表示授權(quán)規(guī)則而開發(fā)的。XACML定義了一種通用的用于保護(hù)資源的策略語言和一種訪問決策語言,使策略管理和訪問決策標(biāo)準(zhǔn)化。策略語言允許管理員定義訪問控制需求,以便獲取所需的應(yīng)用資源;訪問決策語言,則用于描述對資源運行時的請求。策略語言和模式支持包括數(shù)據(jù)類型、函數(shù)和允許定義復(fù)雜(或簡單)規(guī)則組合邏輯,當(dāng)確定了保護(hù)資源的策略之后,函數(shù)會將請求中的屬性與包含在策略規(guī)則中的屬性進(jìn)行比較,最終生成一個許可或拒絕決策。
SAML提供了傳輸機(jī)制,XACML定義了語言規(guī)范,因此,結(jié)合使用擴(kuò)展的SAML語法與XACML可以實現(xiàn)訪問控制。我們用例子(圖1)來描述結(jié)合使用SAML XACML的訪問控制流程。某主體想對某個資源如文件系統(tǒng)或者Web服務(wù)器采取某種操作,首先向策略執(zhí)行點(PEP)提交授權(quán)請求。PEP根據(jù)主體,請求的資源,操作類型和環(huán)境用XACML語言生成請求并把請求發(fā)送到策略決策點(PDP)。PDP到策略訪問點(PAP)檢查請求、檢索適用于該請求的策略,并根據(jù)需要到策略信息點(Pie)檢索與主體、資源或者環(huán)境有關(guān)的屬性值,然后根據(jù)評估策略的XACML規(guī)則,確定要不要授予對應(yīng)的操作權(quán)并把響應(yīng)返回給PEP。PEP根據(jù)PDP發(fā)送的授權(quán)決策允許或拒絕主體訪問資源。圖中對屬性的請求和響應(yīng)使用SAML的標(biāo)準(zhǔn)語法,策略集和授權(quán)結(jié)果的請求和響應(yīng)由于需要使用XACML語言,可以使用擴(kuò)展的SAML語法,所有消息都通過SAML的傳輸機(jī)制得到傳輸和保護(hù)。
2 訪問控制模型描述
結(jié)合SAML,XACML兩者的使用,我們可以較好地實現(xiàn)RBAC模型。圖2描述了在Web服務(wù)中實現(xiàn)單點登錄和細(xì)粒度的控制訪問過程。
(1)客戶端選擇服務(wù)用SAML語言發(fā)送訪問請求給PEP。如果客戶端已經(jīng)通過認(rèn)證和角色分配,傳送的消息將攜帶SAML輔件(artifact)。
(2)PEP接收請求并解析收到的SAML消息,檢查是否包含SAML輔件。如果沒有包含則重定向到認(rèn)證中心,角色分配服務(wù),要求用戶首先進(jìn)行登錄認(rèn)證;否則PEP根據(jù)輔件向認(rèn)證中心請求認(rèn)證斷言和角色斷言。認(rèn)證中心返回SAML響應(yīng)結(jié)果,PEP驗證斷言的合法性,驗證通過則進(jìn)入第四步,否則向客戶端返回錯誤提示。
(3)認(rèn)證中心,角色分配服務(wù)使用用戶提交的用戶名和口令進(jìn)行身份認(rèn)證。如果驗證成功則給用戶分配相應(yīng)的角色,隨后生成認(rèn)證斷言和角色斷言,同時生成斷言的輔件,將此輔件返回給客戶,并將用戶請求重定向到PEP(此重定向URL中包含了輔件)。
(4)PEP將客戶端發(fā)送的請求信息,和從認(rèn)證中心獲得的角色斷言生成擴(kuò)展的SAML的授權(quán)決策請求,發(fā)送給PDP。
(5),(6)PDP收到請求后,向PIP查詢相關(guān)的屬性值,包括主體,訪問的資源,動作,環(huán)境等。
(7),(8)PDP將用戶請求,角色,和在上步中獲得的屬性值生成擴(kuò)展的SAML策略請求,PAP根據(jù)請求中包含的目標(biāo)的限制條件從策略服務(wù)器中檢索,把匹配目標(biāo)的訪問控制策略返回給PDP。訪問控制策略是基于XACML的RBAC策略,包括角色策略集,訪問權(quán)限策略集。
(9)PDP對返回的訪問控制策略進(jìn)行評估,判定當(dāng)前角色是否具有相應(yīng)的訪問權(quán)限,然后作出授權(quán)決策發(fā)送給PEP。
(10)PEP根據(jù)授權(quán)決策決定是否允許用戶訪問對應(yīng)的Web服務(wù)。
假如用戶還需要訪問另一個Web服務(wù):Web Service 2,此時不需再次登錄,訪問過程從步驟(2)開始。
本模型將角色分配實體和認(rèn)證權(quán)威機(jī)構(gòu)作為一個實體處理,減少了模型的復(fù)雜性。在客戶端發(fā)起訪問請求時SAML輔件作為URL查詢字符串的一部分帶給目標(biāo)站點,目標(biāo)站點使用這個輔件從認(rèn)證中心取得斷言信息。如果不采用輔件,信息量很大的斷言需要在客戶端與服務(wù)器間傳輸,從而在效率上將受到很大影響。另外,斷言是有關(guān)用戶身份的敏感信息,如果直接在網(wǎng)上傳輸,容易受到網(wǎng)絡(luò)攻擊。所以,采用輔件技術(shù)既減少了傳輸量又提高了系統(tǒng)安全性。
3 結(jié)束語
針對當(dāng)前Web服務(wù)領(lǐng)域?qū)Π踩男枨螅疚奶岢隽艘粋€基于SAML、XACML、RBAC等關(guān)鍵技術(shù)的身份認(rèn)證與訪問控制模型,并對模型的工作流程做了詳細(xì)的介紹。該模型結(jié)合三種技術(shù)的優(yōu)勢有效解決了Web服務(wù)的跨域合作所帶來的安全問題。單點登錄技術(shù)使用戶在使用多個Web服務(wù)時無需進(jìn)行多次登錄,用戶賬戶管理可以更加方便、安全?;诮巧脑L問控制實現(xiàn)了用戶與訪問權(quán)限的邏輯分離,極大地方便了權(quán)限管理,實現(xiàn)了對資源的細(xì)粒度訪問控制。基于策略的授權(quán)訪問使系統(tǒng)的安全配置更加靈活高效。