黃秀文
?
Web應(yīng)用系統(tǒng)中RBAC模型的研究與實現(xiàn)
黃秀文
(武漢紡織大學(xué) 信息技術(shù)中心,湖北 武漢 430074)
訪問控制是Web系統(tǒng)中安全防范和保護的主要策略,傳統(tǒng)的訪問控制已不能滿足日益增長的安全性需求。本文在web應(yīng)用系統(tǒng)中,使用基于角色的訪問控制(RBAC)模型,通過引入角色的概念,將用戶映射為在一個組織中的某種角色,將訪問權(quán)限授權(quán)給相應(yīng)的角色,根據(jù)用戶在組織內(nèi)所處的角色進行訪問授權(quán)與控制,從而提高了在web系統(tǒng)中權(quán)限分配和訪問控制的靈活性與安全性。
Web系統(tǒng);RABC;權(quán)限管理
隨著信息管理系統(tǒng)朝著多用戶、多應(yīng)用的發(fā)展,用戶可訪問的數(shù)據(jù)資源結(jié)構(gòu)越來越復(fù)雜,規(guī)模越來越大,各種信息系統(tǒng)都面臨著如何對數(shù)據(jù)資源進行有效安全管理的難題。因此,資源的訪問控制在大型信息系統(tǒng)的設(shè)計與開發(fā)中所占的地位日益重要。訪問控制作為系統(tǒng)底層的技術(shù),必須防止非法用戶對系統(tǒng)的訪問和滿足不同用戶對不同數(shù)據(jù)資源的需求。
基于角色的訪問控制(Role-Based Access Control,RBAC)具有傳統(tǒng)訪問控制安全策略的部分特點,又符合現(xiàn)代企業(yè)的管理模式。RBAC借助于角色這個主體,把原來大量的用戶抽象成角色,用戶通過角色來訪問數(shù)據(jù)資源。通過建立這種映射關(guān)系,基于角色的訪問控制策略可以大大提高管理效率,減少授權(quán)管理的復(fù)雜工作,減少管理的開銷,并且還能為管理員提供一個很好的管理安全的環(huán)境。
RBAC模型是在20世紀(jì)70年代提出的,后來在Sandu等人的提倡和推動下得到了很大的發(fā)展。2001年8月美國國家技術(shù)與標(biāo)準(zhǔn)局(NIST)發(fā)表了RBAC建議標(biāo)準(zhǔn)。此建議標(biāo)準(zhǔn)綜合了該領(lǐng)域眾多研究者的共識,主要包括兩個部分:第一部分是RBAC參考模型,它定義了RBAC的通用術(shù)語和模型構(gòu)件并且界定了標(biāo)準(zhǔn)所討論的RBAC領(lǐng)域范圍;第二部分是功能規(guī)范,它定義了RBAC的管理操作,可以分為管理功能,系統(tǒng)支持功能,審查功能等三類。
RBAC參考模型由核心RBAC,層次型RBAC,約束型RBAC這3個模型組成。核心RBAC模型為基本模型,規(guī)定了RBAC系統(tǒng)所必須滿足的最小要求,其結(jié)構(gòu)模型如圖1所示。

