.NET環境下基於RBAC的訪問控制

来源:http://www.cnblogs.com/zsy/archive/2016/03/06/5247321.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、介面: 介面與抽象類一樣,也是表示某種規則,一旦使用了該規則,就必須實現相關的方法。對於C#語言而言,由於只能繼承自一個父類,因此若有多個規則需要實現,則使用介面是個比較好的做法。 2、介面的定義 interface 介面名 { 方法聲明; } 3、不同介面中若有多個相同名稱的方法,則需要顯式指
  • 我想大家對DateTime.ToString()方法的用法肯定已經非常熟悉了,但我想大家用過的大部分用法都是:DateTime.ToString(“format”),不過本文想講述的是它的另一個重載方法DateTime.ToString("format",IFormatProvider)。 如果大家
  • 文本框賦值時,設置其格式非常方便,將值的格式設定好即可。例如: Dim i as integer = 4333 me.textbox1.text = String.Format("{0:00.0}", i) 但對於文本框綁定到數據源時,此方式無效。可以採取下列方法: 在Form的Load事件中,或其
  • 最近公司要做一個項目,需要和現有的其他項目對接,由於不知道他們的資料庫,只有XSD文件。所以,我們在修改相應的程式時,就需要根據他們提供的XSD文件,來寫我們的VO實體類,由於我寫過根據Oracle資料庫生成VO實體類,因此這次的這個活也就很自然的落在了我的頭上。 一、XSD 首先什麼是XSD,我就
  • 摘要: 2016年,Wijmo將專註於:根據客戶的需求打磨控制項,包括性能、功能和修複;增加一些主要的新控制項,比如OLAP、報表、MultiRow;支持Angular 2, Aurelia, EmberJS框架
  • 開啟新的讀書之旅,這次讀的書為《.Net之美:.Net關鍵技術深入解析》。 我是選擇性閱讀的,把一些自己覺得容易忘記的,或者比較重要的知識點記錄下來,以便以後能方便呢查閱。 尊重書本原作者,如果大家能有個可能的話,去看看這本書,作者寫得挺不錯的。例子和知識點各方面都寫挺不錯的。 本章的內容 什麼是委
  • 這篇文章的目的主要為了後續工作的使用,在這裡對S2深入.NET平臺和C#編程中貫穿案例《網路電視精靈》的部分實現代碼進行思路剖析。 一.項目框架的搭建: 這個界面需要的控制項MenuStrip、TreeView、TabControl、ListView、DataGridView。 思路分析: 1.創建對
  • 這兩天寫的代碼概率性的崩潰在 XMMatrixMultiply() 函數,XMMatrixMultiply() 本身是 inline 函數可以看到崩潰處的代碼: vX = _mm_mul_ps(vX,M2.r[0]); 經查,_mm_mul_ps 是 SSE2 指令要求記憶體地址 16 位元組對齊。猜想
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...