国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RBAC模型的細(xì)粒度權(quán)限管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2019-10-15 05:04周奇才王奕童熊肖磊
關(guān)鍵詞:細(xì)粒度訪問控制組內(nèi)

◆周奇才 王奕童 趙 炯 熊肖磊

基于RBAC模型的細(xì)粒度權(quán)限管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

◆周奇才1王奕童1趙 炯1熊肖磊2

(1.同濟(jì)大學(xué)機(jī)械與能源工程學(xué)院 上海 201804;2.同濟(jì)大學(xué)浙江學(xué)院(嘉興) 浙江 314051)

針對(duì)RBAC在資源級(jí)別權(quán)限管理實(shí)現(xiàn)復(fù)雜的問題,提出一種劃分資源組的擴(kuò)展RBAC模型,達(dá)成以資源組為單位的訪問控制。在實(shí)際WEB應(yīng)用開發(fā)項(xiàng)目中,以Shiro框架及AOP編程方法,對(duì)此模型進(jìn)行非侵入式編程實(shí)現(xiàn),可復(fù)用在其他系統(tǒng)權(quán)限開發(fā)上并簡(jiǎn)化開發(fā)流程。通過測(cè)試用例證明此系統(tǒng)可以滿足實(shí)際項(xiàng)目管理需求。

RBAC;Shiro;AOP;細(xì)粒度

RBAC(Role-Based Access Control)是一種基于角色的訪問策略,已在Web應(yīng)用開發(fā)上廣泛使用。自Sandhu(文獻(xiàn)[1])等提出RBAC開始已有許多針對(duì)模型的研究及改良。在角色的劃分與繼承方面,文獻(xiàn)[2]對(duì)原模型中的私有角色及繼承問題進(jìn)行了研究,并增加了私有權(quán)限集和公有權(quán)限集的概念;文獻(xiàn)[3]中將權(quán)限進(jìn)一步劃分為公有權(quán)限、受保護(hù)權(quán)限、私有權(quán)限,并提出三種角色繼承機(jī)制以簡(jiǎn)化模型。在增強(qiáng)模型表現(xiàn)力方面,文獻(xiàn)[4]提出多維度的概念,將時(shí)間特性、數(shù)據(jù)特性等控制屬性引入RBAC模型;文獻(xiàn)[5]強(qiáng)化了權(quán)限屬性維度概念,使互斥、單例、繼承限制等屬性增加了表現(xiàn)力,提高了權(quán)限控制靈活性;文獻(xiàn)[6,7]通過建立用戶組,減少了為用戶分配角色的工作量。而在細(xì)化權(quán)限管理粒度方面,文獻(xiàn)[8]擴(kuò)展了RBAC模型并實(shí)現(xiàn)一種細(xì)粒度訪問框架,可以達(dá)到頁(yè)面子元素粒度控制;文獻(xiàn)[9]提出了角色和組的聯(lián)合授權(quán),可在系統(tǒng)資源各模塊域進(jìn)行靈活控制;文獻(xiàn)[10]中在角色和用戶之間增加了單位/部門層,使具有相同角色的不同的單位/部門可訪問不同資源。這些實(shí)現(xiàn)或者僅以操作權(quán)限作為訪問控制終端,導(dǎo)致難以在權(quán)限對(duì)應(yīng)特定資源上進(jìn)行控制;或者使用大量元數(shù)據(jù)設(shè)置和分離數(shù)據(jù)存儲(chǔ)方式以支撐權(quán)限判定,使系統(tǒng)復(fù)雜程度提高。

本文提出RBAC的一種擴(kuò)展,將用戶組的概念擴(kuò)展至組(資源組)的概念,使不同組的同一角色同一權(quán)限具有不同的資源訪問許可范圍,減少了角色權(quán)限劃分,進(jìn)一步細(xì)化訪問控制粒度。在實(shí)際Web應(yīng)用項(xiàng)目中,本文結(jié)合Apache Shiro安全框架,以AOP(Aspect Oriented Programming)非侵入式編程的方式分離了業(yè)務(wù)和控制邏輯,對(duì)此模型進(jìn)行初步實(shí)現(xiàn)。并通過測(cè)試用例驗(yàn)證此擴(kuò)展模型的有效性。

