謝嘉華,黎明,吳俊,黃剛
(湖南科技學(xué)院電子與信息工程學(xué)院,永州425000)
采用基于角色的訪問控制方法(RBAC)相對于強(qiáng)制或自主訪問控制方法[1],其優(yōu)勢在于角色與權(quán)限之間的變化比用戶與權(quán)限之間的變化更為穩(wěn)定,減少了授權(quán)的復(fù)雜性,降低了出錯的概率。并且RBAC能夠根據(jù)需求的變動,快速靈活地響應(yīng)企業(yè)或機(jī)構(gòu)中影響要素的變化,擁有較高的安全機(jī)制保護(hù)系統(tǒng)安全。
但是目前RBAC模型中沒有明確定義對數(shù)據(jù)權(quán)限的支持,僅單純地以角色為單位授權(quán)作為實(shí)現(xiàn)策略,在目前企業(yè)和政府機(jī)構(gòu)分工不斷細(xì)化的形勢之下,這種授權(quán)方式不夠靈活,還會導(dǎo)致角色數(shù)據(jù)冗余嚴(yán)重,導(dǎo)致權(quán)限的管理變得復(fù)雜;傳統(tǒng)RBAC模型沒有完善的權(quán)限委托代理的機(jī)制,無法適應(yīng)現(xiàn)實(shí)世界中權(quán)限的臨時(shí)委托代理;而且角色繼承中的私有角色泛濫等問題都是基于RBAC的訪問控制傳統(tǒng)模型有待解決的問題。
傳統(tǒng)RBAC模型在應(yīng)對臨時(shí)任務(wù)分配以及角色權(quán)限收回的場景下,對角色權(quán)限管理操作極其繁瑣,甚至容易導(dǎo)致潛藏的漏洞存在;例如,當(dāng)臨時(shí)委托時(shí)所賦予的權(quán)限忘記收回導(dǎo)致信息泄露,以及用戶a和用戶b具有相同的角色,隨著企業(yè)的發(fā)展以至需要對兩者的權(quán)限細(xì)節(jié)進(jìn)行區(qū)分時(shí),系統(tǒng)的管理功能就暴露出它的局限性。
經(jīng)過研究,針對以上情況,本文在基于場景的觀點(diǎn)上,提出了RBAC模型改進(jìn)方法,通過以直接授權(quán)和間接授權(quán)兩種方式對用戶進(jìn)行授權(quán)以及通過引入權(quán)限組的方法進(jìn)行改進(jìn)。
通過系統(tǒng)管理員對用戶進(jìn)行授權(quán),授予具體的功能權(quán)限,例如用戶能訪問某一板塊,某一資源,使用查詢功能等;直接授權(quán)主要用于滿足特殊狀況下提高靈活性的需求,例如臨時(shí)用戶、或者超級用戶等特殊用戶。
在對于零散、臨時(shí)、數(shù)據(jù)量小的用戶數(shù)據(jù)錄入的場景下,給臨時(shí)用戶賦予時(shí)間標(biāo)簽,然后直接賦予相應(yīng)權(quán)限,當(dāng)其訪問資源或者享用服務(wù)時(shí),在登錄時(shí)系統(tǒng)對用戶類型和時(shí)間標(biāo)簽進(jìn)行檢查,通過時(shí)間標(biāo)簽標(biāo)識的時(shí)間在服務(wù)器端進(jìn)行判斷后若在有效期內(nèi)則允許訪問,若超出有效期則刪除臨時(shí)權(quán)限以及刪除臨時(shí)用戶,而且在系統(tǒng)清理周期中會對臨時(shí)用戶進(jìn)行檢測,將過期的臨時(shí)用戶自動刪去,從而達(dá)到簡化操作、提高性能、減少安全風(fēng)險(xiǎn)的目標(biāo)。
對于集中、臨時(shí)、數(shù)據(jù)量較大的用戶數(shù)據(jù)錄入的場景下,采用構(gòu)建臨時(shí)角色(臨時(shí)角色名稱要求唯一),例如游客角色等,通過對臨時(shí)用戶添加時(shí)間標(biāo)簽、賦予臨時(shí)角色從而獲得權(quán)限,以達(dá)到提高效率的目的,對于該種臨時(shí)用戶依然采用在登錄時(shí)檢查用戶類型和時(shí)間標(biāo)簽,在服務(wù)器進(jìn)行判斷,區(qū)別就在超過有效期時(shí),先刪除擁有該角色的所有用戶,然后再刪除角色。
對于長期、穩(wěn)定的用戶數(shù)據(jù)錄入的場景下,通過對用戶賦予相應(yīng)的角色,角色映射一個(gè)權(quán)限的集合,其擁有某一特定職能的權(quán)限,用戶則通過扮演某種角色而獲得權(quán)限,最終實(shí)現(xiàn)相應(yīng)的資源訪問,這里引入權(quán)限組的方式進(jìn)行優(yōu)化,當(dāng)用戶扮演某一特定角色后,由于情況需要增加或減少對某一資源的控制,那么其操作是繁瑣的,如圖1和圖2所示:
圖1 RBAC下的權(quán)限分配
圖2 更改用戶A的權(quán)限
此時(shí)不能簡單的將角色a中訪問資源4的權(quán)限刪除,如果直接將該權(quán)限刪除,那么所有擁有該角色用戶的權(quán)限都會改變,所以只能通過引入第三個(gè)角色為其分配權(quán)限然后賦予用戶A讓其失去對資源4的權(quán)限,那么就增加了一個(gè)角色和一條規(guī)則,這樣導(dǎo)致了冗余的產(chǎn)生,復(fù)雜了權(quán)限管理,并增加了安全隱患,最終導(dǎo)致權(quán)限分配出現(xiàn)問題,但是通過引入權(quán)限組的方式則可以得到有效地避免這種情況發(fā)生。
在該方法中,角色所擁有的不是單一的權(quán)限,而是擁有一個(gè)權(quán)限組,表示擁有權(quán)限的范圍,在權(quán)限組中有可以對擁有的權(quán)限進(jìn)行細(xì)分,在這種情況下雖然用戶可能擁有同一個(gè)角色但有不同的權(quán)限,但是其擁有的權(quán)限不會超過角色所定義權(quán)限組[2]的范圍,其基于RBAC的改進(jìn)模型如圖3所示:
圖3 基于RBAC的改進(jìn)模型
該方法采用形式化語言說明如下:
假設(shè)U表示用戶,R表示角色,A表示資源,UR表示用戶U擁有的角色集合,UA表示用戶U擁有的權(quán)限集合,RA表示角色R擁有的權(quán)限集合;
(1)UR? U,RA?R,UA?UA
?u ∈ U,?r∈ R
(2)uR=r→uA? uA
例如:用戶A和用戶B都只擁有同一個(gè)角色b,AR=,BR=,并且擁有相同權(quán)限 AA={1 ,2,4} ,BA={1 ,2,4},而b的權(quán)限范圍為bA={1 ,2,3,4},如果此時(shí)上級要求用戶A去執(zhí)行某項(xiàng)任務(wù)需要給A增加權(quán)限3,并且刪去權(quán)限4并且用戶角色不變。
查看用戶A的角色:
AR=
查看角色b所擁有的所有權(quán)限:
bA={1 ,2,3,4}
增加權(quán)限3,刪除權(quán)限4:
AA={1 ,2,3},
然而其余擁有角色b的用戶并沒有任何影響。
BA={1 ,2,4}
可見:
bA? AA?BA,而不是bA=AA?BA
通過此種方式如果改變用戶的權(quán)限,只需要在用戶擁有的角色中的權(quán)限組中進(jìn)行增刪就可以完成效果。
(1)當(dāng)用戶為臨時(shí)并且零散時(shí),采用直接授權(quán),首先需要在臨時(shí)用戶表中輸入用戶數(shù)據(jù)并且設(shè)置時(shí)間標(biāo)簽,以及在臨時(shí)權(quán)限表中賦予所需的臨時(shí)權(quán)限,然后在臨時(shí)用戶權(quán)限表中,將臨時(shí)用戶編號和權(quán)限編號進(jìn)行輸入,當(dāng)臨時(shí)用戶的時(shí)間標(biāo)簽過期之后進(jìn)行訪問、或者在系統(tǒng)清理周期內(nèi)檢查到過期的時(shí)間標(biāo)簽,系統(tǒng)后臺根據(jù)時(shí)間標(biāo)簽查詢到臨時(shí)用戶編號,根據(jù)臨時(shí)用戶權(quán)限表,刪除臨時(shí)權(quán)限和臨時(shí)用戶。
直接授權(quán)數(shù)據(jù)庫模型如圖4所示:
圖4 直接授權(quán)數(shù)據(jù)庫模型
(2)當(dāng)用戶為臨時(shí)并且集中時(shí),采用間接授權(quán),首先在臨時(shí)用戶表中輸入大量用戶數(shù)據(jù),之后在臨時(shí)角色表中創(chuàng)建一個(gè)臨時(shí)角色,接著在權(quán)限表中添加所需要的權(quán)限,然后在權(quán)限組權(quán)限表中添加記錄并且在角色表中輸入權(quán)限組編號,最后在臨時(shí)用戶角色表中,給同一權(quán)限的大量人員進(jìn)行臨時(shí)角色的賦予即可,當(dāng)臨時(shí)用戶的時(shí)間標(biāo)簽過期之后、或者在系統(tǒng)清理周期內(nèi)檢查到過期的時(shí)間標(biāo)簽,系統(tǒng)后臺將先根據(jù)用戶編號,查詢到臨時(shí)角色和臨時(shí)用戶以及相應(yīng)的權(quán)限組和權(quán)限,從而進(jìn)行刪除操作。
(3)當(dāng)用戶為長期并且較穩(wěn)定時(shí),采用間接授權(quán),首先在用戶表中添加用戶數(shù)據(jù),接著在權(quán)限表中添加權(quán)限,然后在權(quán)限組權(quán)限表中添加權(quán)限組編號和權(quán)限編號,創(chuàng)建相應(yīng)角色,角色表中添加權(quán)限組編號,最后在角色用戶表中插入角色編號和用戶編號即可。
間接授權(quán)數(shù)據(jù)庫模型[3]如圖5所示:
圖5 間接授權(quán)數(shù)據(jù)庫模型
使用基于場景的改進(jìn)RBAC模型后,有效減輕了管理人員的工作量,使得授權(quán)更加便利,應(yīng)對不同場景更加靈活,具體從以下幾個(gè)方面進(jìn)行說明:
優(yōu)點(diǎn):
(1)采用直接和間接授權(quán)兩種方式,對用戶角色的授權(quán)更加靈活。
(2)引用權(quán)限組的方式,有效降低角色的冗余。
(3)使用基于場景的方法,對于超級用戶,臨時(shí)用戶的授權(quán)更加的合理。
缺點(diǎn):
(1)在角色對角色的管理關(guān)系上存在缺陷[4]。
(2)角色的繼承機(jī)制存在問題,導(dǎo)致權(quán)限過大,不符合最小特權(quán)原則。
(3)對于真實(shí)情況的模擬存在問題,對于臨時(shí)任務(wù)的分配,需要產(chǎn)生一個(gè)臨時(shí)的用戶身份。
使用改進(jìn)RBAC模型相比于使用傳統(tǒng)RBAC模型,該模型有如下特點(diǎn):在處理臨時(shí)人員訪問的場景下,能夠高效地處理臨時(shí)任務(wù)并且解決臨時(shí)人員逾期訪問資源的權(quán)限回收問題,降低了系統(tǒng)維護(hù)人員的工作量和操作復(fù)雜度,提高了對于這類場景的處理能力。使用改進(jìn)RBAC模型不僅在對企業(yè)和政府機(jī)構(gòu)不斷細(xì)化工作,細(xì)化權(quán)限的形勢下給權(quán)限的分配提供了一個(gè)很好的方式,并且降低了大量角色數(shù)據(jù)在后臺重復(fù)堆積,從而使得系統(tǒng)的運(yùn)行更加的流暢。而且使用改進(jìn)RBAC模型的系統(tǒng)擁有直接和間接授權(quán)兩種授權(quán)方式,使得給用戶授予權(quán)限的方式更加靈活。還能通過用戶編號所攜帶的信息經(jīng)過映射之后對資源訪問進(jìn)行限制,使得計(jì)算機(jī)所承擔(dān)的工作量減少,有效地提高了系統(tǒng)效率和安全性。