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