細(xì)心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書(shū),跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點(diǎn)粗墨,七八筆買賣,九十道人情。

          BlogJava 聯(lián)系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
           

          基于RBAC模型的權(quán)限管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

           

           

          裴輝東 梁云風(fēng)

           

           

          1. 山東省煙臺(tái)海頤軟件股份有限公司;2山東省煙臺(tái)東方電子信息產(chǎn)業(yè)股份有限公司

           

           

           

           

          摘要:提出了基于RBAC模型的權(quán)限管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方案。介紹了采用的J2EE架構(gòu)的多層體系結(jié)構(gòu)設(shè)計(jì),闡述了基于角色的訪問(wèn)控制RBAC模型的設(shè)計(jì)思想,并討論了權(quán)限管理系統(tǒng)的核心面向?qū)ο笤O(shè)計(jì)模型,以及權(quán)限訪問(wèn)、權(quán)限控制和權(quán)限存儲(chǔ)機(jī)制等關(guān)鍵技術(shù)。

           

           

          關(guān)鍵詞:權(quán)限管理系統(tǒng);角色;訪問(wèn)控制;RBAC模型;J2EE;LDAP

           

           

           

           

          0 引言

           

           

          管理信息系統(tǒng)是一個(gè)復(fù)雜的人機(jī)交互系統(tǒng),其中每個(gè)具體環(huán)節(jié)都可能受到安全威脅。構(gòu)建強(qiáng)健的權(quán)限管理系統(tǒng),保證管理信息系統(tǒng)的安全性是十分重要的。權(quán)限管理系統(tǒng)是管理信息系統(tǒng)中可代碼重用性最高的模塊之一。任何多用戶的系統(tǒng)都不可避免的涉及到相同的權(quán)限需求,都需要解決實(shí)體鑒別、數(shù)據(jù)保密性、數(shù)據(jù)完整性、防抵賴和訪問(wèn)控制等安全服務(wù)(據(jù)ISO7498-2)。例如,訪問(wèn)控制服務(wù)要求系統(tǒng)根據(jù)操作者已經(jīng)設(shè)定的操作權(quán)限,控制操作者可以訪問(wèn)哪些資源,以及確定對(duì)資源如何進(jìn)行操作。

           

           

          目前,權(quán)限管理系統(tǒng)也是重復(fù)開(kāi)發(fā)率最高的模塊之一。在企業(yè)中,不同的應(yīng)用系統(tǒng)都擁有一套獨(dú)立的權(quán)限管理系統(tǒng)。每套權(quán)限管理系統(tǒng)只滿足自身系統(tǒng)的權(quán)限管理需要,無(wú)論在數(shù)據(jù)存儲(chǔ)、權(quán)限訪問(wèn)和權(quán)限控制機(jī)制等方面都可能不一樣,這種不一致性存在如下弊端:

           

           

          a.系統(tǒng)管理員需要維護(hù)多套權(quán)限管理系統(tǒng),重復(fù)勞動(dòng)。

           

           

          b.用戶管理、組織機(jī)構(gòu)等數(shù)據(jù)重復(fù)維護(hù),數(shù)據(jù)一致性、完整性得不到保證。

           

           

          c.由于權(quán)限管理系統(tǒng)的設(shè)計(jì)不同,概念解釋不同,采用的技術(shù)有差異,權(quán)限管理系統(tǒng)之間的集成存在問(wèn)題,實(shí)現(xiàn)單點(diǎn)登錄難度十分大,也給企業(yè)構(gòu)建企業(yè)門(mén)戶帶來(lái)困難。

           

           

          采用統(tǒng)一的安全管理設(shè)計(jì)思想,規(guī)范化設(shè)計(jì)和先進(jìn)的技術(shù)架構(gòu)體系,構(gòu)建一個(gè)通用的、完善的、安全的、易于管理的、有良好的可移植性和擴(kuò)展性的權(quán)限管理系統(tǒng),使得權(quán)限管理系統(tǒng)真正成為權(quán)限控制的核心,在維護(hù)系統(tǒng)安全方面發(fā)揮重要的作用,是十分必要的。

           

           

          本文介紹一種基于角色的訪問(wèn)控制RBAC(Role-Based policies Access Control)模型的權(quán)限管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),系統(tǒng)采用基于J2EE架構(gòu)技術(shù)實(shí)現(xiàn)。并以討論了應(yīng)用系統(tǒng)如何進(jìn)行權(quán)限的訪問(wèn)和控制

           

           

           

           

          1 采用J2EE架構(gòu)設(shè)計(jì)

           

           

          采用J2EE企業(yè)平臺(tái)架構(gòu)構(gòu)建權(quán)限管理系統(tǒng)。J2EE架構(gòu)集成了先進(jìn)的軟件體系架構(gòu)思想,具有采用多層分布式應(yīng)用模型、基于組件并能重用組件、統(tǒng)一完全模型和靈活的事務(wù)處理控制等特點(diǎn)。

           

           

          系統(tǒng)邏輯上分為四層:客戶層、Web層、業(yè)務(wù)層和資源層。

           

           

          a. 客戶層主要負(fù)責(zé)人機(jī)交互。可以使系統(tǒng)管理員通過(guò)Web瀏覽器訪問(wèn),也可以提供不同業(yè)務(wù)系統(tǒng)的API、Web Service調(diào)用。

           

           

          b. Web層封裝了用來(lái)提供通過(guò)Web訪問(wèn)本系統(tǒng)的客戶端的表示層邏輯的服務(wù)。

           

           

          c. 業(yè)務(wù)層提供業(yè)務(wù)服務(wù),包括業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,集中了系統(tǒng)業(yè)務(wù)處理。主要的業(yè)務(wù)管理模塊包括組織機(jī)構(gòu)管理、用戶管理、資源管理、權(quán)限管理和訪問(wèn)控制幾個(gè)部分。

           

           

          d. 資源層主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、組織和管理等。資源層提供了兩種實(shí)現(xiàn)方式:大型關(guān)系型數(shù)據(jù)庫(kù)(如ORACLE)和LDAP(Light Directory Access Protocol,輕量級(jí)目錄訪問(wèn)協(xié)議)目錄服務(wù)器(如微軟的活動(dòng)目錄)。

           

           

          2 RBAC模型

           

           

          訪問(wèn)控制是針對(duì)越權(quán)使用資源的防御措施。基本目標(biāo)是為了限制訪問(wèn)主體(用戶、進(jìn)程、服務(wù)等)對(duì)訪問(wèn)客體(文件、系統(tǒng)等)的訪問(wèn)權(quán)限,從而使計(jì)算機(jī)系統(tǒng)在合法范圍內(nèi)使用;決定用戶能做什么,也決定代表一定用戶利益的程序能做什么[1]

           

           

          企業(yè)環(huán)境中的訪問(wèn)控制策略一般有三種:自主型訪問(wèn)控制方法、強(qiáng)制型訪問(wèn)控制方法和基于角色的訪問(wèn)控制方法(RBAC)。其中,自主式太弱,強(qiáng)制式太強(qiáng),二者工作量大,不便于管理[1]。基于角色的訪問(wèn)控制方法是目前公認(rèn)的解決大型企業(yè)的統(tǒng)一資源訪問(wèn)控制的有效方法。其顯著的兩大特征是:1.減小授權(quán)管理的復(fù)雜性,降低管理開(kāi)銷2.靈活地支持企業(yè)的安全策略,并對(duì)企業(yè)的變化有很大的伸縮性。

           

           

          NIST(The National Institute of Standards and Technology,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院)標(biāo)準(zhǔn)RBAC模型由4個(gè)部件模型組成,這4個(gè)部件模型分別是基本模型RBAC0(Core RBAC)、角色分級(jí)模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統(tǒng)一模型RBAC3(Combines RBAC)[1]。RBAC0模型如圖1所示。

          a. RBAC0定義了能構(gòu)成一個(gè)RBAC控制系統(tǒng)的最小的元素集合。在RBAC之中,包含用戶users(USERS)、角色roles(ROLES)、目標(biāo)objects(OBS)、操作operations(OPS)、許可權(quán)permissions(PRMS)五個(gè)基本數(shù)據(jù)元素,權(quán)限被賦予角色,而不是用戶,當(dāng)一個(gè)角色被指定給一個(gè)用戶時(shí),此用戶就擁有了該角色所包含的權(quán)限。會(huì)話sessions是用戶與激活的角色集合之間的映射。RBAC0與傳統(tǒng)訪問(wèn)控制的差別在于增加一層間接性帶來(lái)了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴(kuò)展。

           

           

          b. RBAC1引入角色間的繼承關(guān)系,角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系是一個(gè)絕對(duì)偏序關(guān)系,允許角色間的多繼承。而受限繼承關(guān)系則進(jìn)一步要求角色繼承關(guān)系是一個(gè)樹(shù)結(jié)構(gòu)。

           

           

          c. RBAC2模型中添加了責(zé)任分離關(guān)系。RBAC2的約束規(guī)定了權(quán)限被賦予角色時(shí),或角色被賦予用戶時(shí),以及當(dāng)用戶在某一時(shí)刻激活一個(gè)角色時(shí)所應(yīng)遵循的強(qiáng)制性規(guī)則。責(zé)任分離包括靜態(tài)責(zé)任分離和動(dòng)態(tài)責(zé)任分離。約束與用戶-角色-權(quán)限關(guān)系一起決定了RBAC2模型中用戶的訪問(wèn)許可。

           

           

          d. RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關(guān)系,又提供了責(zé)任分離關(guān)系。

           

           

          3核心對(duì)象模型設(shè)計(jì)

           

           

          根據(jù)RBAC模型的權(quán)限設(shè)計(jì)思想,建立權(quán)限管理系統(tǒng)的核心對(duì)象模型。如圖2所示。

           

           


          對(duì)象模型中包含的基本元素主要有:用戶(Users)、用戶組(Group)、角色(Role)、目標(biāo)(Objects)、訪問(wèn)模式Access Mode)、操作(Operator)。主要的關(guān)系有:分配角色權(quán)限PA(Permission Assignment)、分配用戶角色UA(Users Assignmen描述如下:

           

           

          a .控制對(duì)象:是系統(tǒng)所要保護(hù)的資源(Resource),可以被訪問(wèn)的對(duì)象資源的定義需要注意以下兩個(gè)問(wèn)題:

           

           

          1.資源具有層次關(guān)系和包含關(guān)系。例如,網(wǎng)頁(yè)是資源,網(wǎng)頁(yè)上的按鈕、文本框等對(duì)象也是資源,是網(wǎng)頁(yè)節(jié)點(diǎn)的子節(jié)點(diǎn),如可以訪問(wèn)按鈕,則必須能夠訪問(wèn)頁(yè)面。

           

           

          2.這里提及的資源概念是指資源的類別Resource Class),不是某個(gè)特定資源的實(shí)例(Resource Instance)。資源的類別和資源的實(shí)例的區(qū)分,以及資源的粒度的細(xì)分,有利于確定權(quán)限管理系統(tǒng)和應(yīng)用系統(tǒng)之間的管理邊界,權(quán)限管理系統(tǒng)需要對(duì)于資源的類別進(jìn)行權(quán)限管理,而應(yīng)用系統(tǒng)需要對(duì)特定資源的實(shí)例進(jìn)行權(quán)限管理。兩者的區(qū)分主要是基于以下兩點(diǎn)考慮:

           

           

          一方面,資源實(shí)例的權(quán)限常具有資源的相關(guān)性。即根據(jù)資源實(shí)例和訪問(wèn)資源的主體之間的關(guān)聯(lián)關(guān)系,才可能進(jìn)行資源的實(shí)例權(quán)限判斷。

           

           

          例如,在管理信息系統(tǒng)中,需要按照營(yíng)業(yè)區(qū)域劃分不同部門(mén)的客戶,A區(qū)和B區(qū)都具有修改客戶資料這一受控的資源,這里“客戶檔案資料”是屬于資源的類別的范疇。如果規(guī)A區(qū)只能修改A區(qū)管理的客戶資料,就必須要區(qū)分出資料的歸屬,這里的資源是屬于資源實(shí)例的范疇。客戶檔案(資源)本身應(yīng)該有其使用者的信息(客戶資料可能就含有營(yíng)業(yè)區(qū)域這一屬性),才能區(qū)分特定資源的實(shí)例操作,可以修改屬于自己管轄的信息內(nèi)容。

           

           

          另一方面,資源的實(shí)例權(quán)限常具有相當(dāng)大的業(yè)務(wù)邏輯相關(guān)性。對(duì)不同的業(yè)務(wù)邏輯,常常意味著完全不同的權(quán)限判定原則和策略。

           

           

          b.權(quán)限:對(duì)受保護(hù)的資源操作的訪問(wèn)許可(Access Permission),是綁定在特定的資源實(shí)例上的。對(duì)應(yīng)地,訪問(wèn)策略Access Strategy)和資源類別相關(guān),不同的資源類別可能采用不同的訪問(wèn)模式(Access Mode)。例如,頁(yè)面具有能打開(kāi)、不能打開(kāi)的訪問(wèn)模式,按鈕具有可用、不可用的訪問(wèn)模式,文本編輯框具有可編輯、不可編輯的訪問(wèn)模式。同一資源的訪問(wèn)策略可能存在排斥和包含關(guān)系。例如,某個(gè)數(shù)據(jù)集的可修改訪問(wèn)模式就包含了可查詢?cè)L問(wèn)模式。

           

           

          c.用戶:權(quán)限的擁有者或主體。用戶和權(quán)限實(shí)現(xiàn)分離,通過(guò)授權(quán)管理進(jìn)行綁定。

           

           

          d.用戶組:一組用戶的集合。在業(yè)務(wù)邏輯的判斷中,可以實(shí)現(xiàn)基于個(gè)人身份或組的身份進(jìn)行判斷。系統(tǒng)弱化了用戶組的概念,主要實(shí)現(xiàn)用戶(個(gè)人的身份)的方式。

           

           

          e.角色:權(quán)限分配的單位與載體。角色通過(guò)繼承關(guān)系支持分級(jí)的權(quán)限實(shí)現(xiàn)。例如,科長(zhǎng)角色同時(shí)具有科長(zhǎng)角色、科內(nèi)不同業(yè)務(wù)人員角色。

           

           

          f.操作:完成資源的類別和訪問(wèn)策略之間的綁定。

           

           

          g.分配角色權(quán)限PA:實(shí)現(xiàn)操作和角色之間的關(guān)聯(lián)關(guān)系映射。

           

           

          h.分配用戶角色UA:實(shí)現(xiàn)用戶和角色之間的關(guān)聯(lián)關(guān)系映射。

           

           

          該對(duì)象模型最終將訪問(wèn)控制模型轉(zhuǎn)化為訪問(wèn)矩陣形式。訪問(wèn)矩陣中的行對(duì)應(yīng)于用戶,列對(duì)應(yīng)于操作,每個(gè)矩陣元素規(guī)定了相應(yīng)的角色,對(duì)應(yīng)于相應(yīng)的目標(biāo)被準(zhǔn)予的訪問(wèn)許可、實(shí)施行為。按訪問(wèn)矩陣中的行看,是訪問(wèn)能力表CL(Access Capabilities)的內(nèi)容;按訪問(wèn)矩陣中的列看,是訪問(wèn)控制表ACL(Access Control Lists)的內(nèi)容。

           

           

          4 權(quán)限訪問(wèn)機(jī)制

           

           

          權(quán)限管理系統(tǒng)端:提供集中管理權(quán)限的服務(wù),負(fù)責(zé)提供用戶的鑒別、用戶信息、組織結(jié)構(gòu)信息,以及權(quán)限關(guān)系表的計(jì)算。如圖3所示。

           

           


           

           

          3 權(quán)限的訪問(wèn)示意圖

           

           

          Fig.3 Privilege invoke

           

           

          系統(tǒng)根據(jù)用戶,角色、操作、訪問(wèn)策略和控制對(duì)象之間的關(guān)聯(lián)關(guān)系,同時(shí)考慮權(quán)限的正負(fù)向授予,計(jì)算出用戶的最小權(quán)限。在業(yè)務(wù)邏輯層采用Session Bean實(shí)現(xiàn)此服務(wù),也可以發(fā)布成Web Service。采用代理Proxy模式,集中控制來(lái)自應(yīng)用系統(tǒng)的所要訪問(wèn)的權(quán)限計(jì)算服務(wù),并返回權(quán)限關(guān)系表,即二元組{ObjectId,OperatorId}。

           

           

          應(yīng)用系統(tǒng)端:可以通過(guò)訪問(wèn)能力表CL和訪問(wèn)控制表ACL兩種可選的訪問(wèn)方式訪問(wèn)權(quán)限管理系統(tǒng)。以基于J2EE框架的應(yīng)用系統(tǒng)為例,說(shuō)明訪問(wèn)過(guò)程

           

           

          a.首先采用基于表單的驗(yàn)證,利用Servlet方式集中處理登錄請(qǐng)求[2]。考慮到需要鑒別的實(shí)體是用戶,采用基于ACL訪問(wèn)方式。用戶登錄時(shí)調(diào)用權(quán)限管理系統(tǒng)的用戶鑒別服務(wù),如果驗(yàn)證成功,調(diào)用權(quán)限計(jì)算服務(wù),并返回權(quán)限關(guān)系表,以HashMap的方式存放到登錄用戶的全局Session中;如果沒(méi)有全局的Session或者過(guò)期,則被導(dǎo)向到登錄頁(yè)面,重新獲取權(quán)限。

           

           

          b.直接URL資源采用基于CL訪問(wèn)方式進(jìn)行的訪問(wèn)控制。如果用戶直接輸入U(xiǎn)RL地址訪問(wèn)頁(yè)面,有兩種方法控制訪問(wèn):1.通過(guò)權(quán)限標(biāo)簽讀取CL進(jìn)行控制;2.采取Filter模式,進(jìn)行權(quán)限控制,如果沒(méi)有權(quán)限,則重定向到登錄頁(yè)面。

           

           

          5 權(quán)限控制機(jī)制

           

           

          權(quán)限所要控制的資源類別是根據(jù)應(yīng)用系統(tǒng)的需要而定義的,具有的語(yǔ)義和控制規(guī)則也是應(yīng)用系統(tǒng)提供的,對(duì)于權(quán)限管理系統(tǒng)來(lái)說(shuō)是透明的,權(quán)限將不同應(yīng)用系統(tǒng)的資源和操作統(tǒng)一對(duì)待。應(yīng)用系統(tǒng)調(diào)用權(quán)限管理系統(tǒng)所獲得的權(quán)限關(guān)系表,也是需要應(yīng)用系統(tǒng)來(lái)解釋的。按此設(shè)計(jì),權(quán)限管理系統(tǒng)的通用性較強(qiáng),權(quán)限的控制機(jī)制則由應(yīng)用系統(tǒng)負(fù)責(zé)處理。

           

           

          由于應(yīng)用系統(tǒng)的權(quán)限控制與特定的技術(shù)環(huán)境有關(guān),以基于J2EE架構(gòu)的應(yīng)用系統(tǒng)為例來(lái)說(shuō)明,系統(tǒng)主要的展示組件是JSP頁(yè)面,采用標(biāo)記庫(kù)和權(quán)限控制組件共同來(lái)實(shí)現(xiàn)。

           

           

          a. 權(quán)限標(biāo)識(shí):利用標(biāo)簽來(lái)標(biāo)識(shí)不同級(jí)別資源,頁(yè)面權(quán)限標(biāo)簽將標(biāo)識(shí)頁(yè)面對(duì)象。

           

           

          b. 權(quán)限注冊(cè):遍歷JSP頁(yè)面上的權(quán)限控制標(biāo)簽,讀取JSP的控制權(quán)限。通過(guò)權(quán)限注冊(cè)組件將JSP頁(yè)面上的權(quán)限控制對(duì)象以及規(guī)則注冊(cè)到權(quán)限管理信息系統(tǒng)中。

           

           

          c. 權(quán)限控制:應(yīng)用系統(tǒng)用戶登錄系統(tǒng)時(shí),從權(quán)限管理系統(tǒng)獲得權(quán)限關(guān)系表之后,一方面,權(quán)限標(biāo)簽控制頁(yè)面展示;另一方面,利用權(quán)限控制組件在業(yè)務(wù)邏輯中進(jìn)行相應(yīng)的權(quán)限控制尤其是和業(yè)務(wù)邏輯緊密聯(lián)系的控制對(duì)象實(shí)例的權(quán)限控制。

           

           

          6 權(quán)限存儲(chǔ)機(jī)制

           

           

          權(quán)限管理系統(tǒng)采用了兩種可選的存儲(chǔ)機(jī)制:LDAP(Lightweight Directory Access Protocol)目錄服務(wù)數(shù)據(jù)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)。存儲(chǔ)用戶信息、組織結(jié)構(gòu)、角色、操作、訪問(wèn)模式等信息。

           

           

          其中,目錄服務(wù)系統(tǒng)基于LDAP標(biāo)準(zhǔn),具有廣泛的數(shù)據(jù)整合和共享能力。元目錄(Meta-Directory)功能允許快速、簡(jiǎn)潔的與企業(yè)現(xiàn)存基礎(chǔ)結(jié)構(gòu)進(jìn)行集成,解決基于傳統(tǒng)RDBMS等用戶數(shù)據(jù)庫(kù)與LDAP用戶數(shù)據(jù)庫(kù)的同步問(wèn)題。

           

           

          7 結(jié)語(yǔ)

           

           

          本文論述了一種基于RBAC模型的權(quán)限管理系統(tǒng)的實(shí)現(xiàn)技術(shù)方案。該權(quán)限管理系統(tǒng)已成功應(yīng)用于系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)實(shí)踐,與應(yīng)用系統(tǒng)具有很好的集成。實(shí)踐表明,采用基于RBAC模型的權(quán)限具有以下優(yōu)勢(shì):權(quán)限分配直觀、容易理解,便于使用;擴(kuò)展性好,支持崗位、權(quán)限多變的需求;分級(jí)權(quán)限適合分層的組織結(jié)構(gòu)形式;重用性強(qiáng)。

           

          posted on 2007-04-27 10:07 張金鵬 閱讀(247) 評(píng)論(0)  編輯  收藏 所屬分類: 項(xiàng)目框架的設(shè)想
          主站蜘蛛池模板: 普陀区| 葵青区| 汪清县| 晋城| 永新县| 南漳县| 察哈| 广德县| 仪征市| 土默特左旗| 松原市| 阿城市| 新龙县| 德清县| 富平县| 黑河市| 金阳县| 平谷区| 宜兴市| 全州县| 万全县| 梁山县| 海原县| 山西省| 河曲县| 同江市| 安图县| 集安市| 桐乡市| 南汇区| 尤溪县| 嘉定区| 房山区| 麦盖提县| 佛坪县| 保山市| 金乡县| 长汀县| 西盟| 西峡县| 侯马市|