1 擴(kuò)展RBAC模型

本文擴(kuò)展模型以RBAC0模型為基礎(chǔ)進(jìn)行說明。其他RBAC模型新增的關(guān)系與限制等亦可以兼容至此模型。對(duì)此擴(kuò)展模型涉及的部分概念進(jìn)行定義:

資源:代表實(shí)體的信息,在數(shù)據(jù)庫(kù)中表現(xiàn)為一條數(shù)據(jù)行。

組(資源組):表示資源的集合。比如一個(gè)部門的員工的集合可以作為一個(gè)由人事管理的資源組,而這個(gè)部門的產(chǎn)品的集合可以作為一個(gè)由部門員工管理的產(chǎn)品資源組。在數(shù)據(jù)庫(kù)中一個(gè)(資源)組表現(xiàn)為一張數(shù)據(jù)表的部分或全體數(shù)據(jù)。同類型的組之間可以有繼承(即包含),相交等關(guān)系。用戶的私有資源或持有資源都可以作為一個(gè)隱式的組。所有的資源都隱式的屬于一個(gè)根組(root)以方便管理。

角色(組內(nèi)角色):概念與通常角色定義無(wú)區(qū)別,但是角色會(huì)依托于組,其權(quán)限只對(duì)組內(nèi)資源生效。用戶可以在不同組內(nèi)擁有相同的角色,也可以在同一組內(nèi)擁有多個(gè)角色。

經(jīng)由以上定義,可以靈活處理一些復(fù)雜的權(quán)限控制問題。如在一張數(shù)據(jù)表中,可以使一部分?jǐn)?shù)據(jù)行作為A組,可被A部門修改;另一部分作為B組可被B部門修改。A、B組可以有交集。兩部門不同人員可擁有同樣的角色,進(jìn)而都得到數(shù)據(jù)表的修改權(quán),但是他們可以修改的只有表內(nèi)對(duì)應(yīng)組的數(shù)據(jù)行。此擴(kuò)展模型各個(gè)集合概念及關(guān)系的定義可以參見表1,模型參見圖1。

表1 模型符號(hào)定義

圖1 擴(kuò)展RBAC模型

2 權(quán)限管理系統(tǒng)模塊

SSM(Spring/SpringMVC/Mybatis)整合框架是Java Web應(yīng)用開發(fā)的常用技術(shù)。下文以一個(gè)實(shí)際項(xiàng)目為例,說明如何基于上文模型,在SSM框架下實(shí)現(xiàn)一個(gè)通用的權(quán)限管理系統(tǒng)模塊。

模塊采用Shiro安全框架與AOP編程實(shí)現(xiàn)。權(quán)限管理邏輯共分為三層,分別代表三種粒度的互相配合。最上層是粗粒度的認(rèn)證層,利用Shiro框架僅以賬號(hào)密碼登錄進(jìn)行實(shí)現(xiàn)。中間層為中等粒度的權(quán)限管理層,通過Shiro注解,對(duì)具體操作進(jìn)行鑒權(quán)。這是通常RBAC權(quán)限控制的粒度等級(jí)。第三層是細(xì)粒度的業(yè)務(wù)層權(quán)限控制,一般通過這一層對(duì)請(qǐng)求操作的資源進(jìn)行判斷處理,才能達(dá)到資源粒度的權(quán)限控制。整體判斷流程如圖3。

圖2 權(quán)限管理模塊層次

圖3 項(xiàng)目權(quán)限判斷流程

本章后續(xù)各小節(jié)只針對(duì)此權(quán)限管理模塊的數(shù)據(jù)庫(kù)設(shè)置,基本訪問控制,細(xì)粒度訪問控制及可實(shí)現(xiàn)的一些擴(kuò)展進(jìn)行說明。

2.1 數(shù)據(jù)庫(kù)表設(shè)計(jì)

