999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RBAC與ACL的權限控制系統的實現

2015-05-15 03:19:48洪布金余穩定
現代計算機 2015年7期
關鍵詞:用戶模型系統

洪布金,余穩定

(四川大學計算機學院,成都 610065)

基于RBAC與ACL的權限控制系統的實現

洪布金,余穩定

(四川大學計算機學院,成都 610065)

實現一個基于RBAC思想與Spring Security ACL模型相結合的權限控制系統,詳細闡述該系統的實現原理與工作機制。RBAC與傳統的授權策略相比它更加安全、靈活易維護。該系統將RBAC的思想與ACL模型相結合,能達到細粒度的數據級權限訪問控制,實踐表明,該系統有良好的擴展性與易用性。

RBAC;Spring Security ACL;權限控制;數據級訪問控制;細粒度

0 引言

隨著互聯網與計算機的高速發展,Web系統應用越來越廣泛,在帶來方便的同時也增加了各種各樣的攻擊與信息的竊取,尤其是對一些信息比較敏感的系統,信息一旦遭到非法訪問,將造成很大的損失,對資源的訪問控制越來越成為一個系統的核心功能。基于角色的訪問控制(RBAC)由于其簡單性、易擴展性使其成為業界廣泛接受和應用的授權參考模型[1~3]。RBAC在用戶與資源之間增加角色層,由于角色的變更的頻率相對于用戶的變更頻率要低,通過給角色授權可以降低授權的復雜度,易于維護。隨著應用的復雜度不同,對資源的訪問控制需求也不相同。RBAC一般能做到URL級別與頁面元素的權限控制,也就是功能級的權限制,但是無法做到數據級的權限訪問控制,本文通過將RBAC與訪問控制列表ACL相結合,實現了一個達到數據級權限控制的系統[4~5],有很好的可擴展性與易維護性。

1 RBAC模型與ACL簡述

美國國家標準與技術研究院(NIST)標準RBAC模型有4個部件模型組成[1],這4個模型組件分別是基本模型(RBAC0)、型(RBAC1)、(RBAC2)和同一模型(RBAC3),其中應用最為廣泛的為RBAC0,本系統就是在RBAC0的基礎上進行擴展,RBAC0的模型如圖1所示。

圖1 RBAC0模型

RBAC0主要包括5個元素,即用戶(user)、角色(role)、目標(object)、操作(operation)以及許可權限(permission)。系統通過給角色授權而不是給用戶授權,再將角色與用戶關聯起來,這樣用戶就獲得了角色被授予的權限。當用戶登錄系統的時候,通過session會話激活用戶所屬的角色,來獲得對系統的訪問控制。由于角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,減少了授權管理的復雜性,降低管理開銷。

訪問控制列表(ACL)是針對數據級的權限訪問控制而提出來的,由于應用的復雜度不同,某些應用需要對實體對象進行訪問控制,例如在一家公司,業務員都擁有相同的頁面,但是只有被授權的用戶才能看到相應的報表。Spring Security提供了對訪問控制列表的實現[6],采用Spring Security的實現可以方便地對系統中的領域對象設置不同的權限。ACL主要包括4個基本的對象,它們之間的關系如圖2所示,箭頭指向代表被參照的一方:

圖2 ACL實體對象之間的關系

(1)ACL_SID:標識授權的主體,一般來說是訪問系統的用戶,是權限的授予者。

(2)ACL_OBJECT_IDENTITY:系統中的領域對象,也就是被訪問控制的對象。

(3)ACL_ENTRY:系統中被訪問控制對象的訪問規則,即一個用戶對一個對象的操作權限。

(4)ACL_CLASS:表示系統中訪問控制對象的類的全限定名。

上述4個實體對象對應著數據庫中的4張表,當用戶創建一個實體對象的時候,系統會在上述4張表中插入關于這個對象的訪問控制信息。用戶訪問一個實體對象的時候會根據這4張表中的信息做出相應的判斷。

2 系統的核心對象模型設計

