謝嘉華,黎明,吳俊,黃剛
(湖南科技學院電子與信息工程學院,永州425000)
采用基于角色的訪問控制方法(RBAC)相對于強制或自主訪問控制方法[1],其優勢在于角色與權限之間的變化比用戶與權限之間的變化更為穩定,減少了授權的復雜性,降低了出錯的概率。并且RBAC能夠根據需求的變動,快速靈活地響應企業或機構中影響要素的變化,擁有較高的安全機制保護系統安全。
但是目前RBAC模型中沒有明確定義對數據權限的支持,僅單純地以角色為單位授權作為實現策略,在目前企業和政府機構分工不斷細化的形勢之下,這種授權方式不夠靈活,還會導致角色數據冗余嚴重,導致權限的管理變得復雜;傳統RBAC模型沒有完善的權限委托代理的機制,無法適應現實世界中權限的臨時委托代理;而且角色繼承中的私有角色泛濫等問題都是基于RBAC的訪問控制傳統模型有待解決的問題。
傳統RBAC模型在應對臨時任務分配以及角色權限收回的場景下,對角色權限管理操作極其繁瑣,甚至容易導致潛藏的漏洞存在;例如,當臨時委托時所賦予的權限忘記收回導致信息泄露,以及用戶a和用戶b具有相同的角色,隨著企業的發展以至需要對兩者的權限細節進行區分時,系統的管理功能就暴露出它的局限性。
經過研究,針對以上情況,本文在基于場景的觀點上,提出了RBAC模型改進方法,通過以直接授權和間接授權兩種方式對用戶進行授權以及通過引入權限組的方法進行改進。
通過系統管理員對用戶進行授權,授予具體的功能權限,例如用戶能訪問某一板塊,某一資源,使用查詢功能等;直接授權主要用于滿足特殊狀況下提高靈活性的需求,例如臨時用戶、或者超級用戶等特殊用戶。
在對于零散、臨時、數據量小的用戶數據錄入的場景下,給臨時用戶賦予時間標簽,然后直接賦予相應權限,當其訪問資源或者享用服務時,在登錄時系統對用戶類型和時間標簽進行檢查,通過時間標簽標識的時間在服務器端進行判斷后若在有效期內則允許訪問,若超出有效期則刪除臨時權限以及刪除臨時用戶,而且在系統清理周期中會對臨時用戶進行檢測,將過期的臨時用戶自動刪去,從而達到簡化操作、提高性能、減少安全風險的目標。
對于集中、臨時、數據量較大的用戶數據錄入的場景下,采用構建臨時角色(臨時角色名稱要求唯一),例如游客角色等,通過對臨時用戶添加時間標簽、賦予臨時角色從而獲得權限,以達到提高效率的目的,對于該種臨時用戶依然采用在登錄時檢查用戶類型和時間標簽,在服務器進行判斷,區別就在超過有效期時,先刪除擁有該角色的所有用戶,然后再刪除角色。
對于長期、穩定的用戶數據錄入的場景下,通過對用戶賦予相應的角色,角色映射一個權限的集合,其擁有某一特定職能的權限,用戶則通過扮演某種角色而獲得權限,最終實現相應的資源訪問,這里引入權限組的方式進行優化,當用戶扮演某一特定角色后,由于情況需要增加或減少對某一資源的控制,那么其操作是繁瑣的,如圖1和圖2所示:

圖1 RBAC下的權限分配

圖2 更改用戶A的權限
此時不能簡單的將角色a中訪問資源4的權限刪除,如果直接將該權限刪除,那么所有擁有該角色用戶的權限都會改變,所以只能通過引入第三個角色為其分配權限然后賦予用戶A讓其失去對資源4的權限,那么就增加了一個角色和一條規則,這樣導致了冗余的產生,復雜了權限管理,并增加了安全隱患,最終導致權限分配出現問題,但是通過引入權限組的方式則可以得到有效地避免這種情況發生。
在該方法中,角色所擁有的不是單一的權限,而是擁有一個權限組,表示擁有權限的范圍,在權限組中有可以對擁有的權限進行細分,在這種情況下雖然用戶可能擁有同一個角色但有不同的權限,但是其擁有的權限不會超過角色所定義權限組[2]的范圍,其基于RBAC的改進模型如圖3所示:

