基于RBAC的權限管理系統的實(shí)現
0 引 言
本文引用地址:http://dyxdggzs.com/article/90104.htm在許多的實(shí)際應用中,不只是要求用戶(hù)簡(jiǎn)單地進(jìn)行注冊登錄,還要求不同類(lèi)別的用戶(hù)對資源有不同的操作權限。目前,權限管理系統也是重復開(kāi)發(fā)率最高的模塊之一。在企業(yè)中,不同的應用系統都擁有一套獨立的權限管理系統。每套權限管理系統只滿(mǎn)足自身系統的權限管理需要,無(wú)論在數據存儲、權限訪(fǎng)問(wèn)和權限控制機制等方面都可能不一樣,這種不一致性存在如下弊端:
(1)系統管理員需要維護多套權限管理系統,重復勞動(dòng);
(2)用戶(hù)管理、組織機構等數據重復維護,數據一致性、完整性得不到保證;
(3)由于權限管理系統的設計不同,概念解釋不同,采用的技術(shù)有差異,權限管理系統之間的集成存在問(wèn)題,實(shí)現單點(diǎn)登錄難度十分大,也給企業(yè)構建企業(yè)門(mén)戶(hù)帶來(lái)困難。
采用統一的安全管理設計思想,規范化設計和先進(jìn)的技術(shù)架構體系,構建一個(gè)通用的、完善的、安全的、易于管理的、有良好的可移植性和擴展性的權限管理系統,使得權限管理系統真正成為權限控制的核心,在維護系統安全方面發(fā)揮重要的作用,是十分必要的。
本文介紹一種基于角色的訪(fǎng)問(wèn)控制RBAC(role-based policies access control)模型的權限管理系統的設計和實(shí)現,系統采用基于.NFT Framework 2.0架構技術(shù)實(shí)現,并討論了應用系統如何進(jìn)行權限的訪(fǎng)問(wèn)和控制。
1 RBAC的基本思想
企業(yè)環(huán)境中的訪(fǎng)問(wèn)控制策略一般有3種:自主型訪(fǎng)問(wèn)控制方法、強制型訪(fǎng)問(wèn)控制方法和基于危色的訪(fǎng)問(wèn)控制方法(RBAC)。其中,自主式太弱,強制式太強,二者工作最大,不便于管理?;诮巧脑L(fǎng)問(wèn)控制方法是目前公認的解決大型企業(yè)的統一資源訪(fǎng)問(wèn)控制的有效方法。其最著(zhù)的2大特征是:(1)減小授權管理的復雜性,降低管理開(kāi)銷(xiāo);(2)靈活地支持企業(yè)的安全策略,并對企業(yè)的變化有很大的伸縮性。
美國國家標準與技術(shù)研究院(the national institute of standards and technology,NIST)標準RBAC模型由4個(gè)部件模型組成,這4個(gè)部件模型分別是基本模型RBAC0(core RBAC)、角色分級模型RBAC1(hierarchal RBAC)、角色限制模型RBAC2(constraint RBAC)和統一模型RBAC3(combines RBAC)。RBAC0模型如圖1所示。
(1)RBAC0定義了能構成一個(gè)RBAC控制系統的最小的元素集合。在RBAC之中,包含用戶(hù)users(USERS)、角色roles(ROLES)、目標objects(OBS)、操作operations(OPS)、許可權permissions(PRMS)五個(gè)基本數據元素,權限被賦予角色,而不是用戶(hù),當一個(gè)角色被指定給一個(gè)用戶(hù)時(shí),此用戶(hù)就擁有了該角色所包含的權限。會(huì )話(huà)sessions是用戶(hù)與激活的角色集合之間的映射。RBAC0與傳統訪(fǎng)問(wèn)控制的差別在于增加一層間接性帶來(lái)了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴展。
(2)RBAC1引入角色間的繼承關(guān)系,角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系最一個(gè)絕對偏序關(guān)系,允許角色間的多繼承。而受限繼承關(guān)系則進(jìn)一步要求角色繼承關(guān)系是一個(gè)樹(shù)結構。
(3)RBAC2模型中添加了責任分離關(guān)系。RBAC2的約束規定了權限被賦予角色時(shí),或角色被賦予用戶(hù)時(shí),以及當用戶(hù)在某一時(shí)刻激活一個(gè)角色時(shí)所應遵循的強制性規則。責任分離包括靜態(tài)責任分離和動(dòng)態(tài)責任分離。約束與用戶(hù)-角色-權限關(guān)系一起決定了RBAC2模型中用戶(hù)的訪(fǎng)問(wèn)許可。
(4)RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關(guān)系,又提供了責任分離關(guān)系。
事實(shí)上,RBAC認為權限授權實(shí)際上是Who、What、How的問(wèn)題。在RBAC模型中,who、what、how構成了訪(fǎng)問(wèn)權限三元組,也就是"Who對What(Which)進(jìn)行How的操作"。這點(diǎn)我們在后面的描述中來(lái)詳細討論。
2采用.NET Framework 2.0架構設計
采用.NET Framework 2.0企業(yè)平臺架構構建權限管理系統。NET Framework 2.0集成了先進(jìn)的軟件體系架構思想,具有采用多層分布式應用模型、基于組件并能重用組件、統一完全模型和靈活的事務(wù)處理控制等特點(diǎn)。而且在需要的時(shí)候,可以與Windows Server 2003的Active Directory進(jìn)行無(wú)縫連接,直接通過(guò)Active Directory管理用戶(hù)帳戶(hù)。
系統邏輯上分為四層:表現層、業(yè)務(wù)層、數據訪(fǎng)問(wèn)層和數據層。
(1)表現層主要負責人機交互??梢允瓜到y管理員通過(guò)Web瀏覽器訪(fǎng)問(wèn)。
(2)業(yè)務(wù)層提供業(yè)務(wù)服務(wù),包括業(yè)務(wù)數據和業(yè)務(wù)邏輯,集中了系統業(yè)務(wù)處理。
(3)數據訪(fǎng)問(wèn)層主要負責數據的訪(fǎng)問(wèn),如數據的增加、修改、刪除和查找等。
(4)數據層主要負責數據的存儲、組織和管理。數據層使用了 SQL Server 2000或SQL Server 2005來(lái)實(shí)現。
3核心對象模型設計
根據RBAC模型的權限設計思想,建立權限管理系統的數據庫模型,如圖2所示。

