新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于RBAC的權限管理系統的實現

        基于RBAC的權限管理系統的實現

        作者:昊光成,時云峰 時間:2008-12-09 來源:電子測試 收藏

        0 引 言

        本文引用地址:http://www.104case.com/article/90104.htm

          在許多的實際應用中,不只是要求用戶簡單地進行注冊登錄,還要求不同類別的用戶對資源有不同的操作權限。目前,權限管理系統也是重復開發率最高的模塊之一。在企業中,不同的應用系統都擁有一套獨立的權限管理系統。每套權限管理系統只滿足自身系統的權限管理需要,無論在數據存儲、權限訪問和權限控制機制等方面都可能不一樣,這種不一致性存在如下弊端:

          (1)系統管理員需要維護多套權限管理系統,重復勞動;

          (2)用戶管理、組織機構等數據重復維護,數據一致性、完整性得不到保證;

          (3)由于權限管理系統的設計不同,概念解釋不同,采用的技術有差異,權限管理系統之間的集成存在問題,實現單點登錄難度十分大,也給企業構建企業門戶帶來困難。

          采用統一的安全管理設計思想,規范化設計和先進的技術架構體系,構建一個通用的、完善的、安全的、易于管理的、有良好的可移植性和擴展性的權限管理系統,使得權限管理系統真正成為權限控制的核心,在維護系統安全方面發揮重要的作用,是十分必要的。

          本文介紹一種基于角色的訪問控制(role-based policies access control)模型的權限管理系統的設計和實現,系統采用基于.NFT Framework 2.0架構技術實現,并討論了應用系統如何進行權限的訪問和控制。

        1 的基本思想

          企業環境中的訪問控制策略一般有3種:自主型訪問控制方法、強制型訪問控制方法和基于危色的訪問控制方法()。其中,自主式太弱,強制式太強,二者工作最大,不便于管理。基于角色的訪問控制方法是目前公認的解決大型企業的統一資源訪問控制的有效方法。其最著的2大特征是:(1)減小授權管理的復雜性,降低管理開銷;(2)靈活地支持企業的安全策略,并對企業的變化有很大的伸縮性。

          美國國家標準與技術研究院(the national institute of standards and technology,NIST)標準RBAC模型由4個部件模型組成,這4個部件模型分別是基本模型RBAC0(core RBAC)、角色分級模型RBAC1(hierarchal RBAC)、角色限制模型RBAC2(constraint RBAC)和統一模型RBAC3(combines RBAC)。RBAC0模型如圖1所示。


         

          (1)RBAC0定義了能構成一個RBAC控制系統的最小的元素集合。在RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標objects(OBS)、操作operations(OPS)、許可權permissions(PRMS)五個基本數據元素,權限被賦予角色,而不是用戶,當一個角色被指定給一個用戶時,此用戶就擁有了該角色所包含的權限。會話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統訪問控制的差別在于增加一層間接性帶來了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴展。

          (2)RBAC1引入角色間的繼承關系,角色間的繼承關系可分為一般繼承關系和受限繼承關系。一般繼承關系僅要求角色繼承關系最一個絕對偏序關系,允許角色間的多繼承。而受限繼承關系則進一步要求角色繼承關系是一個樹結構。

          (3)RBAC2模型中添加了責任分離關系。RBAC2的約束規定了權限被賦予角色時,或角色被賦予用戶時,以及當用戶在某一時刻激活一個角色時所應遵循的強制性規則。責任分離包括靜態責任分離和動態責任分離。約束與用戶-角色-權限關系一起決定了RBAC2模型中用戶的訪問許可。

          (4)RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關系,又提供了責任分離關系。

          事實上,RBAC認為權限授權實際上是Who、What、How的問題。在RBAC模型中,who、what、how構成了訪問權限三元組,也就是"Who對What(Which)進行How的操作"。這點我們在后面的描述中來詳細討論。

        2采用.NET Framework 2.0架構設計

          采用.NET Framework 2.0企業平臺架構構建權限管理系統。NET Framework 2.0集成了先進的軟件體系架構思想,具有采用多層分布式應用模型、基于組件并能重用組件、統一完全模型和靈活的事務處理控制等特點。而且在需要的時候,可以與Windows Server 2003的Active Directory進行無縫連接,直接通過Active Directory管理用戶帳戶。

          系統邏輯上分為四層:表現層、業務層、數據訪問層和數據層。

          (1)表現層主要負責人機交互。可以使系統管理員通過Web瀏覽器訪問。
          (2)業務層提供業務服務,包括業務數據和業務邏輯,集中了系統業務處理。
          (3)數據訪問層主要負責數據的訪問,如數據的增加、修改、刪除和查找等。
          (4)數據層主要負責數據的存儲、組織和管理。數據層使用了 SQL Server 2000或SQL Server 2005來實現。

        3核心對象模型設計

          根據RBAC模型的權限設計思想,建立權限管理系統的數據庫模型,如圖2所示。

         

         

          根據RBAC模型的權限設計思想,建立權限管理系統的核心對象模型,如圖3所示。


         

          由于RBAC解決的就是Who、What、How的問題,通過圖3來做一個詳細的描述:

          Who:權限的擁用者或主體(User、Group、Role、Actor)。

          What:權限針對的對象或資源(Resource),資源具有層次關系和包含關系。例如,網頁是資源,網頁上的按鈕、文本框等對象也是資源,是網頁節點的子節點,如可以訪問按鈕,則必須能夠訪問頁面。資源應該是一個樹形結構。

          How:具體的權限(Privilege,正向授權與負向授權),這個權限是綁定在特定的對象上的。比如說教師測評系統新聞的發布權限,叫做"部門新聞發布權限"。這就表明,該Privilege是一個發布權限,而且是針對部門新聞這種資源的一種發布權限。權限,包括系統定義權限和用戶自定義權限,用戶自定義權限之間可以指定排斥和包含關系(如:讀取,修改,管理三個權限,管理權限包含前兩種權限)。

          Operator:操作。表明對What的How操作。也就是Privilege+Resource的集合;

          Role:角色,一定數量的權限的集合,是粗粒度和細粒度(業務邏輯)的接口。一個基于粗粒度控制的權限框架軟件,對外的接口應該是Role,具體業務實現可以直接繼承或拓展豐富Role的內容,Role不是如同User或Group的具體實體,它是接口概念,抽象的通稱。Role的繼承通過Group來體現,所以不考慮Role的繼承關系。但是Role可以與相關的Group相關聯,便于授權。

          Group:用戶組,權限分配的單位與載體,直接映射組織關系。權限不考慮分配給特定的用戶。組可以包括組(以實現權限的繼承)。組可以包含用戶,組內用戶繼承組的權限。Group要實現繼承。即在創建時必須要指定該Group的ParentGroup是什么Group。在粗粒度控制上,可以認為,只要某用戶直接或者間接的屬于某個Group那么它就具備這個Group的所有操作許可。細粒度控制上,在業務邏輯的判斷中,User僅應關注其直接屬于的Group,用來判斷是否"同組"。

          User:純粹的用戶,與權限分離,只能通過Role去關聯相應的權限。

          該模型中主要的關系有:分配資源操作RA(resource assignment)、分配角色權限PA(privi-lege assignment)、分配用戶組角色GA(group as-signment)描述如下:

          (1)分配資源訪問RA:實現資源和操作之間的關聯關系映射。
          (2)分配角色權限PA:實現操作和角色之間的關聯關系映射。
          (3)分配用戶組角色GA:實現用戶組和角色之間的關聯關系映射。 權限管理系統的操作模式主要分為以下3個步驟:

          (1)創造資源、權限:用戶創建一個資源(Re-source)的實例的時候指定相關的權限以及權限分配。比如學生測評只能創建者有修改的權限,同Group的人員只能擁有查看的權限。

          (2)分配權限:系統管理員指定相關資源(Re-source)的權限分配,創建Role,創建Group,給Role分配權限,給Group分配User,給Group賦予某個Role等等。

          (3)使用權限:User使用管理員分配的角色去使用相應的系統功能。

        4權限訪問機制

          權限管理系統服務器端:提供集中管理權限的服務,負責提供用戶的鑒別、用戶信息、用戶組信息,以及權限關系表的計算,如圖4所示。


         

          系統根據用戶、用戶組、角色、操作、訪問方式和資源對象之間的關聯關系,同時考慮權限的正負向授予,計算出用戶的最小權限。在業務邏輯層使用SecuirtyManager.GetPower()方法實現此服務。采用代理Proxy模式,集中控制來自應用系統的所要訪問的權限計算服務,并返回權限關系表,即二元組{ResouceId,OperationId}。

          在表現層:可以通過訪問能力表CL和訪問控制表ACL兩種可選的訪問方式訪問權限管理系統。以基于.NET Framework的教師測評系統為例,說明訪問過程:

          (1)首先采用基于表單的驗證。考慮到需要鑒別的實體是用戶,采用基于ACL訪問方式。用戶登錄時調用權限管理系統的用戶鑒別服務,如果驗證成功,調用權限計算服務,并返回權限關系表,以HashTable的方式存放到登錄用戶的全局Session中;如果沒有全局的Session或者過期,則被導向到登錄頁面,重新獲取權限。

          (2)直接URL資源采用基于CL訪問方式進行的訪問控制。如果用戶直接輸入URL地址訪問頁面,有兩種方法控制訪問:1.通過權限標簽讀取CL進行控制;2.采取頁面載人判斷權限模式,進行權限控制,如果沒有權限,則重定向到登錄頁面。

        5權限控制機制

          由于應用系統的權限控制與特定的技術環境有關,以基于.NET Framework 2.0架構的教師測評系統為例來說明,系統主要的展示組件是aspx頁面,采用標記和權限控制組件共同來實現。

          (1)權限標識:利用頁面標簽來標識該頁面上所有的權限訪問控制對象。

          (2)權限控制:應用系統用戶登錄系統時,從權限管理中獲得權限關系表之后,一方面,權限標簽控制頁面展示;另一方面,利用權限控制組件在業務邏輯中進行相應的權限控制,尤其是和業務邏輯緊密聯系的控制對象實例的權限控制。

        6權限數據存儲機制

          權限管理采用了關系型數據庫SQL Server2000或SQL Server 2005用來存儲用戶信息、用戶組信息、角色、操作、權限等信息。

        7結 論

          本文論述了一種基于RBAC的權限管理系統的實現技術方案。該權限管理系統已成功應用于教師測評系統的設計和開發實踐,與教師測評系統具有很好的集成。實踐表明,采用基于RBAC模型的權限管理系統具有以下優勢:由于角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,減小了授權管理的復雜性,降低管理開銷;而且能夠靈活地支持應用系統的安全策略,并對應用系統的變化有很大的伸縮性;在操作上,權限分配直觀、容易理解,便于使用;分級權限適合分層的用戶級形式;重用性強。

         



        關鍵詞: RBAC

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 巢湖市| 丘北县| 武邑县| 咸宁市| 灵山县| 玉环县| 营山县| 西盟| 凤山县| 建德市| 灵山县| 乌鲁木齐市| 惠东县| 微博| 孝义市| 高唐县| 万州区| 衡阳县| 海丰县| 纳雍县| 禹州市| 石狮市| 仙居县| 棋牌| 陇川县| 衡阳市| 搜索| 广东省| 开原市| 称多县| 开平市| 孟村| 普格县| 顺平县| 县级市| 即墨市| 云龙县| 神木县| 大同市| 清苑县| 呼伦贝尔市|