不同于實(shí)際項(xiàng)目使用,這里只列出必要部分?jǐn)?shù)據(jù)庫(kù)表的布置和字段內(nèi)容。user_info表,group表,resource表,role表,permission表分別對(duì)應(yīng)于上文模型的用戶,組,資源,角色,權(quán)限的集合。user_role表,role_permission表, resource_group表分別表示各集合的多對(duì)多關(guān)系。user_group_role表是用戶在組內(nèi)角色的表。必要字段是尾綴為Id的字段,分別作為主鍵PK或外鍵FK。其中多類資源需要多個(gè)resource表,通過不同的resource_group表與同一個(gè)group表形成多對(duì)多關(guān)系。

圖4 簡(jiǎn)化的數(shù)據(jù)庫(kù)表結(jié)構(gòu)

2.2 權(quán)限管理層基本訪問控制

此層決定用戶是否有執(zhí)行某項(xiàng)操作的權(quán)限。即使用戶可操作的資源集為空集,只要擁有操作權(quán)限,就認(rèn)為可以通過此層鑒權(quán)。實(shí)現(xiàn)為在Shiro的自定義Realm的doGetAuthorizationInfo方法中,將用戶擁有的所有權(quán)限與角色裝入HashSet的方式進(jìn)行授權(quán)。用戶角色集為用戶對(duì)私有資源的角色與用戶所有組角色的并集,用戶權(quán)限集為用戶角色集所有角色對(duì)應(yīng)的權(quán)限的并集。

2.3 細(xì)粒度資源訪問控制

為了簡(jiǎn)化開發(fā),將權(quán)限判斷和業(yè)務(wù)邏輯進(jìn)一步分離,本文采用了AOP編程方式以實(shí)現(xiàn)通用的權(quán)限管理。由于權(quán)限管理層過濾,可認(rèn)為進(jìn)入此業(yè)務(wù)層的請(qǐng)求在數(shù)據(jù)庫(kù)表上的某個(gè)數(shù)據(jù)集上合法。因?qū)唧w數(shù)據(jù)權(quán)限判定時(shí)必然已接觸到數(shù)據(jù),所以可采用在從數(shù)據(jù)庫(kù)獲得數(shù)據(jù)資源時(shí),在SQL語(yǔ)句增加組約束條件集合的方式,控制返回的數(shù)據(jù)。在獲取數(shù)據(jù)前后,都可增加邏輯判斷,以獲知操作是否越界,即操作了無(wú)權(quán)訪問的組內(nèi)數(shù)據(jù)。在此權(quán)限管理模塊中為防止試探攻擊,不會(huì)提示是否存在該分組或操作越界,而是直接返回空的結(jié)果集和操作失敗的信息。

在一個(gè)項(xiàng)目中的具體實(shí)現(xiàn)方式可為:

(1)定義檢索數(shù)據(jù)的接口,實(shí)現(xiàn)用戶,組集合相關(guān)屬性的讀寫(Getter/Setter)方法,以設(shè)置查詢數(shù)據(jù)庫(kù)時(shí)的額外檢索參數(shù)。

(2)自定義一個(gè)注解,需要包含一個(gè)代表權(quán)限的屬性,標(biāo)注在需要鑒權(quán)的方法上。

(3)定義切面類,定義切點(diǎn)為標(biāo)注(2)中注解的方法。

(4)在切面類中實(shí)現(xiàn)環(huán)繞通知,通過查詢數(shù)據(jù)庫(kù)中的用戶私有及組內(nèi)權(quán)限,設(shè)置檢索數(shù)據(jù)的用戶和組集合的相關(guān)屬性,為數(shù)據(jù)庫(kù)查詢?cè)黾蛹s束條件。

在本文項(xiàng)目中,定義ResourceSearchMessage為檢索數(shù)據(jù)接口,其實(shí)現(xiàn)類具有userId,groupId以及groupSet三個(gè)屬性及相應(yīng)的Getter/Setter方法。自定義注解為@ResourcePermission,標(biāo)注在業(yè)務(wù)層服務(wù)的方法上。切面類為ResourcePermissionAspect,在切面內(nèi)實(shí)現(xiàn)環(huán)繞方法,對(duì)檢索信息的userId,groupId和groupSet參數(shù)進(jìn)行處理判定。因情況復(fù)雜,以4位編碼表示userId,groupId,groupSet,可用權(quán)限的組集pGroupSet的情況。具體參見表2,空行表示沒有此編碼。在groupId非空且groupSet或者pGroupSet非空時(shí),增加一個(gè)尾綴Y或者N表示groupId是否被組集合包含。設(shè)置空的檢索屬性是為了方便在Mybatis動(dòng)態(tài)SQL內(nèi)通過判斷去除不需要的條件或表連接。

