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