劉曉玲 郭龍
摘要:隨著計算機(jī)網(wǎng)絡(luò)信息技術(shù)的不斷發(fā)展,用戶權(quán)限管理已經(jīng)成為一個日益突出的問題。該文針對基于傳統(tǒng)的RBAC模型在權(quán)限管理中存在的一些不足,分析了目前用戶權(quán)限管理結(jié)構(gòu)的設(shè)計,并以學(xué)校辦公自動化管理系統(tǒng)中的用戶權(quán)限設(shè)計為例,給出了一種基于角色的用戶權(quán)限管理的新權(quán)限管理方法的設(shè)計與實現(xiàn),實踐證明此方法在辦公自動化管理系統(tǒng)的適用性、可操作性及安全性等方面都有很大提高。
關(guān)鍵詞:RBAC;用戶權(quán)限;安全;模塊
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)07-1487-04
隨著計算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展及應(yīng)用的日益普及,全球正在向大數(shù)據(jù)道路上發(fā)展,尤其是近年來數(shù)字信息化技術(shù)的飛速發(fā)展,信息數(shù)據(jù)量也呈爆炸性增長態(tài)勢。在這種態(tài)勢的影響下,企業(yè)、政府、教育機(jī)構(gòu)等各行各業(yè)越來越注重辦公自動化系統(tǒng)的應(yīng)用。然而辦公自動化系統(tǒng)的應(yīng)用為工作帶來信息資源共享等各種便利的同時也帶來了種種的安全隱患,所以必須要加強(qiáng)系統(tǒng)的用戶權(quán)限管理機(jī)制,既要充分保證合法用戶在權(quán)限范圍內(nèi)訪問系統(tǒng),又要阻止非法用戶的入侵確保系統(tǒng)安全。
網(wǎng)絡(luò)為信息的傳播、交換和共享提供了快捷有效的方法,但是由于B/S(Browser/Server)模式具有分布性的特點,用戶工作界面主要是通過瀏覽器來實現(xiàn)的。在B/S模式下,每個客戶端都只需安裝瀏覽器,通過瀏覽器來訪問數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù),如果缺少有效地用戶權(quán)限檢測機(jī)制,B/S 系統(tǒng)中就會面臨非法訪問的危險,存在嚴(yán)重的安全隱患。因此,B/S模式下必須建立一個或多個用戶權(quán)限檢測系統(tǒng),以實現(xiàn)合法用戶的正常權(quán)限授權(quán)功能,同時將非法入侵者拒之門外。該文基于角色的訪問控制模型-RBAC的基本思想,設(shè)計出一種新的用戶權(quán)限檢測控制方法,實踐證明此方法在辦公自動化管理系統(tǒng)的適用性、可操作性及安全性等方面都有很大提高。
1 RBAC模型概述
基于角色管理權(quán)限的思想早在70年代就已經(jīng)出現(xiàn),但是第一個RBAC(Role-Based Access Control)模型是美國國家標(biāo)準(zhǔn)化和技術(shù)委員會(National Institute of Standards and Technology, NIST)的Ferraiolo和Kuhn在1992年提出的[1]。
角色代表了訪問主體所具有的職權(quán)和責(zé)任,系統(tǒng)管理員負(fù)責(zé)將訪問許可權(quán)分配給一定的角色,每個用戶可以扮演不同的角色,這樣就使得每一個用戶都能夠獲得所扮演角色所擁有的訪問許可權(quán)。例如,學(xué)校中有輔導(dǎo)員、教師、學(xué)生及各種管理職員等角色,教師角色具有上傳成績、評價學(xué)生,查詢成績等權(quán)限,學(xué)生角色具有查詢成績、自我評價、反饋意見等權(quán)限。在實際應(yīng)用中,通常一個角色會擁有多個訪問許可權(quán)限同時也可以由多個用戶來扮演,同一個權(quán)限可以授權(quán)給多個角色,一個用戶也可以扮演多個角色,如一個用戶同時扮演教師和教務(wù)管理人員兩個角色。RBAC模型中,角色是其核心,它從控制主體的角度出發(fā),由系統(tǒng)管理員依據(jù)管理中相對穩(wěn)定的職權(quán)和責(zé)任對角色進(jìn)行劃分,將訪問權(quán)限與角色緊密聯(lián)系,一旦用戶被指定扮演某個角色,那么該用戶就可以完成該角色所擁有的全部職能[2]。
圖1描述了RBAC模型的基本框架,RBAC模型將整個系統(tǒng)的訪問控制分兩步實現(xiàn):第一步首先對角色進(jìn)行分配,將用戶與角色聯(lián)系起來,通過角色將用戶與訪問權(quán)限從邏輯上分離開;然后指定權(quán)限,將角色與訪問權(quán)限聯(lián)系起來[3]。
圖1 RBAC模型基本框架
2 用戶權(quán)限控制子系統(tǒng)的設(shè)計與實現(xiàn)
2.1 用戶權(quán)限設(shè)計方案
通過上面對RBAC模型特點的分析可以看出,系統(tǒng)為了實現(xiàn)廣泛的適用性、良好的可伸縮性及較高的安全性,必須從新的角度審視用戶權(quán)限問題。一種思路是將系統(tǒng)中的所有功能權(quán)限與用戶獨立進(jìn)行設(shè)置,這樣設(shè)計的優(yōu)點是對于每個用戶,系統(tǒng)管理員都可以分別進(jìn)行設(shè)置,使其可以擁有系統(tǒng)功能模塊的細(xì)微權(quán)限。同時,這種設(shè)計在第一次使用系統(tǒng)時又存在很大的缺陷,它需要對所有的用戶進(jìn)行權(quán)限設(shè)置,這是一項大量的、不必要的重復(fù)性工作。
本文基于角色的訪問控制模型-RBAC的基本框架,設(shè)計出一種新的用戶權(quán)限檢測控制方法,利用了直接授權(quán)和間接授權(quán)兩種方式對用戶權(quán)限進(jìn)行管理控制。直接授權(quán)方法直接將系統(tǒng)中具體的功能權(quán)限賦予指定用戶,例如將成績錄入權(quán)限定義為獨立的功能模塊或功能按鈕,授權(quán)給扮演教師角色的某用戶;間接授權(quán)法只對用戶分配某個特定的角色,而不直接授予權(quán)限。由于角色即是權(quán)限的集合,它代表了訪問主體所具有的職權(quán)和責(zé)任,所以用戶根據(jù)其職能和責(zé)任被授權(quán)后,即可享有相應(yīng)角色所擁有的所有權(quán)限。
在實際應(yīng)用中,由系統(tǒng)管理員對具有不同職能和責(zé)任的用戶進(jìn)行判斷、分類,構(gòu)造出各類角色,將直接授權(quán)法與間接授權(quán)法結(jié)合使用,對于不同的角色賦予完成特定職責(zé)的權(quán)限,然后再將角色分配給不同的用戶。如果需要進(jìn)一步區(qū)分細(xì)化具有相同角色的用戶權(quán)限時,再通過直接授權(quán)法授給用戶具體的權(quán)限[4]。
2.2 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)采用了三層B/S結(jié)構(gòu)模型,如圖2所示。在三層B/S結(jié)構(gòu)中,客戶端不需要其他任何組件,只需安裝瀏覽器,系統(tǒng)所需的所有數(shù)據(jù)庫、應(yīng)用程序以及其他組件都在服務(wù)器端存儲??蛻舳藶g覽器向Web應(yīng)用服務(wù)器發(fā)送用戶信息,Web應(yīng)用服務(wù)器利用應(yīng)用程序服務(wù)器向數(shù)據(jù)庫服務(wù)器提出請求,數(shù)據(jù)庫服務(wù)器再根據(jù)請求響應(yīng)并將處理結(jié)果返回給Web應(yīng)用服務(wù)器,最后Web應(yīng)用服務(wù)器將結(jié)果傳送給瀏覽器。B/S結(jié)構(gòu)中,由于所有數(shù)據(jù)、程序的創(chuàng)建、存儲、管理、維護(hù)及備份等操作都是在服務(wù)器端進(jìn)行,所以充分保證了數(shù)據(jù)的及時性和完整性[5]。
本系統(tǒng)在Eclipse開發(fā)環(huán)境下設(shè)計實現(xiàn),采用了目前比較流行的Web應(yīng)用開發(fā)技術(shù)J2EE作為前臺開發(fā)工具,Web應(yīng)用服務(wù)器采用的是開源的Tomcat 5. 0,后臺數(shù)據(jù)庫服務(wù)器的支撐采用的是Microsoft SQL Server 2005。
2.3 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)訪問層組件提供了數(shù)據(jù)與存儲在底層存儲介質(zhì)中的數(shù)據(jù)庫或其他數(shù)據(jù)服務(wù)程序之間實現(xiàn)高效、安全地傳遞功能,所以數(shù)據(jù)訪問層的設(shè)計是數(shù)據(jù)庫設(shè)計中的重要環(huán)節(jié)。數(shù)據(jù)訪問層中設(shè)計使用JDBC組件對SQL Server 2005數(shù)據(jù)庫進(jìn)行了專門的優(yōu)化,例如自動管理連接池,最大提高性能以減少活動的連接數(shù)量等。在進(jìn)行數(shù)據(jù)訪問層設(shè)計時需要考慮訪問的數(shù)據(jù)源,每個數(shù)據(jù)源的連接、訪問方式,相關(guān)的設(shè)計模式等問題。為了最大限度地提高系統(tǒng)效率和安全性能,本系統(tǒng)設(shè)計在數(shù)據(jù)訪問層中采用存儲過程來處理數(shù)據(jù)、優(yōu)化查詢。如果在程序中使用SQL語句處理數(shù)據(jù),那么對SQL語句做任何的修改,都需要重新對程序進(jìn)行編譯,利用存儲過程則避免了這項工作。另外,由于系統(tǒng)可以針對存儲過程中的語句對數(shù)據(jù)庫執(zhí)行優(yōu)化處理操作,所以使用存儲過程能夠提供比直接使用SQL語句更高的性能。在安全性方面,存儲過程同樣能夠為系統(tǒng)提供額外的安全保障,非常重要的一點就是系統(tǒng)設(shè)計時只將必須執(zhí)行的存儲過程權(quán)限分配給登錄數(shù)據(jù)庫的用戶,訪問者并不是直接從數(shù)據(jù)庫中直接獲取數(shù)據(jù)而是通過從存儲過程來獲得數(shù)據(jù)的,所以即使應(yīng)用程序受到SQL腳本的入侵攻擊,入侵者對系統(tǒng)的破壞也非常有限,從而保護(hù)了數(shù)據(jù)庫中的數(shù)據(jù)免受破壞或偷竊,同時也保證合法用戶對數(shù)據(jù)源的正常訪問。
依據(jù)RBAC模型的基本思想并結(jié)合實際功能需求分析,為了支撐以上給出的基于角色的用戶權(quán)限管理子系統(tǒng),數(shù)據(jù)庫設(shè)計一共創(chuàng)建了六個基本表,表名及功能分別如下。
1)模塊功能表
模塊功能表(Modules)定義了系統(tǒng)的功能實體及欄目,包含模塊ID、模塊名稱等7個字段,表1描述了Modules的表結(jié)構(gòu)。
其中Operations字段存儲的是模塊頁面上要進(jìn)行管理的按鈕連接字符串。對于用戶權(quán)限控制一般只涉及添加、修改、刪除等操作,如添加用戶、刪除角色、權(quán)限修改等,所以本系統(tǒng)利用數(shù)字字符表示各個功能按鈕的作用,如1代表添加(用戶、權(quán)限、角色),2代表修改(用戶、權(quán)限、角色),3代表刪除(用戶、權(quán)限、角色)等。功能模塊的所有按鈕連接字符串都用‘, 分隔,例如在某模塊頁面上包含添加、刪除權(quán)限管理按鈕,則該模塊對應(yīng)的Operations字段值為“1, 3”。
[名稱\&功能描述\&Login Action. Java\&提供用戶登陸服務(wù),根據(jù)輸入的用戶名和密碼判斷該用戶是否為合法用戶,同時存儲用戶的登錄信息。\&Modules Form. Java\&將模塊功能表中的字段轉(zhuǎn)化為實例對象。\&Modules Dao. Java\&通過Find Tree(int Users ID)方法調(diào)用Authority存儲過程,遍歷符合登錄用戶權(quán)限的模塊功能菜單。\&Authority Action. Java\&通過加載Login Action. Java以獲取登錄用戶的Users ID,再調(diào)用Modules Dao. Java中的Find Tree(int Users ID)方法對指定用戶進(jìn)行權(quán)限分配。\&Login Out Action. Java\&用于記錄用戶的系統(tǒng)注銷日志。\&]
2.5 用戶權(quán)限管理的實現(xiàn)
在本系統(tǒng)中,用戶的權(quán)限管理采用的是兩級授權(quán)模式,用戶登錄時,系統(tǒng)首先根據(jù)輸入的登錄信息來判斷是否為合法用戶。為了提高安全性能,系統(tǒng)使用MD5算法對用戶密碼進(jìn)行了加密。如果系統(tǒng)確認(rèn)登錄者是合法用戶,下一步再對用戶所扮演的角色進(jìn)行判斷,如果用戶角色表(表6)中Roles ID字段值不為空,就需要查詢角色權(quán)限表(表5),最終對系統(tǒng)中的每個模塊功能的權(quán)限按查詢記錄進(jìn)行設(shè)置,最終實現(xiàn)不同用戶登錄同一系統(tǒng),由于授予的權(quán)限不同,進(jìn)入不同的操作界面。
3 結(jié)束語
本文基于角色訪問控制模型的基本思想,設(shè)計并實現(xiàn)了辦公自動化系統(tǒng)中用戶權(quán)限管理子系統(tǒng)。與其它類型的權(quán)限管理系統(tǒng)比較而言,該系統(tǒng)主要具有兩大特點:一是本系統(tǒng)將直接授權(quán)和間接授權(quán)兩種授權(quán)模式相結(jié)合,模塊頁面上的每一個按鈕都能夠?qū)?yīng)具體的用戶權(quán)限,從而使系統(tǒng)具有較高的靈活性和可擴(kuò)展性;二是本系統(tǒng)采用的是目前比較流行的Web應(yīng)用開發(fā)技術(shù)J2EE,并利用Struts框架實現(xiàn)了B/S三層結(jié)構(gòu),使得系統(tǒng)在安全性和可移植性等方面的性能都有很大的提高。
參考文獻(xiàn):
[1] David F. Ferraiolo and D. Richard Kuhn, Role-Based Access Controls[C].15th National Computer Security Conference (1992) Baltimore, 1992:554-563.
[2] 王延彬,許林英,楊海琛. OA系統(tǒng)中基于角色的用戶權(quán)限管理[J].微處理機(jī), 2008, 8(4): 64-67.
[3] 倪東英,張曉麗.基于RBAC的用戶權(quán)限管理的設(shè)計與實現(xiàn)[J].濟(jì)南大學(xué)學(xué)報:自然科學(xué)版, 2010,24(2): 167-171.
[4] 王春泉.基于J2EE的用戶權(quán)限管理的研究與實現(xiàn)[J].山東輕工業(yè)學(xué)院學(xué)報, 2010(8): 60-63.
[5] 楊振宇,耿玉水,王新剛.基于B /S模式可復(fù)用的用戶權(quán)限管理的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件, 2007,24(6): 123-125.
[6] RayLai. J2EE平臺Web Services[M].周斌,劉亞萍,馮艷玲,等,譯. 北京:電子工業(yè)出版社, 2006.