.NET環境下基於RBAC的訪問控制 Access Control of Application Based on RBAC model in .NET Environment 摘 要:本文從目前信息系統的變化趨勢及其多資源的訪問問題出發,提出一種基於RBAC模型的訪問控制方案。該方案以.NET環境
.NET環境下基於RBAC的訪問控制
Access Control of Application Based on RBAC model in .NET Environment
摘 要:本文從目前信息系統的變化趨勢及其多資源的訪問問題出發,提出一種基於RBAC模型的訪問控制方案。該方案以.NET環境為平臺,以角色為中介,把用戶和資源、功能聯繫起來。在為資源、功能分配角色的同時給用戶分配角色,這樣具有一定角色的用戶就可以訪問到該角色所許可的資源,從而實現了基於角色的訪問控制。該方案闡述了訪問控制的操作,以及基於角色訪問控制的優越性。
關鍵詞:RBAC;.NET;訪問控制;角色;功能
0、引言
管理信息系統是一個複雜的交互系統,隨著電腦技術進一步的應用與發展,人們對它所提供的服務提出了更高的要求,其中每個具體環節都可能受到安全威脅。構建強健的許可權管理系統,保證管理信息系統的安全性是十分重要的。許可權管理系統是管理信息系統中代碼重用性最高的模塊之一。任何多用戶的系統都不可避免的涉及到相同的許可權需求,都需要解決實體鑒別、數據保密性、數據完整性、防抵賴和訪問控制等安全服務。例如,一個大型網站編輯部門使用的內容發佈系統,具有不同內容發佈、不同內容審核、以及專題製作等等一系列功能,訪問控制服務要求系統根據操作者已經設定的操作許可權,控制操作者可以訪問哪些資源,以及確定對資源如何進行操作。
1、RBAC模型
基於角色的訪問控制(RBAC)模型被普遍認為是一種有效的訪問控制模型,它比傳統的自主訪問控制(DAC)和強制訪問控制(MAC)具有更高的靈活性和更好的擴展性。
1.1 RBAC模型簡述
早在2O世紀7O年代就有人在多用戶系統中對用戶訪問許可權管理的問題進行了研究,即如何控制用戶對資源的訪問,他們把這稱之為RBAC(Role Based Access Control,基於角色的訪問控制)。1996年RaviS.Sandhu等人提出了通用的RBAC模型。此模型有3個實體:用戶、角色和訪問許可權(如圖1所示)。
圖1 RBAC模型簡圖
其核心思想是:受保護功能模塊的訪問許可權與角色相聯繫,而只給用戶分配不同角色;用戶與所要求訪問的功能模塊之問沒有直接關係,若用戶要訪問某一資源,那他必須具有可訪問此資源的角色。在RBAC模型中,角色起到了橋梁的作用。
1.2、RBAC96模型定義
(1)RBAC96模型
該模型是由美國George Mason大學RaviS.Sandhu等提出的RBAC96模型,其基本結構如圖2:
圖2 RBAC96模型圖
RBAC96模型包括四個不同層次:RBAC0模型規定了任何RBAC系統必須的最小需求;RBAC1模型在RBAC0的基礎上加入了角色層次(Role Hierarchies)的概念,可以根據組織內部權力和責任的結構來構造角色與角色之間的層次關係;RBAC2模型在RBAC0的基礎上增加了約束(Contraints)概念;而RBAC3模型是對RBAC1和RBAC2的集成,他不緊包括角色層次,還包括約束關係。
(2)RBAC0模型
RBAC0為基礎模型,他包含三個實體:用戶、角色和許可。
定義1:RBAC0模型中的基本概念
①用戶( User): 一個可以獨立訪問電腦系統中的數據或用數據表示的其他資源的主體。可以是人、電腦等,一般指人。
②角色( Role) : 指一個組織或任務中的工作或位置。它代表了一種資格、權利和責任。
③許可( Permission) : 表示對系統中的客體進行特定模式訪問的操作許可。
④用戶分配: 指根據用戶在組織中的職責和權利被賦予相應的角色, 用戶與角色是多對多關係。我們用 M: role→2user 表示用戶分配, M[i] 表示授權給角色 i 的用戶集。
⑤許可分配: 指角色按其職責範圍與一組操作許可相關聯。角色與許可是多對多關係。我們用 P: role→2permission表示許可分配, P[i] 表示授權給角色 i 的許可集。
⑥會話( Session) : 代表用戶與系統進行交互。用戶與會話是一對多關係。
⑦活躍角色集( ARS) : 一個會話構成一個用戶到多個角色的映射, 即會話激活了用戶被授予的角色集的某個子集, 這個子集就是活躍角色集( Active Role Set, ARS) 。
(3)RBAC1模型
RBAC1 模型中引入角色層次來反映一個組織的職權和責任分佈的偏序關係。一般用偏序≥來描述角色層次。Role1 ≥Role2 表示 Role1 繼承了 Role2 的所有許可。偏序滿足自反、傳遞和非對稱性質。
有時為了實際應用的需要, 應該限制角色間繼承的範圍。如果某個角色不希望別人獲得自己的某些許可, 此時它就可以分離出自己的私有角色( Private Roles) 。私有角色中的權利是不能被繼承的。利用私有角色機制可以實現某些許可權的屏蔽。
(4)RBAC2模型
RBAC2 在 RBAC0 的基礎上引入了約束集合, 用來規定各種操作是否可被接受。約束可以作用在圖2中的所有關係上。下麵重點探討與角色有關的約束。
①基數限制: 在同一時間, 一個用戶可擁有的角色數目受限; 同樣, 一個角色對應的許可數目也應受限。
②互斥角色: 同一用戶僅可分配到一互斥角色集合中至多一個角色或者用戶雖然分配到一互斥角色集合中多個角色, 但是在會話時用戶至多能激活其中的某一個角色。前者是靜態互斥, 約束髮生在用戶分配階段; 後者是動態互斥, 發生在會話選擇 ARS 時, 即運行時刻。
③先決條件角色: 可以分配角色給用戶僅當該用戶已擁有另一角色; 同樣, 可以分配許可給該角色僅當該角色已擁有另一種操作許可。
④時間頻度限制: 規定特定角色或許可的使用時間和頻度。
(5)RBAC3模型
RBAC3是RBAC96中的最高層模型,它包括了RBAC1和RBAC2所有的特征,當然也間接包含了RBAC0。
1.3、EHRBAC模型
RBAC96 中利用私有角色來實現角色間不希望繼承全部許可權的問題。這種方法存在許多缺點: 它將一個邏輯上統一的、屬於同一角色的許可權分離開來, 使得很多角色成為不完整的角色, 只是為了繼承而存在,並沒有實際的物理意義; 私有角色方法使得角色數量迅速增長, 它使角色層次關係變得異常複雜。針對此不足, 很多學者開展了這方面的研究工作。EHRBAC(Extended Hierarchy Role Based Acces Control)就是一種改進的角色層次化關係模型。該模型廢棄私有角色思路,遵循按現實世界模型建模的思想, 定義了角色的公共許可權和私有許可權,並引入一般繼承和擴展繼承機制, 形成了功能更加完善和更易於擴充的角色層次化關係模型,很好地解決了使用私有角色所出現的問題。
在後面的定義中,U表示用戶集合,P表示許可集合,R 表示角色集合,u表示某個用戶,p 表示某個操作許可,r表示某個角色。
定義 2:令 CP:R→2P,CP(r) 為角色 r所擁有的公共許可權集合。
定義 3:令 PP:R→ 2P,PP(r) 為角色 r所擁有的私有許可權集合。
由於將許可權劃分為公共許可權和私有許可權,所以引入兩種繼承機制: 一般繼承和擴展繼承。一般繼承只能繼承角色的公共許可權, 而不能繼承私有許可權, 並且它繼承下來的公共許可權還是公共許可權。
定義 4:一般繼承定義了 R 和 R 之間的一個二元關係, 假定 NIAR×R 是一個一般繼承關係集合,那麼(r1,r2) ∈NI 表示角色r2 一般繼承角色 r1 ,符號表示為 r1→r2。如果 r1→r2 , 那麼對於Ⅱp∈CP(r1 ), 有 p∈CP(r2 ) 。
與一般繼承不同的是, 擴展繼承不但能繼承公共許可權, 還能繼承私有許可權。繼承過來的許可權屬性仍保持不變。
定義 5:擴展繼承定義了 R 和 R 之間的一個二元關係, 假定 EIAR × R 是一個擴展繼承關係集合, 那麼(r1 ,r2 )∈EI 表示角色r2 擴展繼承角色 r1 ,符號表示為 r1·→r2。如果 r1·→r2 ,那麼對於Ⅱp∈CP(r1), 有 p∈CP(r2), 對於Ⅱp∈PP(r1),有 p∈PP(r2) 。另外,該模型中還定義了以下一些關係。
定義 6:關係→ + 定義為: 如果 ra→+rb,那麼存在 r1 ,r2 ,…,rn∈R( 其中 n>0),使得 ra→r1 ,r1→r2 ,…,rn→rb。
定義 7:關係→* 定義為: 如果 ra→*rb ,那麼有 ra→rb 或 ra→ +rb ,稱為 rb 弱一般繼承 ra。
定義 8:關係·→ +定義為: 如果 ra·→ +rb , 那麼存在 r1 ,r2 ,…,rn∈R( 其中n>0),使得 ra·→r1 ,r1·→r2 ,…,rn·→rb。
定義 9:關係·→* 定義為: 如果 ra·→*rb , 那麼有 ra·→rb 或 ra·→ +rb , 稱為 rb 弱擴展繼承 ra。
1.4、ARBAC97 模型
RBAC中很重要的一塊就是自身的管理,ARBAC97 模型將管理和使用分開(圖3),管理角色(AdministrativeRole)和管理許可(AdministrativePermission) 是用來管理其他角色和許可的。以下改稱 RBAC96 模型為規則模型, 其角色和許可也改稱為規則角色和規則許可。
圖3 ARBAC97模型圖
定義 10:管理許可 AP授權對規則模型中各種部件的改變,但是規則許可 P不可以,即AP∩P=φ。管理許可只能賦予管理角色 AR,規則許可只能賦予規則角色 R,故 AR∩R=φ。
ARBAC97 管理模型包含以下三塊:
(1) 用戶 - 角色分配 URA97(User Role Assignment 97)。討論對用戶分配角色的問題,包括規則角色分配和管理角色分配。一個用戶可同時擁有規則角色和管理角色。
(2) 許可 - 角色分配 PRA97(Permission Role Assignment 97) 。主要討論許可的分配與取消, 包括規則許可分配和管理許可分配。從角色的角度看, 用戶與許可具有相同的特征, 故PRA97與URA97 可一一對應。
(3) 角色 - 角色分配 RRA97(Role Role Assignment 97)。每個管理角色應當映射到規則角色的某個子集,RRA97 主要討論管理角色所管理的規則角色範圍。
1.5、RBAC模型與傳統訪問模型比較
傳統的訪問控制技術主要有兩種:自主訪問控制(Discretionary Access Control, DAC)和強制訪問控制(Mandatory Access Control, MAC)。DAC把訪問決定權留給了產生信息的信息主, MAC則要求所有用戶遵守由管理員建立的規則。
(1)自主訪問控制(DAC)
DAC 是基於訪問者身份或所屬工作組來進行訪問控制的一種手段。訪問自主是指具有某種訪問許可權的訪問者可以向其他訪問者傳遞該種訪問許可( 也許是非直接的) 。
(2)強制訪問控制( MAC)
MAC是基於被訪問對象的信息敏感程度(如用標簽來表示)以及這些敏感信息可以賦予該訪問主體的訪問許可權來進行許可權控制的。MAC 對於不同類型的信息採取不同層次的安全策略, 並針對不同類型的數據來進行訪問授權。它給每個控制主體和被訪問對象分配敏感標簽, 分別稱作安全訪問(Securit Clearance)和安全分類(Security Classification)。指定了與訪問主體有關的信任度, 而安全分類則指定了訪問主體或程式的信任度。
顯然基於角色的訪問控制方法(RBAC)的顯著的兩大特征是:1.由於角色/許可權之間的變化比角色/用戶關係之間的變化相對要慢得多,減小了授權管理的複雜性,降低管理開銷。2.靈活地支持信息系統的安全策略,並對系統的變化有很大的伸縮性。
2、RBAC實現
2.1、系統結構
按照RBAC模型,要對.NET應用程式進行訪問控制,首先要將各種實體信息(用戶、角色、訪問許可權)和實體之間相互關係信息表示出來,進行建模,如圖4。
圖4 系統RBAC關係模型圖
2.2、功能初始化
(1)功能(Powers)初始化為5個:
功能ID號 |
功能名稱 |
最大許可權 |
P1 |
新聞分類 |
11110 |
P2 |
新聞內容 |
11111 |
P3 |
廣告分類 |
11110 |
P4 |
廣告內容 |
11111 |
P5 |
友情鏈接 |
11111 |
說明:最大許可權(最長32位),給定 第一位表示讀取,第二位表示添加,第三位表示修改,第四位表示刪除,第五位表示推薦。全示例只使用四位許可權碼,本數據結構最長可以使用32位;本程式設計理論支持56位(需要改資料庫類型為binary(4)的欄位"許可權")長度為7。此表數據由開發人員接文檔輸入。發佈後不可改
(2)角色(Roles)數據初始化為4個:
角色ID |
角色名稱 |
R1 |
新聞編輯 |
R2 |
總編輯 |
R3 |
廣告管理員 |
R4 |
超級管理 |
(3)角色與功能(RolePowers)關係
角色ID號 |
功能ID號 |
最大許可權 |
R1 |
P1 |
10000 |
R1 |
P2 |
11110 |
R2 |
P1 |
11110 |
R2 |
P2 |
10001 |
R3 |
P3 |
10000 |
R3 |
P4 |
11110 |
R4 |
P5 |
11111 |
說明:許可權不能大於各功能的最大許可權
(4)角色繼承(IRoles)關係:R2繼承R1(即R2擁有R1的所有功能使用權)
角色ID |
父角色ID |
R2 |
R1 |
R4 |
R1 |
R4 |
R2 |
R4 |
R3 |
(5)用戶(Users)數據初始化為3人
用戶ID |
用戶名 |
U1 |
Xiaoming |
U2 |
Datong |
U3 |
Wuming |
(6)用戶與角色(UserRoles)關係:
用戶ID |
角色ID |
繼承數 |
U1 |
R1 |
0 |
U2 |
R2 |
0 |
U2 |
R1 |
1 |
U3 |
R4 |
0 |
U3 |
R3 |
1 |
U3 |
R2 |
1 |
U3 |
R1 |
2 |
(7)用戶與功能(UserPowers)的關係
用戶ID |
功能ID |
許可權碼 |
U1 |
P1 |
10000 |
U1 |
P2 |
11110 |
U2 |
P1 |
11110 |
U2 |
P2 |
11111 |
U3 |
P1 |
11110 |
U3 |
P2 |
11111 |
U3 |
P3 |
10000 |
U3 |
P4 |
11110 |
U3 |
P5 |
11111 |
用戶與功能的數據由以上各表數據變動而調整此表數據。許可權碼是對應用戶U和相同功能P疊加之後功能P的許可權碼。
(8)其他功能
菜單(Menus)關聯對應的功能,可根據實際情況實現分類:.Net Web與.Net WinForm。同一功能對應這兩種系統的不同菜單。
用戶菜單(UserMenus)雷同用戶與功能(UserPowers),系統根據人員對應的許可權發生改變而更改。
2.3、系統運行方式
本系統在.Net環境下構建,分B/S和C/S兩個版本,使用相同的業務邏輯,唯一不同的是展示方式。具有相同的運行方式:
(1)用戶登錄時要通過身份認證, 該過程由認證中心完成。通過身份認證後的用戶將會獲得其擁有的所有菜單;會話開始。
(2)系統對獲取的菜單進行構建,B/S主要通過頁面地址進行訪問;而C/S通過存放窗體或者控制項命名空間、類庫名稱,利用反射技術進行創建。
(3)訪問對應的頁面,在頁面級進行功能許可權的判定,比如添加、修改、刪除、審核等細粒度的操作。
(4)用戶工作完畢 LOGOUT系統,結束會話。
本系統可作為其他信息管理系統的許可權控制的基本實現,其他系統可以依附該系統進行開發,從而不必考慮用戶許可權的分配、回收等相關事務操作。
3、結束語
RBAC是一項新的存取控制技術, 它通過引入角色這個中介, 實現了用戶與訪問許可的邏輯分離, 極大地方便了許可權管理。RBAC 在研究領域、用戶和軟體廠商中都引起了廣泛的關註, 被認為是一種比傳統的 DAC和 MAC更普遍適用的訪問控制技術。
本文針對傳統的RBAC 96模型在角色繼承關係及授權分配給予了相關解決方案。但是, 在實際操作過程中,任務之間是有一定聯繫的,如相斥關係、 依賴關係, 在本文中還沒有提出關於這個方面的解決方案。在今後的工作中, 我們可能會在這個方面做出一定的努力。
參考文獻:
[1] 蔣贇贇, 吳承榮,張世永.資料庫訪問控制模型分析[J].電腦工程與應用,2002,(13):183-185.
[2] 何海雲, 張春, 趙戰生. 基於角色的訪問控制模型分析[J]. 電腦工程,1999,(8):39-44.
[3] 施景超, 孫維祥,許滿武.基於角色的存取控制及其實現[J]. 電腦應用研究,2000,17(6):13-15.
[4] 鐘華, 馮玉琳, 薑洪安. 擴充角色層次關係模型及其應用[J]. 軟體學報,2000,11(6):779-784.
[5] 李孟珂, 餘祥宣.基於角色的訪問控制技術及應用[J]. 電腦應用研究,2000,17(10):44-47.
[6] 張大江, 錢華林.一個利用數字證書實現的 RBAC 模型[J]. 小型微型電腦系統,2001,22(8):936-939.
[7] 餳亞平, 李偉琴, 劉懷宇.基於角色的細粒度的訪問控制系統的研究與實現I - J ] .北京航空航天大學學報,2001 , 2 7( 2 ): 178 — 181.
[8] 黃益民, 楊子江, 平玲娣, 等.安全管理系統中基於角色訪問控制的實施方法[ J ] .浙江大學學報( 工學版),2004 ,3 8 ( 4 ): 4 0 8 - 413.
[9] 何斌,顧健. 基於角色訪問控制的許可權管理系統[J]. 電腦工程(增刊),2004,30:326-328.
[10] 周文峰,尤軍考,何基香. 基於 RBAC 模型的許可權管理系統設計與實現[J]. 微電腦信 2006,22(15) :35-36.
[11] 夏志雄,張曙光. RBAC在基於 Web管理信息系統中的應用[J]. 電腦應用研究,2004,(7):198~199.