根據RBAC與ACL的模型,設計出系統的核心對象模型,如圖3所示。

為了突出權限控制的重點部分,此數據庫模型簡化了真實數據庫中的一些字段,其中箭頭指向的一方代表被參照的一方。下面就模型中的一些重要的對象以及它們之間的關系進行一些說明:

部門:部門是企業實現組織機構的一個抽象。部門并非孤立存在,而是和權限緊密聯系。此處的部門并非實際業務系統中的部門,而是為了權限管理模塊單獨抽象出來的一個概念,將用戶與角色都與之關聯,根據權限的靜態分離原則[7],只有角色與用戶在同一個部門下才能將角色賦給用戶。

圖3 數據庫模型

用戶:登錄系統的使用者,這是一個邏輯抽象的概念。在本系統中,人員分為業務人員與管理人員,人員隸屬于部門。現實中的人可以擁有系統中的一個或者多個用戶。

角色:角色是現實中某一個職位或者崗位的職責與權利的抽象,是為了解耦授權的復雜度而抽象出來的邏輯概念,在本系統中角色分為業務角色與管理角色,與人員的類型相對應,同一類型的角色與人員才能相互關聯,角色也隸屬于部門。

ACL_SID,即安全對象,是系統中的授權主體,將ACL_SID與用戶表進行關聯,可以控制用戶對領域對象的訪問。ACL_CLAS與ACL_OBJECT_IDENTITY唯一標識系統中的實體對象。ACL_ENTRY是實體對象的訪問規則。

資源:資源即系統中將被用戶操作與訪問的對象,在本系統中資源主要包括菜單、菜單頁面對應的UI元素以及實體對象。

權限即主體擁有的對客體資源進行可進行操作的集合。為了防止權限的擴散,根據最小特權的原則,在本系統中權限可以分為兩類:業務權限與管理權限,其中業務權限即用戶直接通過角色間接擁有的菜單權限,用戶登錄后便可看到對應的功能菜單并處理相關的模塊業務;管理權限是系統管理人員通過管理角色擁有管理角色后,則管理人員可以給其他的業務人員授予業務權限。

該模型中的主要關系有:分配資源操作RA(Resource Assignment)、分配用戶權限PA(Privilege Assignment)、分配角色到部門RDA(Role Department Assignment)、分配用戶到部門UDA(User Department Assignment),如圖4所示。

圖4 對象關系

分配資源RA,主要涉及到URL資源以及頁面元素資源以及實體對象,分配URL資源到角色,分配頁面元素到相關的menu,創建實體對象。

分配權限PA,將角色關聯到用戶,實現用戶與角色映射。UDA,實現用戶與部門的映射,RDA實現角色與部門的映射,這樣可以做到權限的靜態分離。只有屬于同一個部門的角色與用戶才能相互映射。

3 權限控制的實現

3.1 功能級權限訪問控制實現

權限的控制主要分為功能級訪問控制以及數據級訪問控制,其中功能級的訪問控制主要通過前臺來實現,其控制流程如圖5所示。

圖5 功能級權限控制流程圖

每個用戶都擁有一個或者幾個角色,在用戶登錄系統的時候,用戶通過用戶名與密碼的驗證后,激活會話,系統對用戶的角色進行判斷,根據用戶的角色信息去后臺加載用戶所擁有的URL信息,返回前臺生成功能樹的樹形接口入口點。當用戶通過功能樹訪問系統中頁面的時候,系統會根據用戶的角色生成對應的UI元素控制表,用戶進入界面后,根據UI元素控制表能夠控制該用戶所對應的各個界面存在的UI元素,達到對用戶訪問系統資源的控制。采用上述管理方式,可以比較好地解決功能級權限的訪問控制,在滿足安全性要求前提下,簡化了人員角色指派和管理工作。但是在系統演化階段可能需要對實體對象進行相應的訪問控制,該模型無法滿足要求,下面將分析數據級權限的控制實現。

3.2 數據級權限訪問控制實現

