鄭亞濤
摘要:本文提出了一種基于RBAC的角色層次控制與用戶業(yè)務(wù)限制混合權(quán)限管理模型 ( N-RBAC),既簡化了信息系統(tǒng)中對用戶授權(quán)管理,又使相同角色的用戶對相同的功能模塊可以有不同的操作限制.
關(guān)鍵詞:信息系統(tǒng);權(quán)限管理;角色;基于角色的訪問控制;層次控制
1 N-RBAC的基本原理
基于角色的訪問控制,就是要在權(quán)限與用戶之間增加一個角色,以達到安全訪問的目的。有以下定義:
定義1 設(shè)角色集合R ( r1 ,r2 ,r3…,rn ) 、用戶集合U ( u1 ,u2 ,u3…,un ) 、功能集合F ( f 1 ,f 2 ,f3…,f n )及業(yè)務(wù)集合T ( t1 ,t2 ,t3…,t n ) 構(gòu)成N-RBAC體系的主體。
角色與用戶之間是一個多對多的關(guān)系,即:一個角色可以有多個用戶,一個用戶可以具有多個角色,用戶-角色集合UR ( U,R ) 表示。
每一個角色都至少具有一種權(quán)限,角色與權(quán)限的關(guān)系用角色-功能集合RF ( R,F(xiàn)) 表示,角色與用戶、角色與權(quán)限之間都是多對多的關(guān)系。
定義2 一個功能模塊的操作對象可以有多個不同的交互 ( Transaction ) ,稱該模塊具有交互約束,用二元集合FT ( F,T ) 表示。
具有相同角色的用戶對具有公共權(quán)限的功能。F可操作的業(yè)務(wù)類可以不同,用用戶2業(yè)務(wù)集合UT ( U,T) 表示,它描述了一個用戶可操作哪些業(yè)務(wù)類。反映了“用戶”與“角色”之間個體與整體的區(qū)別。當然,也可以賦予u1 、u2 不同的角色,并為他們分別開發(fā)不同的操作。但如此一來,角色就失去了意義,這顯然不是基于角色訪問控制模型的本意,它也就不再是RBAC模型而退化為傳統(tǒng)的用戶2功能權(quán)限控制模型了。
定義3 角色之間存在著層次關(guān)系,所謂角色層次控制是指當下級角色被授予某種權(quán)限時,它的上級角色自動地獲得了相應(yīng)的權(quán)限,稱之為影子權(quán)限。角色是實際崗位在信息系統(tǒng)中的映射,有著不同的概念。崗位級別高的并不能自動獲得低級崗位的權(quán)限。而系統(tǒng)中的角色則受層次級別的控制,當角色M或N或L具有某項F的操作權(quán)限時,它的上級角色B或上上級A也都獲得了對功能F的相同操作權(quán)。雖然角色C的級別 ( 與B同級) 也比它們高,但不能享有它們的影子權(quán)限。
定義4 用戶-功能集合UF ( U,F(xiàn)) 是通過用戶-角色集合UR和角色-功能集合RF間接確定的,可以表示為UR與RF的自然連接在用戶u和功能f上的投影,用戶對功能的業(yè)務(wù)可以用一個三元組UFT( U,F(xiàn),T) 來描述,它可以表示為用戶2業(yè)務(wù)集合UT與功能2業(yè)務(wù)集合FT的自然連接,于是,用戶的自有權(quán)限可以表示為A ={a|a∈A1 ∨a∈A2 }。其中,A1表示用戶對沒有業(yè)務(wù)約束的那些功能的權(quán)限;A2表示用戶對有業(yè)務(wù)約束的那些功能的權(quán)限,它們是由用戶2功能集合UF和三元組UFT共同確定的,即角色的總權(quán)限是自有權(quán)限與影子權(quán)限的并集,即角色總權(quán)限的并集 。
2 N-RBAC設(shè)計
該體系中有4個實體,分別是角色、用戶、功能及業(yè)務(wù),它們之間的關(guān)系可映射為如下8個基本表:
(1)用戶表U ( 用戶代碼,用戶名稱,部門,…。)
(2)角色表R ( 角色代碼,角色描述,上級角色,角色級別)
(3)功能表F ( 功能代碼,功能名稱,業(yè)務(wù)碼標識) 。如果指定了業(yè)務(wù)碼表示=‘Y,表示此功能需要檢查用戶只能操作指定的業(yè)務(wù)類,如果業(yè)務(wù)碼標識為空,表示此功能不需要檢查用戶的業(yè)務(wù)限制。
(4)業(yè)務(wù)類別表T ( 業(yè)務(wù)碼,業(yè)務(wù)名稱) 。
(5)用戶2角色表UR ( 用戶代碼,角色代碼)。每個用戶都至少賦與一個角色,但一個用戶可以有多個角色,角色與用戶之間是多對多關(guān)系。
(6)角色2功能表RF ( 角色代碼,功能代碼,權(quán)限類型1,權(quán)限類型2)。用以存儲各角色可以擁有哪些功能,權(quán)限類型1、權(quán)限類型2分別表示自有權(quán)限和影子權(quán)限,它們的取值都為“A” 全權(quán) ) 或“R”只讀權(quán)) 或空( 無權(quán))。
(7)功能2業(yè)務(wù)表FT ( 功能代碼,業(yè)務(wù)碼 ) 。如果在功能表F中定義的某項功能F1指定了業(yè)務(wù)碼標識,則需要在功能業(yè)務(wù)表FT中定義該功能F1的業(yè)務(wù)類。
(8)用戶2業(yè)務(wù)表UT ( 用戶代碼,業(yè)務(wù)碼 ) 。用戶與業(yè)務(wù)碼之間也是多對多關(guān)系,表示一個用戶可以操作哪些業(yè)務(wù)類。
由于用戶功能是角色功能的子集,所以不需要獨立的用戶功能表。但為了操作方便,可以建立用戶-功能視圖UF。CREAT VIEW UF AS SELECT UR.用戶代碼,RF.功能代碼,RF.權(quán)限類型1,RF.權(quán)限類型2 FROM UR,RF WHERE UR.角色代碼=RF.角色代碼。當然,視圖UF中的記錄只表明用戶可以操作哪些功能模塊,但可以操作這些模塊中的哪些業(yè)務(wù)類還要通過UT表和FT表檢查。在這些表中,用戶表、角色表、功能表及業(yè)務(wù)表都只是一些簡單的代碼表,其維護是很方便的,另外4個交叉表也是不難用程序?qū)崿F(xiàn)的。
參考文獻:
[1]洪帆,鄧磊.工作流管理系統(tǒng)中基于角色的訪問控制[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2003(12):1~3