(無錫科技職業(yè)學(xué)院,江蘇無錫市,214028) 王 丹
隨著現(xiàn)代信息技術(shù)運用的不斷深入,信息系統(tǒng)很容易受到攻擊,發(fā)生如非法訪問等事件。因此,安全成為信息系統(tǒng)迫切需要解決的問題。一個完整的安全信息系統(tǒng),要綜合地使用身份鑒別、訪問控制、數(shù)據(jù)加密、安全審計、安全管理等安全技術(shù)。在現(xiàn)實環(huán)境中,沒有任何一項安全技術(shù)能夠單獨地解決安全問題。在這些安全技術(shù)中,訪問控制起著極其重要的作用,它是安全策略在系統(tǒng)運行中的集中體現(xiàn)。通過訪問控制服務(wù),可以限制對關(guān)鍵資源的訪問,防止非法用戶的侵入或者因合法用戶的不慎操作所造成的破壞。
但是Web 良好的開放性也加劇了與系統(tǒng)安全之間的矛盾。因為用戶是分布式的,瀏覽器就成為其進(jìn)行系統(tǒng)訪問的主要工具,它對用戶端的限制很少,由于缺少必要的用戶訪問控制,往往導(dǎo)致嚴(yán)重的安全漏洞。本文在層次擴展客體的基礎(chǔ)上,提出了一種基于Web的WE-RBAC 模型和設(shè)計方法,有效地解決了用戶安全訪問數(shù)據(jù)的控制問題。
傳統(tǒng)的訪問控制技術(shù)主要有自主型的訪問控制(DAC)和強制型的訪問控制(MAC)。DAC 是目前計算機系統(tǒng)中實現(xiàn)最多的訪問控制機制。而MAC由于過于偏重保密性,主要被運用于專業(yè)系統(tǒng)中。20世紀(jì)90年代以后出現(xiàn)了基于角色的訪問控制(Role-Based Access Control,簡稱RBAC)和基于任務(wù)的訪問控制(Task-Based Access Control,簡稱TBAC),這兩種技術(shù)在實際中都有較多的運用。RBAC 模型也稱RBAC96 模型,其定義了用戶、角色、權(quán)限三個基本要素,通過角色的虛擬,建立了用戶—角色指派和角色—權(quán)限指派關(guān)系,有效地克服了DAC和MAC模型存在的不足之處,減少了授權(quán)管理的復(fù)雜性。[1]
隨著Web技術(shù)的不斷應(yīng)用,一些新型的訪問控制技術(shù)也不斷出現(xiàn),相對于傳統(tǒng)的客戶機/服務(wù)器模式,由于Web 使用了瀏覽器/服務(wù)器模式,它具有良好的Html代碼可讀性,使安全控制更加不易。2007年,董斌等提出了一種安全Cookie方式來保存用戶的登錄和角色等重要信息,通過加密和安全認(rèn)證來保證訪問的安全。2008年,黃國純等也結(jié)合Web的特點,提出了區(qū)域集和頁面集這兩種基本W(wǎng)eb 客體,并給出了一種UR-RAO模型和其在信息系統(tǒng)中的解決方案。安全Cookie 是采用加密技術(shù)把一些關(guān)鍵信息保存在客戶端,因此一種可靠的加密解密技術(shù)尤為關(guān)鍵,否則容易導(dǎo)致一些數(shù)據(jù)的泄密。后者對Web客體進(jìn)行了劃分,分別對頁面集和區(qū)域集進(jìn)行管理,導(dǎo)致了模型構(gòu)建和管理的復(fù)雜性。[2]
WE-RBAC 模型建立在基本的RBACO 模型基礎(chǔ)上,它包含了基本的用戶、會話、角色、權(quán)限定義,也具有用戶—角色指派和角色—權(quán)限指派等特征。為了減少模型的復(fù)雜度,本研究沒有加入角色繼承和動態(tài)(或靜態(tài))職權(quán)分離等,以下的定義是建立在此前提下。
在RBAC 和TBAC 等模型中,沒有對客體的粒度進(jìn)行具體描述,從而不能滿足實際應(yīng)用系統(tǒng)對權(quán)限管理的需要。常見的客體或權(quán)限之間是一種網(wǎng)狀關(guān)系。通過對客體間的關(guān)系進(jìn)行劃分,如果客體之間存在控制關(guān)系,則稱這些客體是有層次的"由這些層次客體組成的客體集合稱為層次客體集。
由于網(wǎng)狀的關(guān)系在應(yīng)用中的復(fù)雜性,通常可以對網(wǎng)狀的訪問路徑進(jìn)行簡化,常見方法是將其定義成多種樹型關(guān)系,每個層次客體可以看作一個單獨的節(jié)點,層次客體之間存在著樹型控制關(guān)系,父節(jié)點可以控制子節(jié)點。根據(jù)權(quán)限的定義,如果這些客體對應(yīng)的操作是同一種操作,則稱這些權(quán)限為層次權(quán)限"層次權(quán)限也存在層次性和層次控制關(guān)系。[3]
在WE-RBAC 模型中包含了RBAC0 模型的基本定義,包括用戶、角色和權(quán)限的定義,也包括用戶—角色指派關(guān)系和角色—權(quán)限指派等關(guān)系,同時也滿足層次客體RBAC模型中對層次客體的定義。如圖1所示,用戶通過角色的指派來獲得權(quán)限的指派,只要更改角色的權(quán)限,就直接影響指派了該角色的用戶的使用權(quán)限,同時也對角色和權(quán)限進(jìn)行了劃分。
圖1 WE-RBAC模型
WE-RBAC模型的具體定義如下:[4]
定義1:模型中的權(quán)限都具有層次性。
根據(jù)文獻(xiàn)[2]中劉波等研究者對層次客體的定義可以推出,層次權(quán)限具有層次性和層次控制關(guān)系。
定義2:功能權(quán)限和區(qū)域權(quán)限。
從權(quán)限應(yīng)用的范圍來看,層次權(quán)限可以分為功能權(quán)限和區(qū)域權(quán)限。功能權(quán)限是用于層次權(quán)限間的控制關(guān)系,在層次權(quán)限樹中,它通常表現(xiàn)為非葉子節(jié)點可以控制其他葉子節(jié)點和非葉子節(jié)點;區(qū)域權(quán)限是體現(xiàn)數(shù)據(jù)訪問中的范圍界定,在模型中,區(qū)域權(quán)限之間的層次關(guān)系體現(xiàn)為一種包含、互斥或其他的數(shù)據(jù)關(guān)系。
定義3:權(quán)限集,也稱為層次權(quán)限集,包括功能權(quán)限集和區(qū)域權(quán)限集。
定義4:功能角色和區(qū)域角色。
從應(yīng)用范圍上看,角色可劃分為功能角色和區(qū)域角色。功能角色對應(yīng)功能權(quán)限集的角色—權(quán)限指派,區(qū)域角色對應(yīng)區(qū)域角色集的角色—權(quán)限指派。
定義5:角色約束。
根據(jù)RBAC2 的定義,角色之間存在約束關(guān)系,可以分為靜態(tài)約束(Static Separation of Duty,SSD)和動態(tài)約束(Dynamic Separation of Duty,DSD);同時,角色之間也存在RBAC1 的繼承關(guān)系(Role Hiberachy RH)。
定義6:權(quán)限約束。
權(quán)限之間不僅存在層次關(guān)系,也可能存在約束關(guān)系。根據(jù)約束的發(fā)生范圍不同,可把權(quán)限約束分為靜態(tài)權(quán)限約束和動態(tài)權(quán)限約束,權(quán)限的約束關(guān)系可直接影響角色的約束關(guān)系。
在RBAC96模型中,用戶通過角色來賦予、回收和驗證權(quán)限,因此,WE-RBAC模型應(yīng)該建立相應(yīng)的算法。相對于傳統(tǒng)模型,該模型的層次權(quán)限算法、角色權(quán)限權(quán)限分配算法、角色回收算法和用戶訪問驗證算法就成為模型實施的關(guān)鍵部分,而其他的算法與傳統(tǒng)模型基本一致。[5]
層次權(quán)限算法包括對層次權(quán)限樹的生成、刪除、修改等動作,由于操作對象是層次權(quán)限樹,因此直接運用樹的算法來實現(xiàn)。角色權(quán)限分配算法是為角色分配層次權(quán)限集,這些權(quán)限的表現(xiàn)形式是層次權(quán)限樹的形式。而角色權(quán)限分配回收算法的實現(xiàn)與此類似,算法實現(xiàn)如圖2所示。[6]
用戶訪問驗證算法是根據(jù)用戶需要訪問的客體種類進(jìn)行功能驗證和數(shù)據(jù)驗證由于在角色權(quán)限分配算法中,已經(jīng)完整地維護了權(quán)限的訪問控制關(guān)系,因此,功能驗證只需要簡單的關(guān)聯(lián)功能判斷角色是否分配有該項功能權(quán)限; 而數(shù)據(jù)驗證需根據(jù)區(qū)域角色對訪問數(shù)據(jù)進(jìn)行數(shù)據(jù)限制。
圖2 角色權(quán)限分配回收算法
4.1.1 Web權(quán)限定義
在常用的客戶—服務(wù)結(jié)構(gòu)的應(yīng)用系統(tǒng)中,客體總是根據(jù)具體的系統(tǒng)應(yīng)用定義,客戶端可以保存用戶的關(guān)鍵信息,實施訪問控制直接、方便,對服務(wù)器影響較小。而對于瀏覽器—服務(wù)結(jié)構(gòu)的系統(tǒng)來說,由于瀏覽器等的限制,從而不適宜在訪問過程中大量地運用權(quán)限策略。
在Web信息管理系統(tǒng)中,客體定義為由一組頁面和數(shù)據(jù)組成的頁面集,操作定義為對頁面或數(shù)據(jù)的訪問許可,因此權(quán)限就表示為對某個頁面或數(shù)據(jù)的使用許可。根據(jù)特定系統(tǒng)的業(yè)務(wù)邏輯關(guān)系,可以把這些權(quán)限定義為層次權(quán)限,組成有一定層次關(guān)系的功能權(quán)限。
由于Web 訪問的特殊性,從而不可能在服務(wù)端同時保存某用戶的所有訪問控制狀態(tài),只能對不同的權(quán)限進(jìn)行不同的訪問控制.從訪問的內(nèi)容來看,可以將權(quán)限劃分為頁間控制和頁面控制。頁間訪問是指該頁面是否對用戶可見,如訪問該頁面的某菜單項或鏈接;頁面訪問是指在通過頁間訪問允許后,頁面需控制的內(nèi)容是否對用戶有效,這些內(nèi)容包括按鈕、鏈接地址或數(shù)據(jù)。在系統(tǒng)實施中,可以僅實施頁面或頁間控制,或者同時實施,以保證系統(tǒng)控制的嚴(yán)密性。
4.1.2 層次權(quán)限設(shè)計
Web系統(tǒng)的權(quán)限通常有鏈接控制、頁面操作控制和數(shù)據(jù)區(qū)域訪問控制。鏈接控制指頁面訪問路徑的控制,需要在訪問前進(jìn)行控制,是一種靜態(tài)控制;同時,為了防止通過鏈接路徑直接訪問,在頁面載入時也要進(jìn)行頁面驗證,這屬于動態(tài)控制。頁面操作控制是當(dāng)前頁面的組成元素,需要控制用戶是否可以訪問。數(shù)據(jù)區(qū)域訪間控制是作為控制數(shù)據(jù)訪問范圍的驗證,與普通的操作控制相比,它控制的是數(shù)據(jù)是否對該用戶可用。
鏈接地址、頁面操作和數(shù)據(jù)區(qū)域都是WERBAC 模型中層次權(quán)限的組成部分,根據(jù)層次權(quán)限的定義來看,通常的Web信息系統(tǒng)層次權(quán)限用樹結(jié)構(gòu)表示。在數(shù)據(jù)庫中層次權(quán)限定義如表3所示的結(jié)構(gòu):privId 是層次權(quán)限在系統(tǒng)中的唯一標(biāo)識,privAction表示該權(quán)限的動作,可能是一個鏈接按鈕或數(shù)據(jù)區(qū)域的標(biāo)識,parentId 表示該權(quán)限的父權(quán)限指向哪個唯一的privId,不能為本權(quán)限的或一個不存在的privId,當(dāng)為空的時候,表示當(dāng)前權(quán)限是根權(quán)限。這種數(shù)據(jù)定義就構(gòu)造了系統(tǒng)中的層次權(quán)限樹。[7]
例如,表1中有3條記錄對應(yīng)了3個權(quán)限,其中,頁面“頁面a”是根權(quán)限,它有子權(quán)限“頁面a 中按鈕”,它們是功能權(quán)限并分別需要進(jìn)行頁間驗證和頁面驗證;而權(quán)限“數(shù)據(jù)b”是一種數(shù)據(jù)區(qū)域權(quán)限。
表1 層次權(quán)限舉例
通常的Web 信息系統(tǒng)是由用戶(瀏覽端)、Web控制和Web 服務(wù)端三層構(gòu)成,如圖3 所示。Web 控制是建立在WE-RBAC 規(guī)則庫基礎(chǔ)上的訪問控制層,Web服務(wù)為訪問提供頁面訪問或數(shù)據(jù)服務(wù)。用戶使用瀏覽器在Web控制下獲得Web服務(wù),在正常的訪問中,虛線表示用戶通過控制層透明的訪問服務(wù)端的頁面或數(shù)據(jù)。
圖3 Web訪問控制
Web控制可以是一個獨立的模塊,也可以是和Web 服務(wù)集成后共同組成綜合的服務(wù)平臺。從數(shù)據(jù)安全訪問的原則上考慮,獨立的WEB 控制符合系統(tǒng)安全設(shè)計原則。Web控制主要運用WE-RBAC模型構(gòu)建的規(guī)則庫,為用戶提供訪問控制的接口。為了訪問的簡便,規(guī)則庫一般用數(shù)據(jù)庫實現(xiàn),根據(jù)WE-RBAC 模型的定義,規(guī)則庫應(yīng)該包含用戶、角色、權(quán)限和之間的對應(yīng)關(guān)系。
Web 服務(wù)就是通常提供信息服務(wù)的Web 服務(wù)器它包括通常的Web 頁面服務(wù)和Web 數(shù)據(jù)服務(wù)。頁面通常指網(wǎng)頁等,數(shù)據(jù)指要為用戶訪問提供的數(shù)據(jù)庫中的數(shù)據(jù), 數(shù)據(jù)可能包含在頁面中,也可能是一種數(shù)據(jù)接口。
在信息系統(tǒng)中,還應(yīng)該包含為頁面提供數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng),在圖3中就沒有將其單獨地標(biāo)注出來,它屬于系統(tǒng)的基本配置。同時,從廣泛的數(shù)據(jù)考慮WE-RBAC 規(guī)則庫是定義在數(shù)據(jù)庫中,也是權(quán)限控制的范疇。
用戶通過WE-RBAC 模型來訪問Web 資源,首先要為角色分配層次權(quán)限,然后建立一個WERBAC 會話,在會話中可以得到用戶的角色集和權(quán)限集,對用戶權(quán)限進(jìn)行驗證。
在層次權(quán)限的基礎(chǔ)上為角色分配權(quán)限,一般規(guī)定,當(dāng)且僅當(dāng)用戶遞歸擁有某個權(quán)限的父權(quán)限,用戶才能分配該權(quán)限。也就是說,必須要為用戶分配根權(quán)限到該權(quán)限整條路徑中的所有權(quán)限后" 該權(quán)限才分配成功。這種權(quán)限分配過程的復(fù)雜性縮短了權(quán)限訪問驗證的過程,其分配算法在定義模型的關(guān)鍵算法中。
當(dāng)用戶要訪問某項權(quán)限時,就要對用戶操作的合法性進(jìn)行驗證,通過返回可以執(zhí)行的URL或允許執(zhí)行進(jìn)行確認(rèn)。如果用戶沒有通過訪問驗證,則該權(quán)限對用戶不可見或者是不可訪問。
通過對WE-RBAC 模型的基本元素及其關(guān)系的分析可知,該模型是RBAC模型的一種擴展模型,其支持基本的用戶、角色和權(quán)限及其相互間的關(guān)系管理,而層次權(quán)限的應(yīng)用也能更好地滿足Web系統(tǒng)對訪問控制的需求。
如表2 所述,WE-RBAC 模型明確了訪問Web的頁面和頁間界定,它與UR-PAO 模型的不同之處在于:前者以為數(shù)據(jù)區(qū)域和其他權(quán)限都是權(quán)限的一種,進(jìn)行集中管理,而后者把區(qū)域和權(quán)限分別獨立對待;前者用層次化的方法管理權(quán)限及其關(guān)系,而后者是分散化管理權(quán)限。同時WE-RBAC 模型也遵循RBAC 模型的基本原則" 不允許為用戶直接分派權(quán)限。
表2 RBAC、UR-PAO和WE-RBAC的比較
WE-RBAC 模型在某高職院校教務(wù)管理系統(tǒng)、學(xué)生服務(wù)系統(tǒng)等多個Web系統(tǒng)中得到了實際運用。圖4是一個運行在某教務(wù)管理系統(tǒng)中的權(quán)限分配截圖。
圖4 教務(wù)管理系統(tǒng)權(quán)限分配
在該管理系統(tǒng)中,有計劃管理、考務(wù)管理和系統(tǒng)管理等7個模塊,分別建立了7個權(quán)限樹,共計要管理300多項權(quán)限.系統(tǒng)運用WE-RBAC模型,建立了7 個層次權(quán)限樹來管理這300 多項層次權(quán)限,為80 余個用戶分配了10 多個角色,并根據(jù)為用戶分配的區(qū)域角色和功能角色實現(xiàn)權(quán)限控制??刂颇K相對獨立于整個管理系統(tǒng),并被運用在每個模塊的底層,為用戶訪問提供安全控制,具有很好的擴展性和重用性。
擴展的RBAC模型繼承了當(dāng)前主流基于角色的訪問控制模型的優(yōu)點[8]。WE-RBAC 模型通過對權(quán)限進(jìn)行功能和區(qū)域的劃分,建立了層次權(quán)限和相關(guān)的算法,解決了Web頁面資源和數(shù)據(jù)資源的權(quán)限管理,減輕了系統(tǒng)的驗證管理過程,便于維護。但在實際系統(tǒng)的應(yīng)用中,權(quán)限之間和角色之間存在著一定的約束關(guān)系,模型還應(yīng)定義得更加完善;同時,考慮到驗證的效率,還應(yīng)在模型中加入對權(quán)限驗證的CACHE計算,以提高權(quán)限訪問效率。