對于數據級的訪問控制是通過ACL來實現的,ACL定義了用戶對實體對象的訪問規則,當用戶訪問實體對象的時候是通過方法來調用的,所以要對實體對象進行訪問控制,必須要在訪問的調用前根據ACL里的規則進行邏輯判斷,判斷用戶時候擁有對實體對象的權限,但是這種設計對于簡單的系統還是可以接受的,對于復雜的系統,用戶的訪問控制策略頻繁地變化,會導致用戶權限的判斷邏輯不停地改變,而且容易導致方法內的邏輯混亂。

(1)AOP簡介

對于這種橫切關注點問題,可以使用AOP(Aspect Oriented Programming)技術很好地解決這個問題[9~10]。在面向對象的程序開發與設計中,人們發現在模塊化單元中,某些邏輯總是共有的,而且這些業務邏輯與系統的核心業務邏輯的關聯性很弱,它們留在模塊中是因為外部需求強加給核心模塊的,例如:日志、權限、事物等。那么,把這些共有的邏輯從模塊中剝離出來,再在適當的時候注入回去,將會明顯地改善模塊的可讀性與重用性。

(2)AOP實現的權限管理

通過ACL定義了實體對象的訪問控制規則,將對這些規則的判斷邏輯從方法的業務邏輯代碼里分離出來,定義成一個一個切面,而當對這些切面進行修改的時候,也不會改變方法內的業務邏輯。下面給出一個簡單的切面流程圖,如圖6所示。

圖6 切面流程圖

AspectJ是目前應用最廣泛的AOP語言[10],它既是AOP的語言規范也是AOP的實現。把系統中所有對實體對象的訪問方法都集中到一個包下,然后利用AspectJ定義對這個包下的方法訪問的切面的Pointcut,就可以達到對實體對象的訪問控制,例如:我們把對工資對象訪問的方法都放在com.mycompany.service包中,這樣可以為這些訪問工資的方法,定義Pointcut了:

最后引入AspectJ代碼;利用around()的Advice,而Advice就是通過讀取ACL里的規則來判斷用戶的訪問權限。

這樣修改工資的方法,判斷用戶的權限的代碼全部分離出來,所有的關于權限判斷的代碼通過Aspect來定義,將修改工資的方法完全與權限的判斷解耦了,當系統中的訪問控制策略發生變化時,只需要修改Aspect中的代碼,而具體的業務邏輯代碼無需修改。

4 結語

本文論述了一種基于RBAC與ACL相結合的模型,通過AOP來實現數據級訪問控制的系統。實踐表明,采用基于RBAC模型的權限管理具有以下優勢:由于角色/權限之間的變化比角色/用戶之間的變化要緩慢得多,減少了授權管理的復雜性,降低了管理開銷;而且通過ACL與AOP的結合,實現了數據級的訪問控制,能夠靈活地支持應用系統的安全策略,并對系統的變化有很大的伸縮性,在操作上,權限的分配直觀,易于理解使用。

[1] Sandhu R.S.Role-Based Access Control Models[J].IEEE Computer,1996,29(2):38~47

[2] 徐震,李斕,馮登國.基于角色的受限委托模型[J].軟件學報,2005,16(5):970~978

[3] 鐘華,馮玉琳,姜洪安.擴充角色層次關系模型及其應用[J].軟件學報,2000,11(6):779~784

[4] 唐建,徐罡,許舒人.一種數據級安全訪問控制方案[J].計算機系統應用,2013,22(9):81~85

[5] 馮志亮,譚景信.分級的行列級權限系統的設計與實現[J].計算機工程與設計,2011,32(10):3274~3277

[6] Domain Object Security(ACLs).Security(ACLs).http://docs.spring.io/springsecurity/site/docs/3.2.4.RELEASE/reference/htmlsingle

[7] 肖璐.基于RBAC的責任分離機制的研究與實現[D].北京交通大學,2008

[8] 胡和平.基于J2EE的權限管理框架實現[J].計算機工程與科學,2007,29(6):109~112

