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