龔藝
四川廣播電視大學(xué) 四川 610073
隨著企業(yè)信息管理系統(tǒng)的逐漸發(fā)展,數(shù)據(jù)權(quán)限的需求日益增加,在一個(gè)企業(yè)信息管理系統(tǒng)里,可能涉及到多類(lèi)用戶,每類(lèi)用戶對(duì)應(yīng)著不同的數(shù)據(jù)訪問(wèn)范圍。RBAC并不能很好的滿足復(fù)雜的數(shù)據(jù)權(quán)限控制的需求。本文在RBAC模型的基礎(chǔ)之上,提出了一個(gè)加強(qiáng)數(shù)據(jù)權(quán)限管理的數(shù)據(jù)權(quán)限模型,滿足對(duì)復(fù)雜數(shù)據(jù)權(quán)限控制的需求。
RBAC的核心思想是將權(quán)限與角色聯(lián)系起來(lái),在系統(tǒng)中根據(jù)應(yīng)用的需要為不同的工作崗位創(chuàng)建相應(yīng)的角色,同時(shí)根據(jù)用戶職責(zé)指派合適的角色,用戶通過(guò)指派的角色獲得相應(yīng)的權(quán)限,實(shí)現(xiàn)對(duì)文件的訪問(wèn)。也就是說(shuō),傳統(tǒng)的訪問(wèn)控制是直接將訪問(wèn)主體(發(fā)出訪問(wèn)操作,有存取要求的主動(dòng)方)和客體(被調(diào)用的程序或欲存取的數(shù)據(jù)訪問(wèn))相聯(lián)系,而RBAC在中間加入角色,通過(guò)角色溝通主體和客體,角色的目的就是為了隔離用戶和權(quán)限。角色作為一個(gè)用戶與權(quán)限的代理層,解耦了權(quán)限和用戶的關(guān)系,所有的授權(quán)應(yīng)該給予角色而不是直接給用戶,從而實(shí)現(xiàn)了用戶與訪問(wèn)權(quán)限的邏輯分離。1996年,Sandhu發(fā)布了RBAC96 的RBAC 通用模型族。文獻(xiàn)[5]介紹了一些基于角色系統(tǒng)的開(kāi)發(fā)框架。圖1 顯示了通用模型族中最通用的模型。
圖1 RBAC模型
用戶和角色之間是多對(duì)多的關(guān)系,一個(gè)用戶可以被賦予若干角色,一個(gè)角色也可以被賦予若干個(gè)具體用戶。同樣,角色和權(quán)限之間也是多對(duì)多的關(guān)系,一個(gè)角色可以具有多項(xiàng)權(quán)限,一個(gè)權(quán)限也可以賦予多個(gè)不同的角色。某系統(tǒng)的操作用戶,可以通過(guò)他所具有的角色的權(quán)限來(lái)判斷其可訪問(wèn)的系統(tǒng)資源和對(duì)系統(tǒng)資源可以進(jìn)行的操作,這就是RBAC最基本的工作原理。
RBAC的描述如下:
u:User用戶;
r:Role角色;
p:privilege權(quán)限。
此時(shí),如果某個(gè)用戶u 對(duì)某個(gè)業(yè)務(wù)對(duì)象o 具有的權(quán)限記為P (u,o),則有如下關(guān)系:
P (u,o)=Pr(r(u),o)
其中,Pr(r(u),o)是通過(guò)用戶u 所賦予的角色r對(duì)業(yè)務(wù)對(duì)象o的權(quán)限。
大型企業(yè)系統(tǒng)一般功能龐大復(fù)雜,不同身份和崗位的用戶對(duì)系統(tǒng)模塊功能的使用權(quán)限不同。這種基于角色的權(quán)限控制模型可以直接將企業(yè)組織結(jié)構(gòu)映射到信息系統(tǒng)中,使得對(duì)用戶權(quán)限的管理更加直觀、方便和統(tǒng)一,在很大程度上簡(jiǎn)化了權(quán)限管理工作。
在企業(yè)應(yīng)用系統(tǒng)中,由于用戶量大、用戶層次結(jié)構(gòu)復(fù)雜、業(yè)務(wù)對(duì)象龐雜,權(quán)限涉及到比較復(fù)雜的功能權(quán)限和數(shù)據(jù)權(quán)限,其中功能權(quán)限可以是一個(gè)按鈕或者鏈接,而數(shù)據(jù)權(quán)限則是對(duì)不同層次用戶的不同數(shù)據(jù)范圍的限制,假設(shè)功能權(quán)限的數(shù)量為m,數(shù)據(jù)權(quán)限的數(shù)量為n,在RBAC模型中,對(duì)于完全的權(quán)限管理需要有m*n種權(quán)限關(guān)系,在大型的企業(yè)信息管理系統(tǒng)中,隨著功能數(shù)量的增加,角色權(quán)限的配置非常龐大而復(fù)雜,并且一旦需要改變數(shù)據(jù)權(quán)限的類(lèi)型數(shù)量,將需要對(duì)權(quán)限表做較大的調(diào)整,因此不具有良好的可擴(kuò)展性。
針對(duì)上述問(wèn)題,本文在角色的權(quán)限控制模型的基礎(chǔ)之上,設(shè)計(jì)了一個(gè)新的數(shù)據(jù)權(quán)限模型如圖2所示。
圖2 基于RBAC 的數(shù)據(jù)權(quán)限模型
數(shù)據(jù)權(quán)限模型將權(quán)限劃分為功能權(quán)限和數(shù)據(jù)權(quán)限,對(duì)功能權(quán)限和數(shù)據(jù)權(quán)限分別設(shè)置不同的角色,分別為數(shù)據(jù)角色和功能角色。為用戶不僅需要賦予功能角色,同時(shí)也需要賦予數(shù)據(jù)角色。用戶需要訪問(wèn)一個(gè)模塊時(shí),不僅要取得該模塊對(duì)應(yīng)的功能角色的權(quán)限,還要取得該模塊對(duì)應(yīng)的數(shù)據(jù)角色的數(shù)據(jù)權(quán)限,才可以訪問(wèn)該模塊功能下的數(shù)據(jù)。
模型中將角色分為了類(lèi)型角色,用戶與角色關(guān)系變?yōu)榱擞脩艄δ芙巧年P(guān)系和用戶與數(shù)據(jù)角色的關(guān)系,雖然對(duì)用戶角色賦予的工作量增加了,但是解耦了角色與功能權(quán)限、數(shù)據(jù)權(quán)限之間的關(guān)系,使得完全權(quán)限集僅需要包含m+n個(gè)權(quán)限即可。假設(shè)數(shù)據(jù)權(quán)限類(lèi)型數(shù)量增加為n+ x,則完全權(quán)限集只需增加為m+n+x即可,而RBAC模型中完全權(quán)限集所對(duì)應(yīng)的m*(n+ x)=m*n+m*x,同理,當(dāng)功能權(quán)限增加為m+x時(shí),完全權(quán)限集也僅增加為m+n+x,而RBAC模型中完全權(quán)限集所對(duì)應(yīng)的(m+ x)*n=m*n +n*x。這使得數(shù)據(jù)權(quán)限模型隨著系統(tǒng)數(shù)據(jù)權(quán)限的變更具有更少的變動(dòng),具有更好的可擴(kuò)展性,減少了功能權(quán)限和數(shù)據(jù)權(quán)限的增加為角色權(quán)限維護(hù)帶來(lái)的大量的增改工作。在實(shí)際操作中,也可以使用戶的角色賦予更加清晰,達(dá)到更為簡(jiǎn)潔的角色權(quán)限控制。
數(shù)據(jù)權(quán)限模型的權(quán)限控制系統(tǒng)采用普遍的三層架構(gòu),包括表示層、業(yè)務(wù)層和數(shù)據(jù)層。其中數(shù)據(jù)層是由數(shù)據(jù)庫(kù)系統(tǒng)組成,權(quán)限管理則以數(shù)據(jù)庫(kù)作為基礎(chǔ)來(lái)進(jìn)行。數(shù)據(jù)庫(kù)的設(shè)計(jì)結(jié)構(gòu)如圖3所示。
圖3 數(shù)據(jù)權(quán)限模型的數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)構(gòu)圖
用戶通過(guò)“用戶-功能角色”和“用戶-數(shù)據(jù)角色”建立起動(dòng)態(tài)的對(duì)應(yīng)關(guān)系,功能角色與“功能角色-模塊-按鍵”建立動(dòng)態(tài)的對(duì)應(yīng)關(guān)系,數(shù)據(jù)角色則與“數(shù)據(jù)角色-模塊-數(shù)據(jù)范圍”建立動(dòng)態(tài)的對(duì)應(yīng)關(guān)系,通過(guò)這種動(dòng)態(tài)的對(duì)應(yīng)關(guān)系可以更簡(jiǎn)便的建立用戶與功能權(quán)限和數(shù)據(jù)權(quán)限之間的對(duì)應(yīng)關(guān)系。
用戶授權(quán)的實(shí)現(xiàn)通過(guò)共九個(gè)部分實(shí)現(xiàn),包括用戶管理、模塊管理、模塊按鍵管理、模塊數(shù)據(jù)范圍管理、功能角色管理、數(shù)據(jù)角色管理、功能角色模塊按鍵對(duì)應(yīng)表管理、數(shù)據(jù)角色模塊數(shù)據(jù)范圍對(duì)應(yīng)表管理、用戶功能角色和數(shù)據(jù)角色分配管理。
其中模塊按鍵和模塊數(shù)據(jù)范圍的實(shí)際應(yīng)用中隨著系統(tǒng)模塊的增減而改變,維護(hù)量?jī)H隨著系統(tǒng)模塊的增減以及數(shù)據(jù)權(quán)限范圍的變化而線性變化。而用戶授權(quán)部分由用戶管理、功能角色管理、數(shù)據(jù)角色管理和用戶功能角色和數(shù)據(jù)角色分配管理實(shí)現(xiàn),根據(jù)實(shí)際需求,為用戶需要訪問(wèn)的菜單模塊和此菜單模塊下訪問(wèn)的數(shù)據(jù)范圍分配角色,可以實(shí)現(xiàn)方便快捷的實(shí)現(xiàn)權(quán)限管理。
具體的系統(tǒng)實(shí)現(xiàn)流程為:頁(yè)面模塊讀入時(shí),根據(jù)用戶ID獲取用戶的功能權(quán)限和數(shù)據(jù)權(quán)限,根據(jù)功能角色判斷用戶對(duì)該頁(yè)面模塊的訪問(wèn)權(quán)限,獲取通過(guò)后,判斷該用戶的數(shù)據(jù)權(quán)限,并將數(shù)據(jù)權(quán)限鍵值存儲(chǔ)到Session中,在用戶使用按鍵時(shí),判斷根據(jù)Session中的數(shù)據(jù)權(quán)限范圍,將其注入到SQL查詢(xún)語(yǔ)句中,此時(shí)只需要將一定的范圍限制語(yǔ)句作為一個(gè)封裝的方法加入到SQL語(yǔ)句中,即可實(shí)現(xiàn)對(duì)數(shù)據(jù)訪問(wèn)范圍的控制,當(dāng)用戶在該模塊下的數(shù)據(jù)權(quán)限范圍發(fā)生變化時(shí),只需在改變用戶在該模塊下的數(shù)據(jù)權(quán)限范圍,并不需要改變數(shù)據(jù)訪問(wèn)層的代碼。如果系統(tǒng)需要修改數(shù)據(jù)權(quán)限范圍,只需改變對(duì)數(shù)據(jù)權(quán)限限制語(yǔ)句所封裝的方法,即可實(shí)現(xiàn)對(duì)數(shù)據(jù)權(quán)限的修改,有效的減少數(shù)據(jù)訪問(wèn)層代碼的修改。
此數(shù)據(jù)權(quán)限模型可以廣泛適用于大型企業(yè)管理系統(tǒng)中的權(quán)限管理,特別適合于類(lèi)似于具有省、市、部門(mén)、個(gè)人多級(jí)數(shù)據(jù)權(quán)限控制范圍需求的應(yīng)用系統(tǒng)權(quán)限管理,可以靈活的增加不同層次范圍的數(shù)據(jù)控制需求,對(duì)于后期的用戶角色權(quán)限授權(quán)管理比較方便。
權(quán)限管理是企業(yè)應(yīng)用系統(tǒng)中重要組成部分,權(quán)限管理的技術(shù)和策略對(duì)系統(tǒng)的信息安全影響很大。數(shù)據(jù)權(quán)限的管理屬于權(quán)限管理的一個(gè)重要組成部分,是影響系統(tǒng)的信息安全的重要因素。針對(duì)于傳統(tǒng)的RBAC模型存在的數(shù)據(jù)權(quán)限管理方面的不足,本文提出的一種基于RBAC的數(shù)據(jù)權(quán)限模型的設(shè)計(jì)與實(shí)現(xiàn)方法,是在RBAC96 模型理論基礎(chǔ)上提出,并在實(shí)際應(yīng)用中進(jìn)行了驗(yàn)證,滿足了數(shù)據(jù)權(quán)限和功能權(quán)限雙重控制的需求,降低了權(quán)限管理和維護(hù)的復(fù)雜性。對(duì)開(kāi)發(fā)類(lèi)似的多組織層次的應(yīng)用系統(tǒng)管理功能模塊具有一定的參考價(jià)值。
[1] 王延彬,許林英,楊海琛.OA系統(tǒng)中基于角色的用戶權(quán)限管理[J].微處理機(jī).2008.
[2] 肖軍模,劉軍,周海剛.網(wǎng)絡(luò)信息安全[M].北京:機(jī)械工業(yè)出版社.2003.
[3] 周文峰,尤軍考,何基香.基于RBAC 模型的權(quán)限管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息.2006.
[4] Sandhu R S,Coyne E J,Feinstein H L,et al.Role-based Access Control Models[J].IEEE Computer.1996.
[5] Epstein P,Sandhu R.Towards A UML Based Approach to Role Engineering[C]//Proceedings of the 4th ACM Workshop on Role-based Access Control.[S.l.]:AVM Press.1999.