例:情況2112N表示userId為請(qǐng)求者ID并且請(qǐng)求者具有根組的權(quán)限,但是groupId并沒有包含在groupSet組內(nèi)。處理邏輯如表3,其中X代表任意編碼。

表2 編碼定義對(duì)應(yīng)表

表3 參數(shù)邏輯處理

項(xiàng)目中因限制用戶無(wú)法多資源組并集檢索,設(shè)定默認(rèn)groupSet初始為空集。同時(shí)基于用戶擁有(私有)資源優(yōu)先判定及私有資源權(quán)限關(guān)于組內(nèi)權(quán)限的原則,當(dāng)請(qǐng)求者ID與userId一致時(shí)為優(yōu)化效率,可以直接跳過組相關(guān)判斷以減少數(shù)據(jù)庫(kù)訪問。程序簡(jiǎn)化流程圖如圖5。

圖5 AOP處理簡(jiǎn)化流程

2.4 系統(tǒng)擴(kuò)展與優(yōu)化

針對(duì)上文項(xiàng)目實(shí)現(xiàn),可以進(jìn)一步擴(kuò)展如下:

(1)在基本的角色和組管理上,可以通過增加角色繼承,以適應(yīng)大型系統(tǒng)的角色過多,組混亂的問題。

(2)在權(quán)限管理上,可以通過把用戶的組與權(quán)限信息緩存或者保存于會(huì)話上,避免多次訪問數(shù)據(jù)庫(kù)。

(3)在特殊需求的情況下,可以設(shè)定用戶與權(quán)限的直接中間表,以添加臨時(shí)權(quán)限。

(4)在權(quán)限有相互關(guān)系的情況下,通過組集合的集合運(yùn)算設(shè)置AOP處理邏輯。

2.5 隱式分組權(quán)限控制

隱式分組代表已有數(shù)據(jù)沒有明確的組劃分,而是利用數(shù)據(jù)的自帶信息如編號(hào)范圍,數(shù)據(jù)大小等方式判斷數(shù)據(jù)是有權(quán)訪問。在這種情況下,本文給出一個(gè)簡(jiǎn)要的利用動(dòng)態(tài)數(shù)據(jù)庫(kù)和占位符替換的方案思路。

首先對(duì)隱式分組的判定條件進(jìn)行整理,如要求數(shù)據(jù)編號(hào)在100以下并且狀態(tài)為有效且操作人為查詢?nèi)俗陨?,可以利用同樣的思路將這個(gè)要求設(shè)置成為一個(gè)字符串類型數(shù)據(jù):restrict=”id<100 and status = true and operator = ${username}”,存儲(chǔ)在數(shù)據(jù)庫(kù)上作為輔助。通過在檢索信息增加一個(gè)RestrictSet的集合,利用AOP替換占位符并將此約束動(dòng)態(tài)拼接到SQL上,即可分離業(yè)務(wù)邏輯和權(quán)限判定。

3 有效性測(cè)試

本節(jié)對(duì)上文項(xiàng)目實(shí)現(xiàn)進(jìn)行測(cè)試分析。測(cè)試基于3.3節(jié)的項(xiàng)目環(huán)境,通過擁有不同組內(nèi)角色的用戶模擬操作,判定此實(shí)現(xiàn)的有效性。下面用讀取數(shù)據(jù)權(quán)限為例進(jìn)行分析。

測(cè)試集合關(guān)系如圖6所示,其中根組(root)表示全體數(shù)據(jù)集合,A,B,C,D,E表示數(shù)據(jù)集合的5個(gè)組。a,b,c,d分別表示四條數(shù)據(jù)記錄,它們分布在一張數(shù)據(jù)庫(kù)表內(nèi)。A組在表內(nèi)擁有數(shù)據(jù){a,c},B組擁有數(shù)據(jù){b,c},C組擁有數(shù)據(jù){c},D組擁有單條數(shù)據(jù)syggg00,E為空組。