圖1 核心RBAC結(jié)構(gòu)模型
由上圖可知,核心RBAC模型由用戶(user)、角色(roles)、對象(objects)、操作(operations)、許可(permissions)等五個基本要素組成。
用戶代表任何直接使用計算機系統(tǒng)的實體,通常指人,也可以是Agent等智能程序。
角色表示系統(tǒng)或者組織中某一特定任務(wù)的責(zé)任和權(quán)力,可以是一個抽象概念,也可以對應(yīng)于實際系統(tǒng)中的特定語義體。角色的劃分需要考慮安全策略以及組織內(nèi)的崗位職責(zé)等因素。
操作是程序可執(zhí)行的反映,被用戶調(diào)用和執(zhí)行。操作的類型取決于實現(xiàn)系統(tǒng)的類型。例如文件系統(tǒng)可能的操作有讀、寫、執(zhí)行等。
對象表示資源(Resource)或目標(biāo),任何訪問控制機制都是為了保護系統(tǒng)的資源。對象包括:文件、目錄,數(shù)據(jù)庫表、行、字段,磁盤空間,打印機,甚至CPU周期等。
許可是對在一個或多個對象上執(zhí)行操作的權(quán)限。由操作和對象組成,表示對對象的一個操作。例如,對于新聞的修改操作。
會話在核心RBAC模型中是比較隱晦的一個元素。RBAC標(biāo)準(zhǔn)定義:每個會話是一個映射,一個用戶到多個角色的映射。當(dāng)一個用戶激活他所有角色的一個子集時,建立一個會話。每個會話和單個用戶關(guān)聯(lián),每個用戶可以關(guān)聯(lián)到一個或多個會話。當(dāng)用戶執(zhí)行一段過程(Process)或一個動作(Action)時,將使用到相關(guān)的Role(所有Role的子集);這個過程就可以稱為一個會話。
在RBAC模型中,核心概念是角色,角色在語義上被構(gòu)造,用于訪問控制策略管理。用戶分配關(guān)系和權(quán)限分配關(guān)系,顯示了RBAC模型中的兩級授權(quán)的模式。一個用戶可被分配一個或多個角色,同時一個角色也可被指定給一個或多個用戶。一個角色可以被分配多個權(quán)限,同時一個權(quán)限也可以被指定給多個角色。通過角色作為橋梁,將用戶和權(quán)限聯(lián)系起來,用戶具有其所屬各個角色的訪問權(quán)限之和。
本文所設(shè)計的權(quán)限管理系統(tǒng)分為權(quán)限管理、訪問控制、系統(tǒng)管理三個模塊。功能模塊圖如圖2所示。

圖2 系統(tǒng)功能模塊圖
2.1.1 權(quán)限管理模塊
權(quán)限管理模塊提供統(tǒng)一的人員信息的維護和授權(quán)管理的功能。它分為用戶管理、角色管理、菜單管理和按鈕管理四個子功能模塊。
(1)用戶管理,該功能模塊用于對系統(tǒng)用戶的定義、維護和用戶-角色的映射。包括用戶定義、用戶查詢、用戶角色配置、增加用戶、刪除用戶和修改用戶等功能。
(2)角色管理,該功能模塊與應(yīng)用系統(tǒng)的要求緊密結(jié)合在一起,根據(jù)職能、部門和崗位,用于對系統(tǒng)角色的定義、維護和角色-權(quán)限的映射。它包括角色的定義、角色查詢、角色權(quán)限配置、增加角色、刪除角色和修改角色等功能。
(3)菜單管理,該功能模塊用于系統(tǒng)菜單的定義、維護。包括添加導(dǎo)航菜單的、刪除導(dǎo)航菜單、修改導(dǎo)航菜單以及對導(dǎo)航菜單進行排序等功能。不同用戶頁面顯示的導(dǎo)航菜單將和管理員定義的導(dǎo)航菜單一致。
(4)按鈕管理,該功能模塊用于頁面管理頁面中的按鈕。包括添加按鈕、刪除按鈕、修改按鈕等功能。管理員根據(jù)需求把需要進行權(quán)限管理的按鈕添加到按鈕管理中,在用戶點擊按鈕時,會對按鈕的URL進行攔截來判斷用戶是否有操作的權(quán)限。
2.1.2訪問控制模塊
訪問控制模塊是通過用戶身份驗證和權(quán)限驗證來實現(xiàn)的,對于權(quán)限管理系統(tǒng)而言,對用戶的身份驗證是至關(guān)重要的,用戶只有具有一定的權(quán)限才能相應(yīng)的進行某些操作,訪問控制模塊圖如圖3所示。

