摘要:分析了傳統(tǒng)訪問(wèn)控制中的授權(quán)管理策略:強(qiáng)制訪問(wèn)控制,自主訪問(wèn)控制和基于角色的訪問(wèn)控制。然后提出分布式環(huán)境下訪問(wèn)控制的特點(diǎn),并詳細(xì)介紹了XACML,得出XACML適合于分布式系統(tǒng)的結(jié)論。結(jié)合XACML研究實(shí)現(xiàn)分布式系統(tǒng)的訪問(wèn)控制模型,并通過(guò)Sun提供的XACML2.0工具包實(shí)現(xiàn)訪問(wèn)控制。
關(guān)鍵詞:分布式系統(tǒng);訪問(wèn)控制;XACML
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)36-10562-03
Access Control in Distributed System Based on XACML
HUO Lin
(Capital University of Economics and Business, Beijing 100070, China)
Abstract: Analyzed the policies of authorization in traditional access control: discretionary access control, mandatory access control and role-based access control. Then raised the characteristics of access control in distributed system, and specified XACML, reached the conclusion that XACML is suitable to distributed system. Did researches on the access control models of distributed system and realized access control using XACML2.0 tool kit provided by Sun.
Key words: distributed system; access control; XACML
在分布式系統(tǒng)中,用戶共享資源,交換信息,以達(dá)到更高效或降低成本的目的。為了更好地發(fā)揮分布式的優(yōu)勢(shì),保護(hù)資源和信息的完整性,也即防止未授權(quán)用戶進(jìn)入系統(tǒng)和授權(quán)用戶對(duì)系統(tǒng)資源的非法使用是很重要的。這就涉及到了分布式系統(tǒng)的安全性。分布式系統(tǒng)安全機(jī)制主要分為三部分:安全通道、訪問(wèn)控制和安全管理。其中,訪問(wèn)控制是指分布式系統(tǒng)中的實(shí)體允許誰(shuí)使用,允許如何使用以及誰(shuí)來(lái)定義使用規(guī)則。[1]具體來(lái)講,就是通過(guò)某種途徑顯示準(zhǔn)許或限制主體的訪問(wèn)能力及范圍,從而限制對(duì)目標(biāo)資源的訪問(wèn),防止非法用戶的侵入或合法用戶的不慎操作所造成的破壞。
傳統(tǒng)的方法中,訪問(wèn)控制由一個(gè)可信任的服務(wù)器來(lái)統(tǒng)一管理。但是隨著網(wǎng)絡(luò)規(guī)模日漸擴(kuò)大,分布式系統(tǒng)訪問(wèn)人數(shù)逐漸增加,訪問(wèn)速度會(huì)明顯降低,甚至發(fā)生網(wǎng)絡(luò)堵塞。并且,開(kāi)發(fā)人員必須自己編寫代碼來(lái)控制訪問(wèn)的權(quán)限,在應(yīng)用程序中嵌入授權(quán)的檢驗(yàn),這導(dǎo)致了不能重用、易出錯(cuò),而且增加了復(fù)雜性??蓴U(kuò)展訪問(wèn)控制標(biāo)記語(yǔ)言(eXtensible Access Control Markup Language, XACML)[2]是一種基于XML的適用于描述分布式系統(tǒng)訪問(wèn)控制的語(yǔ)言,它提供了創(chuàng)建策略來(lái)控制信息訪問(wèn)的機(jī)制。利用XACML進(jìn)行分布式系統(tǒng)訪問(wèn)控制的管理,將授權(quán)檢查由程序驅(qū)動(dòng)轉(zhuǎn)為數(shù)據(jù)驅(qū)動(dòng),其語(yǔ)法和語(yǔ)義可以容易地?cái)U(kuò)展到所有主流平臺(tái),并且為大多數(shù)應(yīng)用程序廠商所支持,在靈活性、可擴(kuò)展性和可移植性方面都具有不可忽略的優(yōu)勢(shì)。[11]
1 傳統(tǒng)的訪問(wèn)控制技術(shù)
典型的訪問(wèn)控制和授權(quán)場(chǎng)景包括三個(gè)主要實(shí)體:主體、資源和行為以及它們的屬性。主體通過(guò)請(qǐng)求得到對(duì)資源執(zhí)行相應(yīng)行為的權(quán)限。例如,“允許系統(tǒng)管理員刪除數(shù)據(jù)庫(kù)中的用戶信息”中,主體是“系統(tǒng)管理員”,資源是“數(shù)據(jù)庫(kù)中的用戶信息”,行為是“刪除信息”。
在訪問(wèn)控制的一般模型中,還包含一個(gè)策略執(zhí)行模塊和策略決策模塊。其中,策略執(zhí)行模塊執(zhí)行訪問(wèn)控制機(jī)制,策略決策模塊表示一組訪問(wèn)控制規(guī)則和策略。主體的請(qǐng)求首先到達(dá)策略執(zhí)行模塊,該模塊創(chuàng)建一個(gè)請(qǐng)求,將其發(fā)送給策略決策模塊,策略決策模塊評(píng)估該請(qǐng)求,并返回一個(gè)允許訪問(wèn)或拒絕訪問(wèn)的響應(yīng)。訪問(wèn)控制模型如圖1所示。
訪問(wèn)控制中,授權(quán)即決定誰(shuí)來(lái)修改訪問(wèn)的權(quán)限,授權(quán)的管理決定誰(shuí)能修改訪問(wèn)的權(quán)限。傳統(tǒng)的授權(quán)管理主要有以下三種:強(qiáng)制訪問(wèn)控制,自主訪問(wèn)控制,基于角色的訪問(wèn)控制。
1.1 強(qiáng)制訪問(wèn)控制和自主訪問(wèn)控制
強(qiáng)制訪問(wèn)控制中,主體和資源都被授予一個(gè)安全屬性,訪問(wèn)的允許與否則根據(jù)主體和資源的安全級(jí)別來(lái)確定。自主訪問(wèn)控制中,資源的所有者或創(chuàng)建者有權(quán)控制和定義資源被其他主體訪問(wèn)的權(quán)限。也就是說(shuō),資源擁有者能夠自主地將訪問(wèn)權(quán)限授予其他主體。相比強(qiáng)制訪問(wèn)控制來(lái)說(shuō),這種策略更靈活,但也正是由于這種靈活,信息的安全性降低了。
1.2 基于角色的訪問(wèn)控制
基于角色的訪問(wèn)控制是在前者種基礎(chǔ)上提出來(lái)的。由于強(qiáng)制訪問(wèn)控制的安全性太高,而自主訪問(wèn)控制的安全性又弱,因此基于角色的訪問(wèn)控制被提出。基于角色訪問(wèn)控制的思想是:訪問(wèn)控制與訪問(wèn)者的身份密切相關(guān),通過(guò)確定該合法訪問(wèn)者的身份來(lái)確定訪問(wèn)者在系統(tǒng)中對(duì)哪類信息有什么樣的訪問(wèn)權(quán)限。一個(gè)訪問(wèn)者可以充當(dāng)多個(gè)角色,一個(gè)角色也可以由多個(gè)訪問(wèn)者擔(dān)任。
基于角色的訪問(wèn)控制最重要的特色是管理權(quán)限的委托代理。在大規(guī)模的分布式系統(tǒng)中,對(duì)資源的權(quán)限管理可以交由一些管理員委托代理授權(quán)。例如,可以以行政區(qū)劃為單位,由各地區(qū)的管理員代理執(zhí)行對(duì)該地區(qū)資源的授權(quán)管理。
2 分布式環(huán)境下的訪問(wèn)控制
20世紀(jì)90年代起,分布式系統(tǒng)開(kāi)始大范圍應(yīng)用,同時(shí)對(duì)分布式訪問(wèn)控制的研究開(kāi)始興起。分布式系統(tǒng)的授權(quán)需要各個(gè)不同的管理域之間合作。從訪問(wèn)控制的角度來(lái)看,與傳統(tǒng)的環(huán)境相比,分布式網(wǎng)絡(luò)環(huán)境具有以下這些特點(diǎn):
2.1 用戶數(shù)量大
分布式系統(tǒng)的用戶數(shù)量通常很大,而且來(lái)自不同的組織機(jī)構(gòu),分屬不同層次,結(jié)構(gòu)復(fù)雜。
2.2 數(shù)據(jù)量大
分布式系統(tǒng)需要處理海量的數(shù)據(jù),并且要分配給不同的用戶處理,涉及的流程復(fù)雜,動(dòng)態(tài)性強(qiáng),數(shù)據(jù)的安全受到威脅。
2.3 權(quán)限分配不統(tǒng)一
用戶不是集中的,而是分布在各個(gè)子域中,其權(quán)限由子域中的管理員進(jìn)行分配。
2.4 系統(tǒng)異構(gòu)
一個(gè)大的分布式系統(tǒng)由多個(gè)小系統(tǒng)共同組成,各小系統(tǒng)間很可能是異構(gòu)的。
因此,分布式環(huán)境下,訪問(wèn)控制問(wèn)題面臨更多的挑戰(zhàn)。如果解決這些問(wèn)題,保證分布式環(huán)境下的系統(tǒng)安全,成為一個(gè)關(guān)鍵問(wèn)題。由以上分析我們得出,分布式環(huán)境下的訪問(wèn)控制應(yīng)滿足:
1) 分布式環(huán)境中,訪問(wèn)控制模型應(yīng)該能夠適應(yīng)大量的用戶訪問(wèn)大量的資源。因此,在訪問(wèn)權(quán)限的分配上,授權(quán)的設(shè)計(jì)應(yīng)該足夠簡(jiǎn)單。
2) 普通用戶不能任意更改安全屬性。如對(duì)于資源的訪問(wèn)權(quán)限 ,改變其安全屬性可能導(dǎo)致信息的泄漏。所以只有管理員能夠做變更。
3) 應(yīng)用業(yè)務(wù)邏輯和訪問(wèn)控制邏輯的實(shí)現(xiàn)相分離,從而實(shí)現(xiàn)訪問(wèn)控制統(tǒng)一管理以及訪問(wèn)控制策略統(tǒng)一配置。
3 基于XACML 的訪問(wèn)控制
自2003年結(jié)構(gòu)化信息標(biāo)準(zhǔn)發(fā)展組織(OASIS)批準(zhǔn)了XACML v1.0,使得訪問(wèn)控制策略管理標(biāo)準(zhǔn)化,為大多數(shù)商業(yè)公司所支持,并于2005年2月1日將XACML v2.0[2]及其所有相關(guān)文檔發(fā)布為標(biāo)準(zhǔn)規(guī)范集。
3.1 XACML體系結(jié)構(gòu)
XACML是OASIS提出的參考模型,它通過(guò)創(chuàng)建策略和規(guī)則,提供控制信息訪問(wèn)的機(jī)制。在此機(jī)制下,對(duì)不同的安全需求可以定義不同的訪問(wèn)策略。XACML的體系結(jié)構(gòu)如圖2所示。其中,資源相當(dāng)于分布式系統(tǒng)。
在XACML中,策略訪問(wèn)點(diǎn)為策略目錄編寫策略和策略集,供策略決策點(diǎn)使用。上下文處理器在XACML各組件間交換格式,將收到的訪問(wèn)請(qǐng)求轉(zhuǎn)換為XACML格式的請(qǐng)求。在XACML的控制下,當(dāng)一個(gè)請(qǐng)求者請(qǐng)求訪問(wèn)一項(xiàng)資源時(shí),策略執(zhí)行點(diǎn)決定是允許還是拒絕該請(qǐng)求。在決定的過(guò)程中,策略信息點(diǎn)控制屬性值。收集到的屬性包括資源名字等資源信息屬性,請(qǐng)求者的角色等決策者屬性,系統(tǒng)時(shí)間等環(huán)境信息,以及諸如操作類型這些行動(dòng)信息。屬性接下來(lái)供策略決策點(diǎn)調(diào)用,它通過(guò)檢查屬性是否與相對(duì)的系統(tǒng)符來(lái)做決策。最終的決策返回給策略執(zhí)行點(diǎn)。如果請(qǐng)求被允許 ,請(qǐng)求者可以訪問(wèn)資源;否則不可以訪問(wèn)。
3.2 XACML訪問(wèn)控制策略
XACML的請(qǐng)求、策略和響應(yīng)是這樣描述的:
1) 一個(gè)XACML請(qǐng)求描述“誰(shuí)要對(duì)哪個(gè)資源做什么”,包括主體、動(dòng)作和資源組成的目標(biāo)元素。請(qǐng)求的目標(biāo)元素被用于提取相應(yīng)的策略或規(guī)則,從而對(duì)請(qǐng)求進(jìn)行決策。其格式如下:
2) 接收到訪問(wèn)請(qǐng)求后,策略決策點(diǎn)檢索與XACML請(qǐng)求中目標(biāo)相匹配的策略。一個(gè)典型的XACML策略包括目標(biāo)、規(guī)則和責(zé)任。其中,規(guī)則包括了目標(biāo)、執(zhí)行條件和結(jié)果,責(zé)任是對(duì)訪問(wèn)請(qǐng)求進(jìn)行決策之后,訪問(wèn)者必須要執(zhí)行的動(dòng)作。其格式如下:
3) 策略決策點(diǎn)將授權(quán)決策返回給策略執(zhí)行點(diǎn),XACML響應(yīng)的格式如下:
3.3 XACML的優(yōu)點(diǎn)
與其他訪問(wèn)控制策略語(yǔ)言相比,使用XACML實(shí)現(xiàn)系統(tǒng)的訪問(wèn)控制,有以下優(yōu)點(diǎn):[2]
1) 一個(gè)標(biāo)準(zhǔn)的訪問(wèn)控制策略語(yǔ)言可以替代許多特定應(yīng)用的語(yǔ)言。
2) 管理者的時(shí)間和成本節(jié)約了,因?yàn)樗麄儾恍枰酶鞣N不同的語(yǔ)言重寫策略。
3) 開(kāi)發(fā)者的時(shí)間和成本節(jié)約了,因?yàn)樗麄儾恍枰l(fā)明新的策略語(yǔ)言然后寫代碼來(lái)支持這些語(yǔ)言。他們可以重用現(xiàn)有的代碼。
4) 用來(lái)編寫和管理XACML策略的優(yōu)秀工具將會(huì)得以開(kāi)發(fā),因?yàn)樗麄兛梢栽谠S多地方得以應(yīng)用。
5) XACML足夠靈活,可以適應(yīng)大多數(shù)訪問(wèn)控制策略的需要,并且是可擴(kuò)展的,因此它可以用來(lái)支持新的需求。
6) 一個(gè)XACML策略可以覆蓋許多資源。這可以避免不同資源中的策略不一致。
7) 在XACML中,策略之間可以互相參考。這對(duì)大型組織很重要。例如,一個(gè)特定站點(diǎn)的策略可以參考一個(gè)公司范圍的策略和一個(gè)特定城市的策略。
4 基于XACML的訪問(wèn)控制授權(quán)場(chǎng)景
Sun公司通過(guò)Java語(yǔ)言提供了OASIS XACML標(biāo)準(zhǔn)的開(kāi)源實(shí)現(xiàn),同時(shí)提供一些API,以供開(kāi)發(fā)者寫進(jìn)查找策略和屬性的新機(jī)制。此開(kāi)源工具包[11]目前的版本是xacml2.0,本文即通過(guò)該工具包實(shí)現(xiàn)一個(gè)具體應(yīng)用,用來(lái)控制對(duì)分布式資源的訪問(wèn)。圖3所示的序列圖描述了該應(yīng)用中組件之間的交互。
在這個(gè)應(yīng)用場(chǎng)景中,一個(gè)用戶名為hl@cueb.edu.cn的用戶主體發(fā)出請(qǐng)求讀取http://localhost:8080/cueb/index.htm下的文件,被部署在服務(wù)器上的策略執(zhí)行點(diǎn)重新組裝成請(qǐng)求信息,并轉(zhuǎn)發(fā)給策略決策點(diǎn)。策略決策點(diǎn)從策略信息點(diǎn)中取得策略信息文件,進(jìn)行授權(quán)評(píng)估,判定用戶有權(quán)訪問(wèn)所請(qǐng)求的文件,并向策略執(zhí)行點(diǎn)發(fā)回響應(yīng)。該應(yīng)用中的策略文件如下:
5 結(jié)論
XACML具備可移植、可擴(kuò)展、支持參數(shù)化的特性。使用XACML使訪問(wèn)控制表達(dá)靈活,易于在分布式環(huán)境下執(zhí)行訪問(wèn)控制策略。該文對(duì)基于XACML的訪問(wèn)控制做了詳細(xì)的分析,并用XACML實(shí)現(xiàn)一個(gè)訪問(wèn)控制的授權(quán)場(chǎng)景。
參考文獻(xiàn):
[1] 朱賢,邢光林,洪帆.分布式環(huán)境下的訪問(wèn)控制綜述[J].微型機(jī)與應(yīng)用,2005,24(3).
[2] OASIS.Extensible Access Control Markup Language Version 2.0[S].2005.
[3] OASIS.XACML Profile for Role Based Access Control.[EB/OL].http://docs.oasis-open.org/xacml/cd-xacml-rbac-profile-01.
[4] Qatawna.Overriding of Access Control In XACML[D].Sweden: Information and Communication Systems Security At the Royal Institute of Technology.2006.
[5] Rissanen E,Babak Sadighi Firozabadi.Access-Control Policy Administration in XACML[N].ERCIM News.No.63,October 2005.
[6] Brachman B.Rule-based Access Control[EB/OL].(2006-12)[2009-08].http://www.ibm.com/developerworks/webservices/library/ws-soa-access.html? S_TACT=105AGX52S_CMP=cn-a-ws.
[7] Verma.XML M Security:Control information access with XACML[EB/OL].(2004-11)[2009-09].http://www.ibm.com/developerworks/xml/library/x-xacml/?S_TACT=105AGX52S_CMP=cn-a-x.
[8] 趙強(qiáng),汪厚祥,李卉.XML訪問(wèn)控制模型研究[J].艦船電子工程,2007(3).
[9] 姜煒超,夏陽(yáng),黃瀟.基于SAML和XACML的Web服務(wù)訪問(wèn)控制模型[J].計(jì)算機(jī)工程與設(shè)計(jì),2005(6).
[10] 黃剛,王汝傳.基于XACML的網(wǎng)格訪問(wèn)控制研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007(8).
[11] SUN.Introduction to XACML[EB/OL].[2003-06].http://sunxacml.sourceforge.net.