摘 要:基于B/S架構(gòu)的信息系統(tǒng)開(kāi)發(fā)過(guò)程中權(quán)限控制設(shè)計(jì)是其重要環(huán)節(jié)。本文基于角色的訪問(wèn)控制(RBAC)原理,設(shè)計(jì)出一套通用的用戶(hù)權(quán)限管理模塊,提高了信息系統(tǒng)的安全性,靈活性和可擴(kuò)展性,對(duì)于實(shí)現(xiàn)信息系統(tǒng)的模塊化開(kāi)發(fā),縮短開(kāi)發(fā)周期具有重要的意義。
關(guān)鍵詞:信息系統(tǒng);RBAC;角色;權(quán)限管理
中圖分類(lèi)號(hào):TP311
隨著信息技術(shù)的發(fā)展,基于B/S架構(gòu)的信息系統(tǒng)系統(tǒng)得到了長(zhǎng)足的發(fā)展,其功能越來(lái)越復(fù)雜,用戶(hù)也越來(lái)越多,操作權(quán)限的控制成為信息系統(tǒng)安全性設(shè)計(jì)和開(kāi)發(fā)的重要環(huán)節(jié)。設(shè)計(jì)開(kāi)發(fā)一套通用的基于B/S模式的用戶(hù)權(quán)限管理模塊,對(duì)于實(shí)現(xiàn)信息系統(tǒng)的模塊化設(shè)計(jì),縮短開(kāi)發(fā)周期具有重要的意義。
1 基于角色的訪問(wèn)控制(RBAC)原理
基于角色的訪問(wèn)控制(Role-Based Access Control.RBAC)概念早在20世紀(jì)70年代就隨著多用戶(hù)、多應(yīng)用在線系統(tǒng)的出現(xiàn)而產(chǎn)生,但真正形成一套完整理論的則是由Sandhu等人于1996年在IEEE上發(fā)表的文章——基于角色的訪問(wèn)控制模型,習(xí)慣上稱(chēng)為RBAC96模型。[1]RBAC的核心思想是將訪問(wèn)權(quán)限與角色相聯(lián)系,角色是根據(jù)應(yīng)用系統(tǒng)的不同任務(wù)需要而設(shè)置,通過(guò)給用戶(hù)分配適合的角色,讓用戶(hù)和訪問(wèn)權(quán)限相聯(lián)系。[2]
RBAC模型中,系統(tǒng)的最終用戶(hù)并沒(méi)有與數(shù)據(jù)對(duì)象有直接聯(lián)系,而是通過(guò)角色這個(gè)中間層來(lái)訪問(wèn)后臺(tái)數(shù)據(jù)信息,從而實(shí)現(xiàn)了用戶(hù)與訪問(wèn)權(quán)限的邏輯分離。[3]這樣的授權(quán)管理與個(gè)體用戶(hù)單一授權(quán)相比較,具有強(qiáng)大的可操作性和可管理性,能有效地增強(qiáng)對(duì)用戶(hù)訪問(wèn)的控制和管理。
2 系統(tǒng)設(shè)計(jì)
2.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
RBAC模型中最重要的關(guān)系是權(quán)限和角色、角色和用戶(hù)之間的多對(duì)多的關(guān)系。
在通用權(quán)限管理的設(shè)計(jì)過(guò)程中,我們將一個(gè)應(yīng)用系統(tǒng)細(xì)分為若干個(gè)功能模塊,再根據(jù)需要將功能模塊授權(quán)于不同角色。同時(shí)將用戶(hù)按要求分為不同的角色,一個(gè)用戶(hù)可以是某一個(gè)角色,也可是某幾個(gè)角色的成員,不同角色具有不同的權(quán)限和功能。數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì)如圖1所示。
圖1 數(shù)據(jù)結(jié)構(gòu)
(1)系統(tǒng)操作功能表。即RBAC模型中的“權(quán)限”,將系統(tǒng)各功能模塊的權(quán)限分別管理,如“X添加”等,同時(shí)為每個(gè)功能模塊分別指定一個(gè)唯一操作標(biāo)識(shí)符。操作標(biāo)識(shí)符和序號(hào)都具有唯一標(biāo)識(shí)性,其區(qū)別在于操作標(biāo)識(shí)符具有確定性和可讀性,在設(shè)計(jì)之初就可以定義。
(2)權(quán)限映射表。維系權(quán)限和角色之間的多對(duì)多關(guān)系。
(3)角色表。記錄角色分類(lèi)信息。
(4)人員映射表。維系角色和人員之間的多對(duì)多關(guān)系。
(5)人員信息表。記錄人員屬性,包括用戶(hù)名、密碼、姓名、性別等信息。
2.2 權(quán)限驗(yàn)證
(1)權(quán)限視圖
從系統(tǒng)設(shè)計(jì)的底層結(jié)構(gòu)中看,角色權(quán)限的分配最終還是需要確定到具體用戶(hù)的操作權(quán)限,通過(guò)數(shù)據(jù)庫(kù)中“權(quán)限—角色—用戶(hù)”的關(guān)系表,可建立權(quán)限分配視圖(如表1),系統(tǒng)底層可在權(quán)限視圖的基礎(chǔ)上進(jìn)行用戶(hù)權(quán)限的查詢(xún)和驗(yàn)證。
表1 權(quán)限分配視圖
序號(hào)操作名稱(chēng)操作標(biāo)示符角色用戶(hù)名鎖定狀態(tài)…
1添加貨物BSF_add_object倉(cāng)庫(kù)管理員zs允許
2添加貨物BSF_add_object倉(cāng)庫(kù)管理員ls鎖定
3賬目管理BSF_manage_account會(huì)計(jì)zs允許
4……
(2)權(quán)限驗(yàn)證
權(quán)限驗(yàn)證一般是在用戶(hù)登錄后,在進(jìn)行某項(xiàng)功能操作時(shí)對(duì)其權(quán)限的驗(yàn)證。通過(guò)查詢(xún)權(quán)限視圖使用“select count(*) from權(quán)限視圖 where username = ? And 操作標(biāo)示符=?”可從權(quán)限視圖中檢索用戶(hù)是否具有某項(xiàng)操作的權(quán)限。同時(shí),可將其封裝到permit(string username,string action)函數(shù),便于調(diào)用。
2.3 設(shè)計(jì)與實(shí)現(xiàn)
(1)權(quán)限管理初始化
在系統(tǒng)數(shù)據(jù)庫(kù)中初始化“系統(tǒng)超級(jí)管理員”角色和“admin”用戶(hù),將其相互關(guān)聯(lián),同時(shí),在系統(tǒng)操作功能表中添加“功能管理”、“功能授權(quán)”和“角色管理”三項(xiàng)系統(tǒng)功能及相應(yīng)操作標(biāo)識(shí)符,并分別授權(quán)給“系統(tǒng)超級(jí)管理員”,admin用戶(hù)將獲得系統(tǒng)的初始管理權(quán)限。
(2)業(yè)務(wù)應(yīng)用系統(tǒng)設(shè)計(jì)
基于RBAC模型進(jìn)行統(tǒng)一權(quán)限管理,信息系統(tǒng)在設(shè)計(jì)過(guò)程中應(yīng)按功能設(shè)計(jì)、角色設(shè)計(jì)、系統(tǒng)編碼、權(quán)限驗(yàn)證設(shè)計(jì)的順序進(jìn)行,首先將一個(gè)業(yè)務(wù)應(yīng)用分為若干個(gè)操作功能,為其一一定義唯一的“操作標(biāo)識(shí)符”,并對(duì)操作功能進(jìn)行注冊(cè)。然后設(shè)計(jì)出相應(yīng)的角色。因“操作標(biāo)識(shí)符”具有唯一性和確定性,在系統(tǒng)編碼過(guò)程中,將“操作標(biāo)識(shí)符”直接固化到系統(tǒng)功能中,實(shí)現(xiàn)權(quán)限的驗(yàn)證,如:
Button_click()
{
string str_action=”BSF_XX操作”;
string username=session[“user”].toString();
if (Permit(username,str_action))
// 驗(yàn)證成功
else
//驗(yàn)證失敗
或用參數(shù)形式進(jìn)行傳遞,如:add.aspx?action= BSF_ XX,由頁(yè)面程序獲取action參數(shù)后進(jìn)行驗(yàn)證。
3 結(jié)束語(yǔ)
基于角色的通用權(quán)限管理模塊實(shí)現(xiàn)了信息系統(tǒng)權(quán)限管理的安全高效,通用性強(qiáng),在實(shí)際應(yīng)用中具有較高的效率和較好的效果,方便快捷。
參考文獻(xiàn):
[1]Sandhu R,Conyne EJ,Lfeinstein H,er al.Role based access control models[J].IEEE Computer,1996(02):38-47.
[2]李嵐.基于角色的數(shù)據(jù)庫(kù)安全訪問(wèn)控制的應(yīng)用[J].通信技術(shù),2008,10:70-72.
[3]李向,郭曉蘭,嚴(yán)燁.基于角色的web系統(tǒng)安全策略研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,10:155-156.
作者簡(jiǎn)介:王微來(lái)(1979.10-),男,浙江臨海人,教員,講師,碩士,研究方向:教育技術(shù)。
作者單位:軍事經(jīng)濟(jì)學(xué)院,武漢 430035