圖3 訪問控制模塊圖
訪問控制分為身份驗證、權(quán)限判斷和邏輯處理三個子功能模塊。
(1)身份驗證
所謂身份認(rèn)證是驗證這個用戶身份是否合法。這一過程是實現(xiàn)授權(quán)和審計控制所必需的前提,也是計算機網(wǎng)絡(luò)安全系統(tǒng)不可缺少的關(guān)鍵環(huán)節(jié)。
傳統(tǒng)的技術(shù)主要采用基于口令的認(rèn)證機制。當(dāng)被認(rèn)證對象要求訪問認(rèn)證服務(wù)時,提供服務(wù)的認(rèn)證方要求被認(rèn)證對象提交口令。認(rèn)證方收到口令后,將其與系統(tǒng)中存儲的口令進行比較,經(jīng)確認(rèn)被認(rèn)證對象是否為合法的訪問者。但是口令以明文方式傳輸,容易在傳輸過程中被截獲,所以對口令進行加密傳輸是防止密碼被截獲的有效方法。系統(tǒng)采用信息摘要算法(MD5)對用戶口令加密。
權(quán)限管理中心對用戶身份是否合法進行判斷。當(dāng)用戶輸入經(jīng)MD5加密后的密碼和從權(quán)限數(shù)據(jù)庫中獲得的密碼相同時,則為合法用戶,然后把用戶的權(quán)限信息保存在Session中,反之為非法用戶,即將頁面將始終停留在登錄頁面。
(2)權(quán)限判斷
權(quán)限驗證是建立在用戶身份驗證的基礎(chǔ)上的,當(dāng)合法用戶登錄時,就可以獲取用戶的所有角色權(quán)限和個人功能權(quán)限,然后將所有權(quán)限并集緩沖到Session中,在整個Session周期中,除非用戶注銷,否則用戶權(quán)限將一直被緩存,當(dāng)用戶請求某一應(yīng)用服務(wù),只需在Session的權(quán)限列表中查找用戶是否具有該操作的功能權(quán)限即可,不必再到數(shù)據(jù)庫中去讀取權(quán)限信息,如果session中有相應(yīng)的權(quán)限,則表示用戶可以執(zhí)行該功能,反之不能,這樣可以極大地減輕服務(wù)器的負(fù)擔(dān),也避免了數(shù)據(jù)庫的頻繁操作而影響系統(tǒng)的性能。
(3)邏輯處理
邏輯處理模塊是在用戶身份驗證和權(quán)限驗證通過或者沒有通過時,系統(tǒng)所做的相應(yīng)處理。
2.1.3 系統(tǒng)管理模塊
該模塊是對系統(tǒng)數(shù)據(jù)庫的配置和系統(tǒng)日志的管理。
數(shù)據(jù)庫管理負(fù)責(zé)配置系統(tǒng)使用的數(shù)據(jù)庫的類型,IP地址,端口號,數(shù)據(jù)庫名稱等信息。
日志管理負(fù)責(zé)配置系統(tǒng)日志的輸出位置,輸出的日志類型等信息。
本系統(tǒng)采用MySQL數(shù)據(jù)庫,包括用戶信息表、菜單信息表、按鈕信息表、角色信息表、用戶角色關(guān)聯(lián)表、角色菜單關(guān)聯(lián)表、角色按鈕關(guān)聯(lián)表共7張數(shù)據(jù)表。數(shù)據(jù)庫的整體設(shè)計如圖4所示:

圖4 數(shù)據(jù)庫整體設(shè)計
系統(tǒng)使用Filter攔截器實現(xiàn)訪問控制機制,攔截器必須實現(xiàn)javax.servlet包中的Filter接口。這個接口定義了三個方法,init()方法在攔截器初始化的時候被調(diào)用、destroy()方法在攔截器銷毀的時候被調(diào)用、doFilter()方法在攔截器被請求時調(diào)用。使用Filter需要先在web.xml中進行配置。配置方式如圖5所示。

圖5 配置Filter
系統(tǒng)通過在web.xml中配置攔截器的攔截路徑來對用戶的請求和操作進行攔截處理,從而完成用戶身份驗證和權(quán)限驗證,達到訪問控制的目的。上面的配置文件中filter-name是指攔截器的名字,filter-class是指MenuFilter這個攔截器對應(yīng)的Java類,url-pattern是指要對什么路徑下的url進行攔截,這里是攔截menu下的所有路徑。
在實現(xiàn)用戶身份驗證的過程中,系統(tǒng)利用MD5信息摘要算法對用戶口令進行加密以防止用戶口令被竊取,用以加強保證系統(tǒng)的安全性。
首先獲得MD5摘要算法的 MessageDigest 對象,然后使用指定的字節(jié)更新摘要,digest()最后確定返回md5 hash值,返回值為8為字符串,因為md5 hash值是16位的hex值,實際上就是8位的字符。最后把密文轉(zhuǎn)換成十六進制的字符串形式返回。
用戶身份認(rèn)證就是通過搜索用戶信息表,對用戶登錄的ID和密碼進行鑒別,從而判定該用戶合法還是非法。
權(quán)限驗證階段要做的就是:根據(jù)認(rèn)證階段記錄下的用戶信息,從數(shù)據(jù)庫權(quán)限分配表中取出該用戶擁有的權(quán)限,將這些記錄在userMenuList和userButtonList等集合中,這樣,當(dāng)用戶請求某一應(yīng)用服務(wù)時,系統(tǒng)就根據(jù)應(yīng)用對應(yīng)的組織和需要的權(quán)限在對應(yīng)的List集合中查找,根據(jù)查找結(jié)果來判斷用戶是否可以對應(yīng)用進行操作,如果這一應(yīng)用服務(wù)的權(quán)限在這個用戶的功能權(quán)限中,則用戶可以對應(yīng)用服務(wù)操作,如果不在用戶的功能權(quán)限之內(nèi),則跳轉(zhuǎn)到權(quán)限不足界面。
用于權(quán)限驗證的攔截器的部分代碼如圖6所示。