圖6 測(cè)試集合關(guān)系

測(cè)試用例按照5種情況劃分用戶,分別對(duì)應(yīng)對(duì)用戶是否持有隱含的根組,兩個(gè)組AB,一個(gè)組C,個(gè)人私有數(shù)據(jù)組D及空組E的讀取權(quán)限。具體權(quán)限配置及結(jié)果參見表4。其中ID行代表不同類型的一個(gè)用戶的測(cè)試,○記號(hào)表示用戶擁有該組的角色并擁有讀取數(shù)據(jù)的權(quán)限,╳記號(hào)表示用戶擁有該組的角色但不具有權(quán)限,空白表示用戶不擁有該組的角色。讓每個(gè)用戶按照四種情況進(jìn)行查詢操作,分別對(duì)應(yīng)查詢所有有權(quán)訪問的數(shù)據(jù),指定A或B組內(nèi)數(shù)據(jù)及對(duì)ID為8的用戶數(shù)據(jù)進(jìn)行查詢,共計(jì)36個(gè)測(cè)試??梢宰x取到的數(shù)據(jù)結(jié)果反饋如表4。

表4 權(quán)限測(cè)試結(jié)果

可以看到,結(jié)果符合本文定義的細(xì)粒度權(quán)限管理要求。

4 總結(jié)與展望

本文對(duì)RBAC基本模型進(jìn)行擴(kuò)展,不僅減少了角色劃分,還可以進(jìn)行更細(xì)致的權(quán)限管理操作。利用Shiro框架和AOP編程實(shí)現(xiàn)了基礎(chǔ)的管理系統(tǒng)模塊,并通過測(cè)試證明其有效性。后續(xù)研究會(huì)針對(duì)文中提到的擴(kuò)展方向,實(shí)現(xiàn)更高效、更具有通用性的權(quán)限管理系統(tǒng)。

[1]Sandhu R S,Coyne E J,F(xiàn)einstein H L,et al. Role-Based Access Control Models[J]. 1996.

[2]劉鑫.網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中模式匹配算法的應(yīng)用研究[D].大連海事大學(xué),2013.

[3]李鍵,陳杰. RBAC模型權(quán)限管理中三種新的角色繼承機(jī)制和授權(quán)策略[J]. 四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,44(3):521-524.

[4]陳明,王振武.基于角色的三維空間訪問控制模型[J]. 計(jì)算機(jī)工程,2008,34(9).

[5]陳慶榮.基于RBAC模型的多維權(quán)限管理方法[J].工業(yè)儀表與自動(dòng)化裝置,2018,262(04):129-133.

[6]江南,王士同,賀楊成.關(guān)于改進(jìn)的RBAC模型研究及應(yīng)用實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2011,27(3):169-171.

[7]孫恒一. 一種擴(kuò)展型RBAC電力交易系統(tǒng)權(quán)限模型設(shè)計(jì)與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2018.

[8]曾小仨.基于擴(kuò)展RBAC模型的細(xì)粒度訪問控制研究與實(shí)現(xiàn)[D].中南大學(xué),2010.

[9]黃光芳.基于用戶組和細(xì)粒度權(quán)限的RBAC模型[J].湛江師范學(xué)院學(xué)報(bào),2011,32(6):136-141.

[10]陳占芳,顧健,張曉明,等. 一種超細(xì)粒度權(quán)限模型研究與應(yīng)用[J].長(zhǎng)春理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2016(1):88-90.

猜你喜歡
細(xì)粒度訪問控制組內(nèi)
一種跨策略域的林業(yè)資源訪問控制模型設(shè)計(jì)
用心說題 提高效率 培養(yǎng)能力
云的訪問控制研究
在線評(píng)論情感分析研究綜述
基于型號(hào)裝備?角色的IETM訪問控制研究
基于web粒度可配的編輯鎖設(shè)計(jì)
基于文本挖掘的微博文本情緒分析技術(shù)研究
云計(jì)算訪問控制技術(shù)研究綜述
六步教學(xué),合作出數(shù)學(xué)的精彩
合作學(xué)習(xí)組內(nèi)交流討論時(shí)間的遵循原則