圖3 基于RBAC的改進模型
該方法采用形式化語言說明如下:
假設U表示用戶,R表示角色,A表示資源,UR表示用戶U擁有的角色集合,UA表示用戶U擁有的權限集合,RA表示角色R擁有的權限集合;
(1)UR? U,RA?R,UA?UA
?u ∈ U,?r∈ R
(2)uR=r→uA? uA
例如:用戶A和用戶B都只擁有同一個角色b,AR={b},BR={b},并且擁有相同權限 AA={1 ,2,4} ,BA={1 ,2,4},而b的權限范圍為bA={1 ,2,3,4},如果此時上級要求用戶A去執行某項任務需要給A增加權限3,并且刪去權限4并且用戶角色不變。
查看用戶A的角色:
AR={b}
查看角色b所擁有的所有權限:
bA={1 ,2,3,4}
增加權限3,刪除權限4:
AA={1 ,2,3},
然而其余擁有角色b的用戶并沒有任何影響。
BA={1 ,2,4}
可見:
bA? AA?BA,而不是bA=AA?BA
通過此種方式如果改變用戶的權限,只需要在用戶擁有的角色中的權限組中進行增刪就可以完成效果。
(1)當用戶為臨時并且零散時,采用直接授權,首先需要在臨時用戶表中輸入用戶數據并且設置時間標簽,以及在臨時權限表中賦予所需的臨時權限,然后在臨時用戶權限表中,將臨時用戶編號和權限編號進行輸入,當臨時用戶的時間標簽過期之后進行訪問、或者在系統清理周期內檢查到過期的時間標簽,系統后臺根據時間標簽查詢到臨時用戶編號,根據臨時用戶權限表,刪除臨時權限和臨時用戶。
直接授權數據庫模型如圖4所示:

圖4 直接授權數據庫模型
(2)當用戶為臨時并且集中時,采用間接授權,首先在臨時用戶表中輸入大量用戶數據,之后在臨時角色表中創建一個臨時角色,接著在權限表中添加所需要的權限,然后在權限組權限表中添加記錄并且在角色表中輸入權限組編號,最后在臨時用戶角色表中,給同一權限的大量人員進行臨時角色的賦予即可,當臨時用戶的時間標簽過期之后、或者在系統清理周期內檢查到過期的時間標簽,系統后臺將先根據用戶編號,查詢到臨時角色和臨時用戶以及相應的權限組和權限,從而進行刪除操作。
(3)當用戶為長期并且較穩定時,采用間接授權,首先在用戶表中添加用戶數據,接著在權限表中添加權限,然后在權限組權限表中添加權限組編號和權限編號,創建相應角色,角色表中添加權限組編號,最后在角色用戶表中插入角色編號和用戶編號即可。
間接授權數據庫模型[3]如圖5所示:

圖5 間接授權數據庫模型
使用基于場景的改進RBAC模型后,有效減輕了管理人員的工作量,使得授權更加便利,應對不同場景更加靈活,具體從以下幾個方面進行說明:
優點:
(1)采用直接和間接授權兩種方式,對用戶角色的授權更加靈活。
(2)引用權限組的方式,有效降低角色的冗余。
(3)使用基于場景的方法,對于超級用戶,臨時用戶的授權更加的合理。
缺點:
(1)在角色對角色的管理關系上存在缺陷[4]。
(2)角色的繼承機制存在問題,導致權限過大,不符合最小特權原則。
(3)對于真實情況的模擬存在問題,對于臨時任務的分配,需要產生一個臨時的用戶身份。
使用改進RBAC模型相比于使用傳統RBAC模型,該模型有如下特點:在處理臨時人員訪問的場景下,能夠高效地處理臨時任務并且解決臨時人員逾期訪問資源的權限回收問題,降低了系統維護人員的工作量和操作復雜度,提高了對于這類場景的處理能力。使用改進RBAC模型不僅在對企業和政府機構不斷細化工作,細化權限的形勢下給權限的分配提供了一個很好的方式,并且降低了大量角色數據在后臺重復堆積,從而使得系統的運行更加的流暢。而且使用改進RBAC模型的系統擁有直接和間接授權兩種授權方式,使得給用戶授予權限的方式更加靈活。還能通過用戶編號所攜帶的信息經過映射之后對資源訪問進行限制,使得計算機所承擔的工作量減少,有效地提高了系統效率和安全性。