黃秀文
?
Web應(yīng)用系統(tǒng)中RBAC模型的研究與實(shí)現(xiàn)
黃秀文
(武漢紡織大學(xué) 信息技術(shù)中心,湖北 武漢 430074)
訪問(wèn)控制是Web系統(tǒng)中安全防范和保護(hù)的主要策略,傳統(tǒng)的訪問(wèn)控制已不能滿足日益增長(zhǎng)的安全性需求。本文在web應(yīng)用系統(tǒng)中,使用基于角色的訪問(wèn)控制(RBAC)模型,通過(guò)引入角色的概念,將用戶映射為在一個(gè)組織中的某種角色,將訪問(wèn)權(quán)限授權(quán)給相應(yīng)的角色,根據(jù)用戶在組織內(nèi)所處的角色進(jìn)行訪問(wèn)授權(quán)與控制,從而提高了在web系統(tǒng)中權(quán)限分配和訪問(wèn)控制的靈活性與安全性。
Web系統(tǒng);RABC;權(quán)限管理
隨著信息管理系統(tǒng)朝著多用戶、多應(yīng)用的發(fā)展,用戶可訪問(wèn)的數(shù)據(jù)資源結(jié)構(gòu)越來(lái)越復(fù)雜,規(guī)模越來(lái)越大,各種信息系統(tǒng)都面臨著如何對(duì)數(shù)據(jù)資源進(jìn)行有效安全管理的難題。因此,資源的訪問(wèn)控制在大型信息系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)中所占的地位日益重要。訪問(wèn)控制作為系統(tǒng)底層的技術(shù),必須防止非法用戶對(duì)系統(tǒng)的訪問(wèn)和滿足不同用戶對(duì)不同數(shù)據(jù)資源的需求。
基于角色的訪問(wèn)控制(Role-Based Access Control,RBAC)具有傳統(tǒng)訪問(wèn)控制安全策略的部分特點(diǎn),又符合現(xiàn)代企業(yè)的管理模式。RBAC借助于角色這個(gè)主體,把原來(lái)大量的用戶抽象成角色,用戶通過(guò)角色來(lái)訪問(wèn)數(shù)據(jù)資源。通過(guò)建立這種映射關(guān)系,基于角色的訪問(wèn)控制策略可以大大提高管理效率,減少授權(quán)管理的復(fù)雜工作,減少管理的開(kāi)銷,并且還能為管理員提供一個(gè)很好的管理安全的環(huán)境。
RBAC模型是在20世紀(jì)70年代提出的,后來(lái)在Sandu等人的提倡和推動(dòng)下得到了很大的發(fā)展。2001年8月美國(guó)國(guó)家技術(shù)與標(biāo)準(zhǔn)局(NIST)發(fā)表了RBAC建議標(biāo)準(zhǔn)。此建議標(biāo)準(zhǔn)綜合了該領(lǐng)域眾多研究者的共識(shí),主要包括兩個(gè)部分:第一部分是RBAC參考模型,它定義了RBAC的通用術(shù)語(yǔ)和模型構(gòu)件并且界定了標(biāo)準(zhǔn)所討論的RBAC領(lǐng)域范圍;第二部分是功能規(guī)范,它定義了RBAC的管理操作,可以分為管理功能,系統(tǒng)支持功能,審查功能等三類。
RBAC參考模型由核心RBAC,層次型RBAC,約束型RBAC這3個(gè)模型組成。核心RBAC模型為基本模型,規(guī)定了RBAC系統(tǒng)所必須滿足的最小要求,其結(jié)構(gòu)模型如圖1所示。
圖1 核心RBAC結(jié)構(gòu)模型
由上圖可知,核心RBAC模型由用戶(user)、角色(roles)、對(duì)象(objects)、操作(operations)、許可(permissions)等五個(gè)基本要素組成。
用戶代表任何直接使用計(jì)算機(jī)系統(tǒng)的實(shí)體,通常指人,也可以是Agent等智能程序。
角色表示系統(tǒng)或者組織中某一特定任務(wù)的責(zé)任和權(quán)力,可以是一個(gè)抽象概念,也可以對(duì)應(yīng)于實(shí)際系統(tǒng)中的特定語(yǔ)義體。角色的劃分需要考慮安全策略以及組織內(nèi)的崗位職責(zé)等因素。
操作是程序可執(zhí)行的反映,被用戶調(diào)用和執(zhí)行。操作的類型取決于實(shí)現(xiàn)系統(tǒng)的類型。例如文件系統(tǒng)可能的操作有讀、寫(xiě)、執(zhí)行等。
對(duì)象表示資源(Resource)或目標(biāo),任何訪問(wèn)控制機(jī)制都是為了保護(hù)系統(tǒng)的資源。對(duì)象包括:文件、目錄,數(shù)據(jù)庫(kù)表、行、字段,磁盤(pán)空間,打印機(jī),甚至CPU周期等。
許可是對(duì)在一個(gè)或多個(gè)對(duì)象上執(zhí)行操作的權(quán)限。由操作和對(duì)象組成,表示對(duì)對(duì)象的一個(gè)操作。例如,對(duì)于新聞的修改操作。
會(huì)話在核心RBAC模型中是比較隱晦的一個(gè)元素。RBAC標(biāo)準(zhǔn)定義:每個(gè)會(huì)話是一個(gè)映射,一個(gè)用戶到多個(gè)角色的映射。當(dāng)一個(gè)用戶激活他所有角色的一個(gè)子集時(shí),建立一個(gè)會(huì)話。每個(gè)會(huì)話和單個(gè)用戶關(guān)聯(lián),每個(gè)用戶可以關(guān)聯(lián)到一個(gè)或多個(gè)會(huì)話。當(dāng)用戶執(zhí)行一段過(guò)程(Process)或一個(gè)動(dòng)作(Action)時(shí),將使用到相關(guān)的Role(所有Role的子集);這個(gè)過(guò)程就可以稱為一個(gè)會(huì)話。
在RBAC模型中,核心概念是角色,角色在語(yǔ)義上被構(gòu)造,用于訪問(wèn)控制策略管理。用戶分配關(guān)系和權(quán)限分配關(guān)系,顯示了RBAC模型中的兩級(jí)授權(quán)的模式。一個(gè)用戶可被分配一個(gè)或多個(gè)角色,同時(shí)一個(gè)角色也可被指定給一個(gè)或多個(gè)用戶。一個(gè)角色可以被分配多個(gè)權(quán)限,同時(shí)一個(gè)權(quán)限也可以被指定給多個(gè)角色。通過(guò)角色作為橋梁,將用戶和權(quán)限聯(lián)系起來(lái),用戶具有其所屬各個(gè)角色的訪問(wèn)權(quán)限之和。
本文所設(shè)計(jì)的權(quán)限管理系統(tǒng)分為權(quán)限管理、訪問(wèn)控制、系統(tǒng)管理三個(gè)模塊。功能模塊圖如圖2所示。
圖2 系統(tǒng)功能模塊圖
2.1.1 權(quán)限管理模塊
權(quán)限管理模塊提供統(tǒng)一的人員信息的維護(hù)和授權(quán)管理的功能。它分為用戶管理、角色管理、菜單管理和按鈕管理四個(gè)子功能模塊。
(1)用戶管理,該功能模塊用于對(duì)系統(tǒng)用戶的定義、維護(hù)和用戶-角色的映射。包括用戶定義、用戶查詢、用戶角色配置、增加用戶、刪除用戶和修改用戶等功能。
(2)角色管理,該功能模塊與應(yīng)用系統(tǒng)的要求緊密結(jié)合在一起,根據(jù)職能、部門(mén)和崗位,用于對(duì)系統(tǒng)角色的定義、維護(hù)和角色-權(quán)限的映射。它包括角色的定義、角色查詢、角色權(quán)限配置、增加角色、刪除角色和修改角色等功能。
(3)菜單管理,該功能模塊用于系統(tǒng)菜單的定義、維護(hù)。包括添加導(dǎo)航菜單的、刪除導(dǎo)航菜單、修改導(dǎo)航菜單以及對(duì)導(dǎo)航菜單進(jìn)行排序等功能。不同用戶頁(yè)面顯示的導(dǎo)航菜單將和管理員定義的導(dǎo)航菜單一致。
(4)按鈕管理,該功能模塊用于頁(yè)面管理頁(yè)面中的按鈕。包括添加按鈕、刪除按鈕、修改按鈕等功能。管理員根據(jù)需求把需要進(jìn)行權(quán)限管理的按鈕添加到按鈕管理中,在用戶點(diǎn)擊按鈕時(shí),會(huì)對(duì)按鈕的URL進(jìn)行攔截來(lái)判斷用戶是否有操作的權(quán)限。
2.1.2訪問(wèn)控制模塊
訪問(wèn)控制模塊是通過(guò)用戶身份驗(yàn)證和權(quán)限驗(yàn)證來(lái)實(shí)現(xiàn)的,對(duì)于權(quán)限管理系統(tǒng)而言,對(duì)用戶的身份驗(yàn)證是至關(guān)重要的,用戶只有具有一定的權(quán)限才能相應(yīng)的進(jìn)行某些操作,訪問(wèn)控制模塊圖如圖3所示。
圖3 訪問(wèn)控制模塊圖
訪問(wèn)控制分為身份驗(yàn)證、權(quán)限判斷和邏輯處理三個(gè)子功能模塊。
(1)身份驗(yàn)證
所謂身份認(rèn)證是驗(yàn)證這個(gè)用戶身份是否合法。這一過(guò)程是實(shí)現(xiàn)授權(quán)和審計(jì)控制所必需的前提,也是計(jì)算機(jī)網(wǎng)絡(luò)安全系統(tǒng)不可缺少的關(guān)鍵環(huán)節(jié)。
傳統(tǒng)的技術(shù)主要采用基于口令的認(rèn)證機(jī)制。當(dāng)被認(rèn)證對(duì)象要求訪問(wèn)認(rèn)證服務(wù)時(shí),提供服務(wù)的認(rèn)證方要求被認(rèn)證對(duì)象提交口令。認(rèn)證方收到口令后,將其與系統(tǒng)中存儲(chǔ)的口令進(jìn)行比較,經(jīng)確認(rèn)被認(rèn)證對(duì)象是否為合法的訪問(wèn)者。但是口令以明文方式傳輸,容易在傳輸過(guò)程中被截獲,所以對(duì)口令進(jìn)行加密傳輸是防止密碼被截獲的有效方法。系統(tǒng)采用信息摘要算法(MD5)對(duì)用戶口令加密。
權(quán)限管理中心對(duì)用戶身份是否合法進(jìn)行判斷。當(dāng)用戶輸入經(jīng)MD5加密后的密碼和從權(quán)限數(shù)據(jù)庫(kù)中獲得的密碼相同時(shí),則為合法用戶,然后把用戶的權(quán)限信息保存在Session中,反之為非法用戶,即將頁(yè)面將始終停留在登錄頁(yè)面。
(2)權(quán)限判斷
權(quán)限驗(yàn)證是建立在用戶身份驗(yàn)證的基礎(chǔ)上的,當(dāng)合法用戶登錄時(shí),就可以獲取用戶的所有角色權(quán)限和個(gè)人功能權(quán)限,然后將所有權(quán)限并集緩沖到Session中,在整個(gè)Session周期中,除非用戶注銷,否則用戶權(quán)限將一直被緩存,當(dāng)用戶請(qǐng)求某一應(yīng)用服務(wù),只需在Session的權(quán)限列表中查找用戶是否具有該操作的功能權(quán)限即可,不必再到數(shù)據(jù)庫(kù)中去讀取權(quán)限信息,如果session中有相應(yīng)的權(quán)限,則表示用戶可以執(zhí)行該功能,反之不能,這樣可以極大地減輕服務(wù)器的負(fù)擔(dān),也避免了數(shù)據(jù)庫(kù)的頻繁操作而影響系統(tǒng)的性能。
(3)邏輯處理
邏輯處理模塊是在用戶身份驗(yàn)證和權(quán)限驗(yàn)證通過(guò)或者沒(méi)有通過(guò)時(shí),系統(tǒng)所做的相應(yīng)處理。
2.1.3 系統(tǒng)管理模塊
該模塊是對(duì)系統(tǒng)數(shù)據(jù)庫(kù)的配置和系統(tǒng)日志的管理。
數(shù)據(jù)庫(kù)管理負(fù)責(zé)配置系統(tǒng)使用的數(shù)據(jù)庫(kù)的類型,IP地址,端口號(hào),數(shù)據(jù)庫(kù)名稱等信息。
日志管理負(fù)責(zé)配置系統(tǒng)日志的輸出位置,輸出的日志類型等信息。
本系統(tǒng)采用MySQL數(shù)據(jù)庫(kù),包括用戶信息表、菜單信息表、按鈕信息表、角色信息表、用戶角色關(guān)聯(lián)表、角色菜單關(guān)聯(lián)表、角色按鈕關(guān)聯(lián)表共7張數(shù)據(jù)表。數(shù)據(jù)庫(kù)的整體設(shè)計(jì)如圖4所示:
圖4 數(shù)據(jù)庫(kù)整體設(shè)計(jì)
系統(tǒng)使用Filter攔截器實(shí)現(xiàn)訪問(wèn)控制機(jī)制,攔截器必須實(shí)現(xiàn)javax.servlet包中的Filter接口。這個(gè)接口定義了三個(gè)方法,init()方法在攔截器初始化的時(shí)候被調(diào)用、destroy()方法在攔截器銷毀的時(shí)候被調(diào)用、doFilter()方法在攔截器被請(qǐng)求時(shí)調(diào)用。使用Filter需要先在web.xml中進(jìn)行配置。配置方式如圖5所示。
圖5 配置Filter
系統(tǒng)通過(guò)在web.xml中配置攔截器的攔截路徑來(lái)對(duì)用戶的請(qǐng)求和操作進(jìn)行攔截處理,從而完成用戶身份驗(yàn)證和權(quán)限驗(yàn)證,達(dá)到訪問(wèn)控制的目的。上面的配置文件中filter-name是指攔截器的名字,filter-class是指MenuFilter這個(gè)攔截器對(duì)應(yīng)的Java類,url-pattern是指要對(duì)什么路徑下的url進(jìn)行攔截,這里是攔截menu下的所有路徑。
在實(shí)現(xiàn)用戶身份驗(yàn)證的過(guò)程中,系統(tǒng)利用MD5信息摘要算法對(duì)用戶口令進(jìn)行加密以防止用戶口令被竊取,用以加強(qiáng)保證系統(tǒng)的安全性。
首先獲得MD5摘要算法的 MessageDigest 對(duì)象,然后使用指定的字節(jié)更新摘要,digest()最后確定返回md5 hash值,返回值為8為字符串,因?yàn)閙d5 hash值是16位的hex值,實(shí)際上就是8位的字符。最后把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式返回。
用戶身份認(rèn)證就是通過(guò)搜索用戶信息表,對(duì)用戶登錄的ID和密碼進(jìn)行鑒別,從而判定該用戶合法還是非法。
權(quán)限驗(yàn)證階段要做的就是:根據(jù)認(rèn)證階段記錄下的用戶信息,從數(shù)據(jù)庫(kù)權(quán)限分配表中取出該用戶擁有的權(quán)限,將這些記錄在userMenuList和userButtonList等集合中,這樣,當(dāng)用戶請(qǐng)求某一應(yīng)用服務(wù)時(shí),系統(tǒng)就根據(jù)應(yīng)用對(duì)應(yīng)的組織和需要的權(quán)限在對(duì)應(yīng)的List集合中查找,根據(jù)查找結(jié)果來(lái)判斷用戶是否可以對(duì)應(yīng)用進(jìn)行操作,如果這一應(yīng)用服務(wù)的權(quán)限在這個(gè)用戶的功能權(quán)限中,則用戶可以對(duì)應(yīng)用服務(wù)操作,如果不在用戶的功能權(quán)限之內(nèi),則跳轉(zhuǎn)到權(quán)限不足界面。
用于權(quán)限驗(yàn)證的攔截器的部分代碼如圖6所示。
圖6 攔截器權(quán)限驗(yàn)證
先從session中獲取用戶,判斷用戶是否登錄,沒(méi)有登錄則跳轉(zhuǎn)到登錄界面。對(duì)已登錄的用戶才能進(jìn)行權(quán)限認(rèn)證,權(quán)限認(rèn)證在 judgeAuth() 這個(gè)方法中實(shí)現(xiàn)。在用戶登錄成功時(shí),會(huì)把用戶擁有的權(quán)限保存在List集合中,這里對(duì)比List集合中擁有的權(quán)限,如果擁有此操作的權(quán)限就繼續(xù)執(zhí)行,否則就跳轉(zhuǎn)到相應(yīng)的提示界面。
用戶身份認(rèn)證和權(quán)限認(rèn)證相結(jié)合,有效的防止了非法用戶的登錄和對(duì)系統(tǒng)的越權(quán)使用、篡改等操作,很好的實(shí)現(xiàn)了組件的安全機(jī)制。
權(quán)限管理系統(tǒng)主要是對(duì)系統(tǒng)的權(quán)限,角色,用戶三個(gè)對(duì)象進(jìn)行管理,把繁瑣、重復(fù)的操作簡(jiǎn)單化、統(tǒng)一化。在web應(yīng)用系統(tǒng)中構(gòu)建一個(gè)通用的權(quán)限管理平臺(tái),有利于集中處理更有價(jià)值、更重要的事務(wù),整體提高企業(yè)辦事效率,增強(qiáng)信息的可控性,提高執(zhí)行力,使企業(yè)管理趨于完善,最終實(shí)現(xiàn)市場(chǎng)競(jìng)爭(zhēng)力全面提升的目標(biāo)。本文以基于角色的訪問(wèn)控制為原理,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)能提供完整的用戶身份認(rèn)證和集中的應(yīng)用授權(quán)體系的權(quán)限管理系統(tǒng),該系統(tǒng)權(quán)限分配直觀、擴(kuò)展性好、授權(quán)靈活,能夠?yàn)槎喾N類型的應(yīng)用系統(tǒng)提供系統(tǒng)一的授權(quán)管理和安全服務(wù)。實(shí)踐證明基于角色的訪問(wèn)控制技術(shù)能夠有效地解決用戶權(quán)限的管理問(wèn)題,降低了系統(tǒng)設(shè)計(jì)的復(fù)雜度。
[1] 王振江,劉強(qiáng).基于RBAC的擴(kuò)展訪問(wèn)控制模型[J].計(jì)算機(jī)工程與應(yīng)用,2005,(35).
[2] 梅蘇文,高縣明.基于角色權(quán)限管理模型的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2002,(11).
[3] 朱磊,周明輝.一種面向服務(wù)的權(quán)限管理模型[J].計(jì)算機(jī)學(xué)報(bào),2005,(4).
[4] 暴志剛,胡艷軍.基于Web的系統(tǒng)權(quán)限管理實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程,2006,(1).
[5] 葉身興.基于角色訪問(wèn)控制管理模型的研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2005.
[6] 王亞民.基于RBAC的信息系統(tǒng)訪問(wèn)控制模型[J].情報(bào)雜志,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開(kāi)發(fā)實(shí)戰(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-),女,中級(jí),研究方向:計(jì)算機(jī)信息管理系統(tǒng).