支持RBAC限制的XACML改進(jìn)模型
引言
隨著社會(huì)信息化程度的提高,信息安全已經(jīng)逐漸成為一個(gè)不可忽視的問題?;ヂ?lián)網(wǎng)的不斷發(fā)展帶來了其應(yīng)用模式的不斷改變,這樣的變化也給信息安全的保障帶來了不小的挑戰(zhàn)。訪問控制作為保障信息安全的第一道關(guān)卡自然會(huì)受到廣泛關(guān)注。目前,WEB服務(wù)普遍采用分布式網(wǎng)絡(luò)應(yīng)用構(gòu)建技術(shù),它建立在開放的標(biāo)準(zhǔn)之上,同時(shí)很好地利用了已有的成熟的互聯(lián)網(wǎng)應(yīng)用技術(shù),包括各種模型規(guī)范和編程語言,并結(jié)合面向服務(wù)的思想,以更好地實(shí)現(xiàn)異構(gòu)信息交流的目的。這就要求如今所采用的訪問控制方法不僅要達(dá)到保證信息安全的目的,還必須具有良好的可擴(kuò)展性、可定制性和異質(zhì)信息的交互性。
1訪問控制概述
訪問控制技術(shù)是通過某種方式明確地準(zhǔn)許或限制訪問能力及范圍的一種方法。通過訪問控制服務(wù),可以限制對關(guān)鍵資源的訪問,防止非法用戶的侵入或者因合法用戶的不慎
收稿日期:2013-04-27操作所造成的破壞[%傳統(tǒng)的訪問控制方式包括自主訪問控制(DiscretionaryAccessControl,DAC)、強(qiáng)制訪問控制(MandatoryAccessControl,MAC)、基于角色的訪問控制(Role-basedAccessControl,RBAC)等。每種訪問控制方式都有廣泛應(yīng)用,但應(yīng)用的范圍有所區(qū)別[2]。
DAC最早出現(xiàn)在20世紀(jì)70年代的分時(shí)系統(tǒng)中,是一種多用戶環(huán)境下最常用的訪問控制技術(shù)。在目前流行的UNIX操作系統(tǒng)中,DAC被普遍采用,允許合法用戶以用戶或用戶組的身份訪問策略規(guī)定的客體,同時(shí)阻止非授權(quán)用戶訪問客體,某些用戶還可以自主地把自己所擁有的客體的訪問權(quán)限授予其他用戶。在傳統(tǒng)的系統(tǒng)中,訪問通常基于ACL,ACL與授權(quán)子系統(tǒng)結(jié)合為一體,在許可和拒絕對資源的訪問上扮演關(guān)鍵的作用。
MAC主要用在軍事領(lǐng)域中,它是在DAC的基礎(chǔ)上,增加了對網(wǎng)絡(luò)資源的安全屬性劃分,規(guī)定不同屬性下主體的訪問權(quán)限。MAC是一種多級訪問控制策略,系統(tǒng)事先給訪問主體和受控對象分配不同的安全級別屬性,在實(shí)施訪問控制時(shí),系統(tǒng)先對訪問主體和受控對象的安全級別屬性進(jìn)行比較,再?zèng)Q定訪問主體能否訪問該受控對象。
RBAC的概念由Ferraiolo和Kuhn于1992年提出叫RBAC的重點(diǎn)是分配一個(gè)所謂的角色給用戶或用戶組叫角色對應(yīng)于業(yè)務(wù)系統(tǒng)中的崗位或者職位。由于角色是安全控制策略的核心,因此極大地簡化了安全管理,特別適用于大規(guī)模的企業(yè)應(yīng)用。無論是系統(tǒng)級還是應(yīng)用級的安全管理,都可以應(yīng)用RBAC進(jìn)行權(quán)限控制,如目前的Windows操作系統(tǒng)和SQLServer的用戶權(quán)限管理就體現(xiàn)了RBAC的思想。
從安全性的角度來看,較之DAC和MAC,RBAC更適合于商業(yè)應(yīng)用。它綜合了MAC和DAC的特點(diǎn),既可以被配置成MAC,也可以配置接近DAC。
2RBAC與XACML
RBAC模型
RBAC的核心思想是將訪問權(quán)限與角色相聯(lián)系[5],通過給用戶分配合適的角色,讓用戶與訪問權(quán)限相關(guān)聯(lián)。當(dāng)主體發(fā)生變化時(shí),只需修改主體與角色之間的關(guān)聯(lián),而不必修改角色與客體的關(guān)聯(lián)。用戶以什么樣的角色對資源進(jìn)行訪問,決定了用戶擁有的權(quán)限以及可執(zhí)行何種操作。在RBAC中,角色成為訪問的主體。
RBAC規(guī)范遵循角色繼承原則、最小權(quán)限原則和責(zé)任分離原則[6]。
RBAC的優(yōu)點(diǎn):一是支持權(quán)限管理。通過角色溝通用戶和資源,對用戶的訪問授權(quán)轉(zhuǎn)變?yōu)閷巧氖跈?quán),系統(tǒng)的管理工作是授權(quán)或取消用戶的角色。二是管理員操作方便。行政管理人員委派用戶到角色的工作,而技術(shù)人員配置權(quán)限到角色的工作。三是很好地描述角色層次關(guān)系,實(shí)現(xiàn)最小權(quán)限原則和職責(zé)分離原則,降低系統(tǒng)風(fēng)險(xiǎn)。
而RBAC存在的不足,則主要表現(xiàn)在兩個(gè)方面:一是對資源實(shí)施訪問時(shí),如果無法通過用戶角色驗(yàn)證,就再?zèng)]有其他辦法許可訪問;二是在基于項(xiàng)目分配的人力資源公司內(nèi),用戶可以擁有多個(gè)角色,同時(shí)角色經(jīng)常變動(dòng),因此角色的管理工作量也是很大的。
XACML訪問控制模型
XML是描述互聯(lián)網(wǎng)上結(jié)構(gòu)化信息與內(nèi)容的標(biāo)準(zhǔn),具有簡單性、結(jié)構(gòu)性與通用性。這些特性使得基于XML的XACML有著廣泛的支持性。XACML是一種對訪問控制策略和訪問控制請求/響應(yīng)產(chǎn)生過程加以描述的語言。XACML不僅提供了一系列邏輯算法對整個(gè)授權(quán)過程進(jìn)行控制,而且提供了支持定義新功能、數(shù)據(jù)結(jié)構(gòu)、合成邏輯算法等的標(biāo)準(zhǔn)可擴(kuò)展點(diǎn),可以根據(jù)主體、資源、環(huán)境的屬性以及所采取的行為進(jìn)行控制[7]。
XACML訪問控制模型由策略執(zhí)行點(diǎn)(PEP)、策略判決點(diǎn)(PDP)、策略管理點(diǎn)(PAP)、策略信息點(diǎn)(PIP)、主體(Subject)、資源(Resource)、環(huán)境(Environment)等組成。圖1所示是XACML訪問控制模型架構(gòu)中各主要單元及相互間的關(guān)系冏。
圖1XACML訪問控制模型框架
3基于RBAC的XACML改進(jìn)模型
3.1問題描述
XACML的RBAC框架[9]規(guī)范了如何使用XACML來表示NIST-RBAC標(biāo)準(zhǔn)模型中的核心模型和層次模型。同時(shí),該規(guī)范還提出一種叫做RoleEnablementAuthority的實(shí)體,將角色指派和角色激活的任務(wù)從XACMLPDP中分離出來,更好地體現(xiàn)了以角色為中心的訪問控制模式。然而,此次提出的基于XACML的RBAC框架沒有對這個(gè)實(shí)體進(jìn)行更為明確的定位與規(guī)范,只是給出了幾種可能的實(shí)現(xiàn)方式,例如,該實(shí)體可通過RoleAssignment〈Policy〉或<PolicySet>來判斷主體是否指派了某個(gè)角色屬性。
因此,可以說OASIS提出的XACML的RBAC框架還存在著一些缺陷,因?yàn)樗⒉荒芡暾刂С諶BAC限制,也沒有給出使用RBAC策略的具體數(shù)據(jù)流程。然而,對于角色的限制是RBAC模型中非常重要的一方面,也是RBAC模型的主要?jiǎng)訖C(jī)之一,所以RoleEnablementAuthority需要在基于XACML的RBAC框架中擁有一個(gè)明確的定位。
本文以NIST-RBAC標(biāo)準(zhǔn)模型中的限制模型的原則為基礎(chǔ),結(jié)合OASIS提出的XACML的RBAC框架規(guī)范以及具體的XACML訪問控制模型,用XACML描述一種基于角色的訪問控制改進(jìn)模型。
3.2支持RBAC限制的XACML改進(jìn)模型
本文對OASIS的XACML的RBAC框架進(jìn)行了改進(jìn),以便更好地支持NIST-RBAC限制模型中的靜態(tài)職權(quán)分離和動(dòng)態(tài)職權(quán)分離限制。圖2所示是支持RBAC限制的XACML改進(jìn)模型,其中,新增的模塊與數(shù)據(jù)流由虛線表示。
圖2中,管理員通過策略管理點(diǎn)定義所需要的安全策略;在一個(gè)具體的應(yīng)用環(huán)境下,策略執(zhí)行點(diǎn)截獲用戶發(fā)送的訪問請求;策略執(zhí)行點(diǎn)將截獲的訪問請求發(fā)送給上下文處理器,以便將請求轉(zhuǎn)化為統(tǒng)一的XACML格式;上下文處理器將產(chǎn)生的XACML格式的訪問請求發(fā)送給策略決策點(diǎn)并請求其進(jìn)行訪問控制決策;策略決策點(diǎn)向上下文處理器發(fā)送請求以獲取額外信息進(jìn)行決策,其中包括對主體屬性、資源屬性、環(huán)境屬性、角色屬性的請求和對角色狀態(tài)的請求;上下文處理器接到策略決策點(diǎn)的請求后分別向策略信息點(diǎn)和角色管理點(diǎn)(新增模塊)發(fā)送相應(yīng)請求;策略信息點(diǎn)和角色管理點(diǎn)(新增模塊)接到請求后會(huì)向不同的實(shí)體索取所需要的信息,并將得到的信息返回給上下文處理器;上下文處理器將收集到的必要信息發(fā)送給策略決策模塊;策略決策模塊根據(jù)策略信息、屬性信息、資源的上下文信息以及角色狀態(tài)信息進(jìn)行訪問請求決策,并將決策結(jié)果返回給上下文處理器;上下文處理器將決策結(jié)果返回給策略執(zhí)行點(diǎn),以執(zhí)行相應(yīng)的決策結(jié)果,同時(shí),執(zhí)行相應(yīng)的職責(zé)信息和更新角色信息。
由此,XACML的RBAC框架規(guī)范中的RoleEnablementAuthority以一個(gè)新模塊的形式得以規(guī)范化和具體化,同時(shí)NIST-RBAC標(biāo)準(zhǔn)模型中限制模型所提出的針對角色的限制在此改進(jìn)模型中得到了實(shí)現(xiàn)。
4改進(jìn)模型的實(shí)現(xiàn)
4.1通過角色管理點(diǎn)實(shí)現(xiàn)靜態(tài)責(zé)任分離
靜態(tài)責(zé)任分離是責(zé)任分離的最簡單的一種形式,即如果定義兩個(gè)角色為靜態(tài)的角色互斥,那么任何一個(gè)用戶都不能同時(shí)被指派給這兩個(gè)角色。這可以被看成是一種管理策略,是對管理員的用戶角色指派操作的限制。本文以場景“‘Permit’‘a(chǎn)dministrator’‘A’to‘Set-Role-to-B’as‘employee’”來測試和分析各組件執(zhí)行訪問控制的效果。表1所列為相關(guān)測試用例和預(yù)期結(jié)果。
借助于XACML3.0安全策略管理規(guī)范,可以定義的訪問策略如下(簡化的XACML):
-<RuleRuleId="StaticSeparationofDuty"
Effect="Permit">
-<Target>
-<Subjects>A</Subjects>
-<Rolesattribute>admin</Rolesattribute>
-<Rolesstatus>open</Rolesstatus>
-<Resources>employee</Resources>
-<Actions>
-<Action>
-<ActionMatchMatchId="urn:oasis:names:tc:
xacml:1.0:function:string-equal">
<AttributeValueDataType="http://www.w3.org/2001/
XMLSchema#string">Set-Role-to-B</AttributeValue>
<ActionAttributeDesignatorDataType="http://www.
w3.org/2001/XMLSchema#string"AttributeId="urn:oasis:
names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
</Actions>
</Target>
</Rule>
該管理策略描述了管理員A在B沒有被指派角色employee的情況下可以給用戶B指派角色vendor;而當(dāng)B已經(jīng)被指派了vendor的互斥角色employee后,A再指派給B角色vendor時(shí)會(huì)遭到拒絕。
4.2通過角色管理點(diǎn)實(shí)現(xiàn)動(dòng)態(tài)責(zé)任分離
動(dòng)態(tài)責(zé)任分離允許同一角色被指派給不同的用戶,但它們不能同時(shí)被激活。這種訪問控制方式通過對模型內(nèi)角色管理點(diǎn)中的角色狀態(tài)的轉(zhuǎn)化來實(shí)現(xiàn)。
本文以場景'Permit''administrator''Cto'edit',documentl'”來測試和分析各組件執(zhí)行訪問控制的效果。表2所列為相關(guān)測試用例和預(yù)期結(jié)果。
借助于XACML3.0[10]安全策略管理規(guī)范,可以定義訪問策略如下(簡化的XACML):
-<RuleRuleId="DynamicSeparationofDuty"Effect="Permit">
-<Target>
-<Subjects>A</Subjects>
-<Rolesattribute>admin</Rolesattribute>
-<Rolesstatus>open</Rolesstatus>
-<Resources>Doc1</Resources>
-<Actions>
-<Action>
-<ActionMatchMatchId="urn:oasis:names:tc:
xacml:1.0:function:string-equal">
<AttributeValueDataType="http://www.w3.org/2001/
XMLSchema#string">edit</AttributeValue>
<ActionAttributeDesignatorDataType="http://www.
w3.org/2001/XMLSchema#string"AttributeId="urn:oasis:
names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
</Actions>
</Target>
</Rule>
該管理策略描述了管理員A在角色驗(yàn)證成功的情況下可以對Doc1進(jìn)行編輯,同時(shí)將管理員的角色狀態(tài)設(shè)置為close,即其他具有管理員角色的用戶無法進(jìn)行相同操作。因此,當(dāng)另一管理員B在A編輯Doc1的同時(shí),申請對Doc1進(jìn)行編輯遭到了拒絕。
5結(jié)語
角色訪問控制模型對WEB信息安全的研究與應(yīng)用有著重要的意義,而XAML的推廣使得訪問控制更加結(jié)構(gòu)化、統(tǒng)一化與細(xì)粒度化。二者的結(jié)合應(yīng)用為保障WEB服務(wù)安全提供了一種更為有效與規(guī)范的方法。本文通過對RBAC模型的研究,對XACML訪問控制框架進(jìn)行了改進(jìn),使得新模型更加適應(yīng)動(dòng)態(tài)的需求,為訪問安全提供了更進(jìn)一步的保障。然而,日益復(fù)雜化的網(wǎng)絡(luò)環(huán)境也在不斷地為保障信息安全的手段提出更高的要求,因此對于RBAC模型與XACML的應(yīng)用研究也仍將不斷地繼續(xù)下去。
20211023_6172e0a713cd0__支持RBAC限制的XACML改進(jìn)模型