.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.