周姝昕
摘 要:為解決傳統RBAC模型在實際應用中的不足,提出改進RBAC模型的數據庫設計。該模型通過設置角色優先級解決角色互斥問題,并引入監管角色分化系統管理類人員權限保障數據和系統的安全。
Abstract:In order to solve the lack of traditional RBAC model in practical application,puts forward a database design about improve the model of RBAC.By setting the priority of role to solve this problem about mutex and introduce a kind of role which abate the action of manager to ensure the security of data and system.
關鍵詞:RBAC;職責分離;優先級;最小特權;監管
隨著信息科技的迅猛發展,數據的重要性不言而喻。在當前的大數據時代下,海量數據的存在推動了數據庫系統的發展。美國惠普公司和麻省理工學院聯合對當代數據庫進行了解刨式分析,得出結論:傳統關系通用型數據庫,只有10%左右的時間是處理有效數據,剩下90%的時間都浪費在Buffer Manager,Latching,Locking,Logging,Btree keys等其他輔助工作上。面對當前如此龐大的數據群體,傳統型數據庫的弊端日益顯現,分布式數據庫系統逐漸取代了傳統型數據庫。分布式數據庫利用高速計算機網絡將物理上分散的多個數據存儲單元連接起來組成一個邏輯上統一的數據庫。分布式數據庫的基本思想是將原來集中式數據庫中的數據分散存儲到多個通過網絡連接的數據存儲節點上,以獲取更大的存儲容量和更高的并發訪問量,其特點主要體現在更高的數據訪問速度,更強的可擴展性,更高的并發訪問量。正是因為這種數據存儲與處理呈現物理分散邏輯統一的發展趨勢,訪問控制及權限管理便應運而生,其主要作用是負責識別信息系統中的人員、數據以及功能是否具有訪問和操作的“合法性”。這種技術從最初的自主訪問控制(DAC)和強制訪問控制(MAC)發展為現在普遍流行的基于角色的訪問控制(RBAC)。
1 RBAC模型基本思想及特點
RBAC的基本思想是引入角色將用戶和訪問權限間接聯系起來,根據系統用戶的工作職責設置角色,授予角色相應的訪問權限,再為用戶分配角色。如圖
RBAC相對于DAC(自主訪問控制)以及MAC(強制訪問控制)將用戶與訪問權限直接對應的控制管理方法,減少了用戶工作職責的變動對系統穩定性及安全狀態的影響。因為用戶的職責易于變動更改,RBAC模型將用戶和訪問權限通過角色進行邏輯分離,根據工作職責設計角色,并且使得管理員只需對角色權限進行處理并分配給用戶。這樣的設計大大減少了授權管理的復雜性和工作量。
2 RBAC的改進
2.1 改進的初衷
在實際開發中,用戶所對應的角色和權限都有存在變數,可能存在這樣幾種情況:
1.用戶A屬于某類角色,但因為某些原因用戶A暫時不可擁有這類角色對應的權限,后續存在著恢復該角色身份的可能。這個時候,使用傳統的RBAC模型,一旦這類用戶增多,管理員需要對這類用戶進行單獨修改,因為他們只是該角色下的部分用戶,故而不可以對該類 角色進行更改。但這樣的做法使得RBAC并沒有突出它在授權管理方式的優勢。
2.角色A擁有某項權限P,角色B沒有這項權限,A與B具有互斥關系。在某種情況下需要某位用戶同時具有兩種角色的權限。而在傳統的RBAC模型中根據職責分離原則,用戶是不能同時被賦予A和B這兩個角色的。
3.系統管理員在處理事務的時候因為失誤或者蓄意篡改破壞數據,而事后發覺,已丟失的數據難以恢復,同時會造成一定的損失。
2.2 改進的RBAC設計思路
2.2.1 對角色設置優先級
無論是情況1還是情況2 ,這都是用戶所屬角色的互斥現象。若同時給賦給用戶A兩種角色,造成某一用戶權限過大,影響系統安全,違背了職責分離原則。單一角色則權限不夠,影響事務處理進度。故而引入角色優先級的概念,各角色默認優先級高低以權限大小劃分,根據最小特權原則,權限越小,優先級越高。
在數據庫中設置用于存放角色和用戶對應的表user-role,存放角色和權限對應的表role-action。用戶A在登陸時,根據數據庫里的user-role表將該用戶A所擁有的角色顯示出來,用戶需要選擇此次以哪種身份進入系統,系統根據他的選擇將所選角色優先級臨時調至最高,通過role-action表將該角色所對應的權限抽調出來。此時他的其他所屬身份存在,但因為當前優先級不是最高,權限會被暫時隱藏。若用戶A的當前處于待職,此時給他賦予訪客權限,該權限優先級別默認最高,將其他角色覆蓋。恢復職務時收回訪客身份。也就是說,這類用戶從宏觀上看他同時擁有多種角色,但在具體的某一時刻用戶對系統進行操作的時候只使用一種身份,將用戶當時所用角色的優先級提高,使得當前高優先級角色覆蓋掉其余低優先級角色。這樣既保證用戶操作基于RBAC的職責分離原則,同時又方便系統的維護和使用。對于沒有互斥的情況,則按角色并集處理權限。
2.2.2 增加監管角色
對于系統來說,總是需要管理員的存在。管理員這個角色的權限往往是最大的,這時如果出現情況3,對系統的危害是不言而喻的。而對一個成熟的系統來說,這淚角色必不可少。為了解決這個問題,將引入一個監管角色。
監管角色最主要的兩個職責分別是: 監管管理員操作、分化管理員權限。
這使得沒有任何一類管理角色有足夠的權限可以單獨進行對數據的刪改及查閱數據庫定期備份的操作。
根據最小特權原則,將管理員角色的權限劃分至最小。管理員需要對數據進行操作時,需要詢問監管管理員,只有在監管管理員允許的情況下才可以實現對數據的更改,而監管管理員沒有直接對數據的進行操作的權限。當需要進行查閱數據備份的時候,需要二者同時進行操作,才可擁有該項權限。同時監管管理員對管理員操作記錄表,具有讀權限。即,監管管理員只可查閱該表不可更改。
監管角色針對管理員行為進行監管及管理員對數據更改的把控和審核,并沒有過多干涉系統管理員其他權限。保障了數據的安全性,最大限度上避免對數據進行惡意篡改,也避免系統中出現一類角色獨大的情況,有利于系統的正常運行和維護。
3 總結
通過在實際的項目開發中引用,使得該改進模型不只停留于理論。所提出的改進模型在我們開發的“學生科研管理系統”中得到了很好的應用。在使用RBAC模型建立數據庫的過程中發現,通過對RBAC模型進行改進,可以使其更貼近系統實際開發與數據管理。改進后的RBAC模型可以適應不同情況下同一用戶對多種角色需求,使得數據處理高效,提高了管理員對人員及所屬多種角色管理的方便性和安全性,同時監管角色的引入,也降低了單一角色對系統和數據安全的影響。