圖6 攔截器權(quán)限驗證
先從session中獲取用戶,判斷用戶是否登錄,沒有登錄則跳轉(zhuǎn)到登錄界面。對已登錄的用戶才能進行權(quán)限認(rèn)證,權(quán)限認(rèn)證在 judgeAuth() 這個方法中實現(xiàn)。在用戶登錄成功時,會把用戶擁有的權(quán)限保存在List集合中,這里對比List集合中擁有的權(quán)限,如果擁有此操作的權(quán)限就繼續(xù)執(zhí)行,否則就跳轉(zhuǎn)到相應(yīng)的提示界面。
用戶身份認(rèn)證和權(quán)限認(rèn)證相結(jié)合,有效的防止了非法用戶的登錄和對系統(tǒng)的越權(quán)使用、篡改等操作,很好的實現(xiàn)了組件的安全機制。
權(quán)限管理系統(tǒng)主要是對系統(tǒng)的權(quán)限,角色,用戶三個對象進行管理,把繁瑣、重復(fù)的操作簡單化、統(tǒng)一化。在web應(yīng)用系統(tǒng)中構(gòu)建一個通用的權(quán)限管理平臺,有利于集中處理更有價值、更重要的事務(wù),整體提高企業(yè)辦事效率,增強信息的可控性,提高執(zhí)行力,使企業(yè)管理趨于完善,最終實現(xiàn)市場競爭力全面提升的目標(biāo)。本文以基于角色的訪問控制為原理,設(shè)計并實現(xiàn)了一個能提供完整的用戶身份認(rèn)證和集中的應(yīng)用授權(quán)體系的權(quán)限管理系統(tǒng),該系統(tǒng)權(quán)限分配直觀、擴展性好、授權(quán)靈活,能夠為多種類型的應(yīng)用系統(tǒng)提供系統(tǒng)一的授權(quán)管理和安全服務(wù)。實踐證明基于角色的訪問控制技術(shù)能夠有效地解決用戶權(quán)限的管理問題,降低了系統(tǒng)設(shè)計的復(fù)雜度。
[1] 王振江,劉強.基于RBAC的擴展訪問控制模型[J].計算機工程與應(yīng)用,2005,(35).
[2] 梅蘇文,高縣明.基于角色權(quán)限管理模型的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機,2002,(11).
[3] 朱磊,周明輝.一種面向服務(wù)的權(quán)限管理模型[J].計算機學(xué)報,2005,(4).
[4] 暴志剛,胡艷軍.基于Web的系統(tǒng)權(quán)限管理實現(xiàn)方法[J].計算機工程,2006,(1).
[5] 葉身興.基于角色訪問控制管理模型的研究與實現(xiàn)[D].武漢:華中科技大學(xué),2005.
[6] 王亞民.基于RBAC的信息系統(tǒng)訪問控制模型[J].情報雜志,2005,(10).
[7] D. Ferraiolo,R.Kuhn.Role-Based Access Controls[A]. In 15th NIST_NCSC National Computer Security Conference[C]. Baltimore,MD,1992.
[8] 李興華,王月清.Java Web開發(fā)實戰(zhàn)經(jīng)典基礎(chǔ)篇[M].北京:清華大學(xué)出版社,2010.8.
Research and Application of Role-Based Access Control Model in Web Application System
HUANG Xiu-wen
(Modern Education Centre, Wuhan Textile University, Wuhan Hubei 430074, China)
Access control is the main strategy of security and protection in Web system, the traditional access control can not meet the needs of the growing security. With using the role based access control (RBAC) model and introducing the concept of the role in the web system, the user is mapped to a role in an organization, access to the corresponding role authorization, access authorization and control according to the user's role in an organization, so as to improve the web system flexibility and security permissions and access control.
Web system; role-based access control; permission manage
TP393.08
A
2095-414X(2015)03-0090-05
黃秀文(1969-),女,中級,研究方向:計算機信息管理系統(tǒng).