根據RBAC模型的權限設計思想,建立權限管理系統的核心對象模型,如圖3所示。
由于RBAC解決的就是Who、What、How的問(wèn)題,通過(guò)圖3來(lái)做一個(gè)詳細的描述:
Who:權限的擁用者或主體(User、Group、Role、Actor)。
What:權限針對的對象或資源(Resource),資源具有層次關(guān)系和包含關(guān)系。例如,網(wǎng)頁(yè)是資源,網(wǎng)頁(yè)上的按鈕、文本框等對象也是資源,是網(wǎng)頁(yè)節點(diǎn)的子節點(diǎn),如可以訪(fǎng)問(wèn)按鈕,則必須能夠訪(fǎng)問(wèn)頁(yè)面。資源應該是一個(gè)樹(shù)形結構。
How:具體的權限(Privilege,正向授權與負向授權),這個(gè)權限是綁定在特定的對象上的。比如說(shuō)教師測評系統新聞的發(fā)布權限,叫做"部門(mén)新聞發(fā)布權限"。這就表明,該Privilege是一個(gè)發(fā)布權限,而且是針對部門(mén)新聞這種資源的一種發(fā)布權限。權限,包括系統定義權限和用戶(hù)自定義權限,用戶(hù)自定義權限之間可以指定排斥和包含關(guān)系(如:讀取,修改,管理三個(gè)權限,管理權限包含前兩種權限)。
Operator:操作。表明對What的How操作。也就是Privilege+Resource的集合;
Role:角色,一定數量的權限的集合,是粗粒度和細粒度(業(yè)務(wù)邏輯)的接口。一個(gè)基于粗粒度控制的權限框架軟件,對外的接口應該是Role,具體業(yè)務(wù)實(shí)現可以直接繼承或拓展豐富Role的內容,Role不是如同User或Group的具體實(shí)體,它是接口概念,抽象的通稱(chēng)。Role的繼承通過(guò)Group來(lái)體現,所以不考慮Role的繼承關(guān)系。但是Role可以與相關(guān)的Group相關(guān)聯(lián),便于授權。
Group:用戶(hù)組,權限分配的單位與載體,直接映射組織關(guān)系。權限不考慮分配給特定的用戶(hù)。組可以包括組(以實(shí)現權限的繼承)。組可以包含用戶(hù),組內用戶(hù)繼承組的權限。Group要實(shí)現繼承。即在創(chuàng )建時(shí)必須要指定該Group的ParentGroup是什么Group。在粗粒度控制上,可以認為,只要某用戶(hù)直接或者間接的屬于某個(gè)Group那么它就具備這個(gè)Group的所有操作許可。細粒度控制上,在業(yè)務(wù)邏輯的判斷中,User僅應關(guān)注其直接屬于的Group,用來(lái)判斷是否"同組"。
User:純粹的用戶(hù),與權限分離,只能通過(guò)Role去關(guān)聯(lián)相應的權限。
該模型中主要的關(guān)系有:分配資源操作RA(resource assignment)、分配角色權限PA(privi-lege assignment)、分配用戶(hù)組角色GA(group as-signment)描述如下:
(1)分配資源訪(fǎng)問(wèn)RA:實(shí)現資源和操作之間的關(guān)聯(lián)關(guān)系映射。
(2)分配角色權限PA:實(shí)現操作和角色之間的關(guān)聯(lián)關(guān)系映射。
(3)分配用戶(hù)組角色GA:實(shí)現用戶(hù)組和角色之間的關(guān)聯(lián)關(guān)系映射。 權限管理系統的操作模式主要分為以下3個(gè)步驟:
(1)創(chuàng )造資源、權限:用戶(hù)創(chuàng )建一個(gè)資源(Re-source)的實(shí)例的時(shí)候指定相關(guān)的權限以及權限分配。比如學(xué)生測評只能創(chuàng )建者有修改的權限,同Group的人員只能擁有查看的權限。
(2)分配權限:系統管理員指定相關(guān)資源(Re-source)的權限分配,創(chuàng )建Role,創(chuàng )建Group,給Role分配權限,給Group分配User,給Group賦予某個(gè)Role等等。
(3)使用權限:User使用管理員分配的角色去使用相應的系統功能。
4權限訪(fǎng)問(wèn)機制
權限管理系統服務(wù)器端:提供集中管理權限的服務(wù),負責提供用戶(hù)的鑒別、用戶(hù)信息、用戶(hù)組信息,以及權限關(guān)系表的計算,如圖4所示。
系統根據用戶(hù)、用戶(hù)組、角色、操作、訪(fǎng)問(wèn)方式和資源對象之間的關(guān)聯(lián)關(guān)系,同時(shí)考慮權限的正負向授予,計算出用戶(hù)的最小權限。在業(yè)務(wù)邏輯層使用SecuirtyManager.GetPower()方法實(shí)現此服務(wù)。采用代理Proxy模式,集中控制來(lái)自應用系統的所要訪(fǎng)問(wèn)的權限計算服務(wù),并返回權限關(guān)系表,即二元組{ResouceId,OperationId}。
在表現層:可以通過(guò)訪(fǎng)問(wèn)能力表CL和訪(fǎng)問(wèn)控制表ACL兩種可選的訪(fǎng)問(wèn)方式訪(fǎng)問(wèn)權限管理系統。以基于.NET Framework的教師測評系統為例,說(shuō)明訪(fǎng)問(wèn)過(guò)程:
(1)首先采用基于表單的驗證??紤]到需要鑒別的實(shí)體是用戶(hù),采用基于A(yíng)CL訪(fǎng)問(wèn)方式。用戶(hù)登錄時(shí)調用權限管理系統的用戶(hù)鑒別服務(wù),如果驗證成功,調用權限計算服務(wù),并返回權限關(guān)系表,以HashTable的方式存放到登錄用戶(hù)的全局Session中;如果沒(méi)有全局的Session或者過(guò)期,則被導向到登錄頁(yè)面,重新獲取權限。
(2)直接URL資源采用基于CL訪(fǎng)問(wèn)方式進(jìn)行的訪(fǎng)問(wèn)控制。如果用戶(hù)直接輸入URL地址訪(fǎng)問(wèn)頁(yè)面,有兩種方法控制訪(fǎng)問(wèn):1.通過(guò)權限標簽讀取CL進(jìn)行控制;2.采取頁(yè)面載人判斷權限模式,進(jìn)行權限控制,如果沒(méi)有權限,則重定向到登錄頁(yè)面。
5權限控制機制
由于應用系統的權限控制與特定的技術(shù)環(huán)境有關(guān),以基于.NET Framework 2.0架構的教師測評系統為例來(lái)說(shuō)明,系統主要的展示組件是aspx頁(yè)面,采用標記和權限控制組件共同來(lái)實(shí)現。
(1)權限標識:利用頁(yè)面標簽來(lái)標識該頁(yè)面上所有的權限訪(fǎng)問(wèn)控制對象。
(2)權限控制:應用系統用戶(hù)登錄系統時(shí),從權限管理中獲得權限關(guān)系表之后,一方面,權限標簽控制頁(yè)面展示;另一方面,利用權限控制組件在業(yè)務(wù)邏輯中進(jìn)行相應的權限控制,尤其是和業(yè)務(wù)邏輯緊密聯(lián)系的控制對象實(shí)例的權限控制。
6權限數據存儲機制
權限管理采用了關(guān)系型數據庫SQL Server2000或SQL Server 2005用來(lái)存儲用戶(hù)信息、用戶(hù)組信息、角色、操作、權限等信息。
7結 論
本文論述了一種基于RBAC的權限管理系統的實(shí)現技術(shù)方案。該權限管理系統已成功應用于教師測評系統的設計和開(kāi)發(fā)實(shí)踐,與教師測評系統具有很好的集成。實(shí)踐表明,采用基于RBAC模型的權限管理系統具有以下優(yōu)勢:由于角色/權限之間的變化比角色/用戶(hù)關(guān)系之間的變化相對要慢得多,減小了授權管理的復雜性,降低管理開(kāi)銷(xiāo);而且能夠靈活地支持應用系統的安全策略,并對應用系統的變化有很大的伸縮性;在操作上,權限分配直觀(guān)、容易理解,便于使用;分級權限適合分層的用戶(hù)級形式;重用性強。
評論