劉波
四川廣播電視大學(xué)信息中心 四川 610073
目前RBAC控制模型還在不斷的發(fā)展中,為了適應(yīng)遠(yuǎn)程教學(xué)平臺(tái)中大量資源的有效控制,本文以RBAC96核心模型為基礎(chǔ),探討對(duì)權(quán)限的有效管理,提出了基于層次權(quán)限的角色控制技術(shù)(Multi-Level Privilege RBAC,MLPRBAC),建立了符合遠(yuǎn)程教學(xué)平臺(tái)特點(diǎn)的權(quán)限管理模型,并通過權(quán)限數(shù)據(jù)定義和客體相關(guān)算法驗(yàn)證了 MLPRBAC模型在遠(yuǎn)程教育中的可行性。
在RBAC96模型中定義了以下基本元素:用戶、角色、操作、客體、權(quán)限、會(huì)話等,分別用USER,ROLE,OP,OBJ,PRM,SESSION表示;其對(duì)應(yīng)的集合稱為用戶集、角色集、操作集、客體集、權(quán)限集、會(huì)話集,用US,RS,OPS,OBJS,PRMS,SESSIONS表示。
在通常的權(quán)限管理中,我們不僅僅要控制對(duì)該權(quán)限的操作,還可能需要控制隸屬于該權(quán)限的子權(quán)限,這種具有控制屬性的權(quán)限稱為控制權(quán)限,寫為cp,不具有控制屬性的權(quán)限稱為普通權(quán)限,寫為np。根據(jù)控制權(quán)限和普通權(quán)限的定義,R、A、B、E稱為控制權(quán)限,C、D、F稱為普通權(quán)限,其中R控制了A,R間接控制了B、C、D,E控制了F。
層次權(quán)限集合(Multi-Level Privileges, MLPS)表示了權(quán)限之間的層次關(guān)系,通過上層的權(quán)限能對(duì)下層的訪問控制產(chǎn)生一定的影響??梢赃@樣規(guī)定:如果用戶(角色)沒有其所有控制該權(quán)限的所有權(quán)限,那么無論有沒有下層的這項(xiàng)權(quán)限,他都不能執(zhí)行這項(xiàng)權(quán)限。這樣體現(xiàn)了層次模型對(duì)現(xiàn)實(shí)管理的實(shí)際反映。
圖1 MLPRBAC模型
定義1:MLPRBAC模型遵循核心RBAC模型的基本定義。
定義 2:MLPS的所有權(quán)限是互斥的,也稱在MLPS中不存在兩個(gè)相同的權(quán)限。其形式化寫為:
定義3:組成MLPS的所有客體肯定是客體集合的元素,組成MLPS的所有操作肯定是操作集合的元素。形式化表示為:
定義4:權(quán)限的控制關(guān)系用符號(hào)?表示,pi控制pj寫為pi?pj,控制關(guān)系具有傳遞性,形式化描述為:
定義 5:權(quán)限的非控制關(guān)系用符號(hào)~表示,pi控制pj寫為 pi~pj,顯然控制關(guān)系和非控制關(guān)系是互斥的,形式化描述為:
定義6:CreateMlp ( pk, pi, pj:MLPS ) 定義了一個(gè)新z層次權(quán)限加入到層次權(quán)限集的算法,其中權(quán)限pi的父親節(jié)點(diǎn)為pk,其孩子節(jié)點(diǎn)增加一個(gè)孩子節(jié)點(diǎn)pj。當(dāng)且僅當(dāng)節(jié)點(diǎn)pi、pk、pj之間不存在任何的控制關(guān)系,此函數(shù)功能有效。如果pk節(jié)點(diǎn)為空表示此節(jié)點(diǎn)為根節(jié)點(diǎn);當(dāng)pj為空表示此節(jié)點(diǎn)為葉子節(jié)點(diǎn)。
定義7:RevokeMlp ( pi:MLPS ) 定義了從已存在的層次權(quán)限集刪除一個(gè)層次權(quán)限的算法。如果pi的父親節(jié)點(diǎn)不為空,則從pi的父親節(jié)點(diǎn)的孩子節(jié)點(diǎn)集中刪除pi;如果pi的孩子節(jié)點(diǎn)不為空,則把所有pi的孩子節(jié)點(diǎn)的父親節(jié)點(diǎn)置為空。
定義8:CheckAccess (s:SESSIONS, p:MLPS)定義了判斷在會(huì)話s中是否能執(zhí)行權(quán)限p。返回值是布爾值是或者否。
對(duì)于模型的處理,關(guān)鍵問題就體現(xiàn)在對(duì)客體的控制上,根據(jù)1.2層次權(quán)限的定義,在1.3 MLPRBAC模型的定義6和定義7中,建立了一個(gè)適用的層次權(quán)限模型,定義8給出了判斷權(quán)限有效的定義。對(duì)于權(quán)限的控制,關(guān)鍵就體現(xiàn)在定義8中。
算法CheckAccess ( s:SESSIONS, p:MLPS ) 當(dāng)且僅當(dāng)所有控制權(quán)限p的權(quán)限都是會(huì)話s的權(quán)限時(shí),返回TRUE,否則返回FALSE。其中avail_session_perms(s)在RBAC96中的定義為當(dāng)前會(huì)話擁有的權(quán)限集合,權(quán)限判斷算法描述偽碼如下:
在現(xiàn)代遠(yuǎn)教平臺(tái)中,存在著大量的用戶,也發(fā)布了大量的資源,這些資源包括了課程、教學(xué)文件、IP課件等資源,而這些用戶要訪問這些資源,必然要受一定的權(quán)限控制。而RBAC模型就通過角色解決了大量用戶集中授權(quán)管理的問題;MLPRBAC模型就解決了大量資源的邏輯管理。
組成這些資源的基本元素可以認(rèn)為就是具體某個(gè)權(quán)限,它包括了操作和客體,如課程管理的操作在平臺(tái)中就是點(diǎn)擊或者是執(zhí)行,而對(duì)象就是某個(gè)課程。
在MLPRBAC模型中,重點(diǎn)描述了層次權(quán)限,通過普通層次權(quán)限和控制層次權(quán)限組成了層次權(quán)限樹和層次權(quán)限森林。
如圖2的層次權(quán)限數(shù)據(jù)定義:FunctionID是權(quán)限的惟一標(biāo)示,這個(gè)字段表明了層次權(quán)限的互斥和惟一;Object表明了需要操作的客體;Operation表明了對(duì)這個(gè)客體的操作,通常Object和Operation都是相互存在的;ParentID表明了這個(gè)權(quán)限的父節(jié)點(diǎn)權(quán)限,其父節(jié)點(diǎn)是惟一的,當(dāng)為根節(jié)點(diǎn)的時(shí)候,填入空值表示,否則填入某個(gè)FunctionID的值表示其父節(jié)點(diǎn);ChildIDS表明了這個(gè)權(quán)限的子節(jié)點(diǎn)權(quán)限,根據(jù)2.2層次權(quán)限的定義,孩子節(jié)點(diǎn)可能有多個(gè),直接表示在這個(gè)字段中,當(dāng)為葉節(jié)點(diǎn)時(shí),填入空值表示,否則填入一個(gè)或多個(gè)FunctionID的值表示其孩子節(jié)點(diǎn)。
系統(tǒng)中對(duì)用戶表、角色表、用戶角色映射表、角色權(quán)限映射表都遵循RBAC96的定義,也可以參考文獻(xiàn)表的設(shè)計(jì)。
圖2 層次權(quán)限定義
在遠(yuǎn)程教學(xué)平臺(tái)的運(yùn)用中,結(jié)合 MLORBAC模型的特點(diǎn),授權(quán)過程描述為:一般應(yīng)該先根據(jù)1.3中的定義6和定義7建立層次權(quán)限表,然后把權(quán)限分配給角色,最后在把角色分配給某個(gè)用戶,用戶就擁有了這項(xiàng)權(quán)限。
2.3.1 建立層次權(quán)限表
假定在遠(yuǎn)程教學(xué)平臺(tái)中,我們需要控制的權(quán)限有:我的課程、我的工作室、經(jīng)濟(jì)法學(xué)、計(jì)算機(jī)應(yīng)用基礎(chǔ)、計(jì)算機(jī)應(yīng)用基礎(chǔ)教學(xué)文件、計(jì)算機(jī)應(yīng)用基礎(chǔ)IP課件、計(jì)算機(jī)應(yīng)用基礎(chǔ)教學(xué)輔導(dǎo)、計(jì)算機(jī)應(yīng)用基礎(chǔ)課程說明共計(jì)8個(gè)權(quán)限,分別定義為權(quán)限p1、p2、p3、p4、p5、p6、p7、p8,根據(jù)實(shí)際的邏輯關(guān)系,建立的層次權(quán)限表如表1。
表1 遠(yuǎn)程教學(xué)平臺(tái)層次權(quán)限例表
在表1中,有兩個(gè)根節(jié)點(diǎn):我的課程和我的工作室,我的課程下面有經(jīng)濟(jì)法學(xué)和計(jì)算機(jī)應(yīng)用基礎(chǔ)兩門課,計(jì)算機(jī)應(yīng)用基礎(chǔ)課中有教學(xué)文件、IP課件、教學(xué)輔導(dǎo),教學(xué)輔導(dǎo)中有計(jì)算機(jī)應(yīng)用基礎(chǔ)課程說明,這樣,一個(gè)細(xì)粒度的層次權(quán)限就建立了起來。
2.3.2 分配權(quán)限
在 2.3.1中建立一個(gè)層次權(quán)限表,由于權(quán)限是體現(xiàn)在會(huì)話中,假定有 5個(gè)會(huì)話 S1、S2、S3、S4、S5,其分配的權(quán)限如表2。
表2 會(huì)話權(quán)限例表
2.3.3 權(quán)限有效判斷
例1:CheckAccess(S1,P5) 判斷會(huì)話S1是否能執(zhí)行權(quán)限P5,根據(jù)表1和表2判斷,P5的父節(jié)點(diǎn)是P4不在S1擁有的權(quán)限中,返回FALSE,表示會(huì)話S1不能執(zhí)行權(quán)限P5。
例2:CheckAccess(S1,P2) 判斷會(huì)話S1是否能執(zhí)行權(quán)限P2,根據(jù)表1和表2判斷,P2的父節(jié)點(diǎn)為NULL,P2就是根節(jié)點(diǎn),返回TRUE,表示會(huì)話S1能執(zhí)行權(quán)限P5。
例3:CheckAccess(S2,P8) 判斷會(huì)話S2是否能執(zhí)行權(quán)限P8,根據(jù)表1和表2判斷,P8的父節(jié)點(diǎn)是P5在S2擁有的權(quán)限中,接著P5的父節(jié)點(diǎn)為P4也在S2擁有的權(quán)限中,再接著P4的父節(jié)點(diǎn)為P1不在S2擁有的權(quán)限中,返回FALSE,表示會(huì)話S2不能執(zhí)行權(quán)限P8。
例4:CheckAccess(S3,P5) 判斷會(huì)話S3是否能執(zhí)行權(quán)限P5,根據(jù)表1和表2判斷,P5的父節(jié)點(diǎn)是P4在S3擁有的權(quán)限中,接著P4的父節(jié)點(diǎn)為P1不在S2擁有的權(quán)限中,返回FALSE,表示會(huì)話S3不能執(zhí)行權(quán)限P5。
例5:CheckAccess(S4,P5) 判斷會(huì)話S4是否能執(zhí)行權(quán)限P5,根據(jù)表1和表2判斷,P5的父節(jié)點(diǎn)是P4在S4擁有的權(quán)限中,接著P4的父節(jié)點(diǎn)為P1不在S4擁有的權(quán)限中,返回FALSE,表示會(huì)話S4不能執(zhí)行權(quán)限P5。
例 6:CheckAccess(S51,P8) 判斷會(huì)話 S5是否能執(zhí)行權(quán)限P8,根據(jù)表1和表2判斷,P8的父節(jié)點(diǎn)是P5在S5擁有的權(quán)限中,接著P5的父節(jié)點(diǎn)為P4在S5擁有的權(quán)限中,再接著P4的父節(jié)點(diǎn)為P1在S5擁有的權(quán)限中,最后P1的父節(jié)點(diǎn)為NULL,P1就是根節(jié)點(diǎn),返回TRUE,表示會(huì)話S5不能執(zhí)行權(quán)限P8。
面對(duì)遠(yuǎn)程教學(xué)平臺(tái)中要管理的大量權(quán)限,其權(quán)限本身就包括了對(duì)客體的操作和被操作的客體,本文在RBAC96模型的基礎(chǔ)上,結(jié)合遠(yuǎn)程教育的特點(diǎn),建立了符合遠(yuǎn)程教育特色的層次客體權(quán)限管理模型,把權(quán)限作為最小的粒度,提供了靈活的管理方法,很好的管理了大量的權(quán)限和用戶,這個(gè)模型非常適合現(xiàn)代遠(yuǎn)程教育軟件中的權(quán)限管理。
隨著遠(yuǎn)程教育的不斷發(fā)展,對(duì)某個(gè)特定任務(wù)也將要求更好的進(jìn)行流程控制,而基于任務(wù)的權(quán)限模型(Task Based Access Control, TBAC)就有極大的便利,它結(jié)合本文提出的模型也將得到更多的運(yùn)用。
[1] 楊宗凱,吳砥,劉清堂.網(wǎng)絡(luò)教育標(biāo)準(zhǔn)與技術(shù)[M].北京:清華大學(xué)出版社.2008.
[2] R.S.Sandu,E.J.Loyne,et al.Role-Based Access Control Models.IEEE Transaction on Computer.1996.
[3] 張曉燕,張素偉.基于RBAC的電子政務(wù)權(quán)限訪問控制模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì).2007.