[9] 劉天陽.AOP與權限控制研究[D].大連理工大學,2005

[10] The Aspect J Developer's Notebook.http://www.eclipse.org/aspectj/doc/released/adknotebook/index.html

Implementation of Access Control System Based on RBAC and ACL

HONG Bu-jin,YU Wen-ding
(Department of Computer Science,Sichuan University,Chengdu 610065)

Implements an access control system based on the combination of RBAC and Spring Security ACL,describes the principle and mechanism of the system in details.Compares with traditional authorization policy,RBAC ismore secure,flexible and easier tomaintain.Combines the system the ideological of RBAC with AC Lmodel phase,achieves the data level permissions fine-grained access control.Practice shows that,ithas good scalability and ease of use.

RBAC;Spring Security ACL;Access Control;Data-Level Access Control;Fine-Gained

1007-1423(2015)07-0045-05

10.3969/j.issn.1007-1423.2015.07.013

洪布金(1989-),男,安徽蕪湖人,碩士研究生,研究方向為網絡與信息安全

余穩定(1989-),男,安徽六安人,碩士研究生,研究方向為網絡與信息安全

2014-12-30

2015-02-01

猜你喜歡
用戶模型系統
一半模型
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
3D打印中的模型分割與打包
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
主站蜘蛛池模板: 四虎亚洲精品| 男女猛烈无遮挡午夜视频| 中文无码影院| 久久综合伊人 六十路| 在线不卡免费视频| 国产丝袜啪啪| 东京热av无码电影一区二区| 国产人成乱码视频免费观看| 欧美亚洲国产精品久久蜜芽| 无码高潮喷水在线观看| 久久精品丝袜高跟鞋| 久久91精品牛牛| 亚洲国产系列| 国产成人无码播放| 三上悠亚一区二区| 99ri国产在线| 欧美yw精品日本国产精品| 国产性生交xxxxx免费| 亚洲热线99精品视频| 欧美日本激情| 国产理论最新国产精品视频| 国产伦片中文免费观看| 东京热一区二区三区无码视频| 91毛片网| 国产亚洲精久久久久久无码AV | 71pao成人国产永久免费视频| 永久在线播放| 一本久道热中字伊人| 日韩精品亚洲精品第一页| 97青青青国产在线播放| 真实国产精品vr专区| 美女视频黄又黄又免费高清| 亚洲精品成人片在线观看| 国产特级毛片| 99视频在线免费看| 91在线视频福利| 最新午夜男女福利片视频| 欧美黄色网站在线看| 国产免费羞羞视频| 欧美劲爆第一页| 毛片手机在线看| 91久久偷偷做嫩草影院| 欧美日韩中文字幕在线| 亚洲成a∧人片在线观看无码| 国内精品久久人妻无码大片高| 波多野结衣中文字幕久久| 中文字幕在线日韩91| 国产精品偷伦在线观看| 国内老司机精品视频在线播出| 操国产美女| 日韩精品高清自在线| 国产69精品久久久久妇女| 成人福利在线视频| 国产超碰一区二区三区| 久夜色精品国产噜噜| 日韩在线第三页| a级毛片一区二区免费视频| 欧美精品亚洲精品日韩专区va| 亚洲国产成熟视频在线多多| 欧美日韩北条麻妃一区二区| 国产日本欧美亚洲精品视| 亚洲精品无码AⅤ片青青在线观看| 四虎永久在线精品国产免费| 国产在线一区视频| 亚洲中文久久精品无玛| 中文字幕欧美日韩| 91视频精品| 人妻91无码色偷偷色噜噜噜| 波多野衣结在线精品二区| 国产丝袜第一页| 色综合天天娱乐综合网| 网久久综合| www.狠狠| 国国产a国产片免费麻豆| 免费在线一区| 日韩精品一区二区三区中文无码 | 久久婷婷六月| 91 九色视频丝袜| 特级欧美视频aaaaaa| 国产一区二区色淫影院| 福利在线免费视频| 高清欧美性猛交XXXX黑人猛交|