張靖康,石宇良,王海豹
(北京工業(yè)大學(xué) 軟件學(xué)院,北京 100022)
當(dāng)前,隨著電子政務(wù)的普及和高速發(fā)展,越來越多的政府部門和企業(yè)都開始爭相采用工作流技術(shù)來有效的推進(jìn)各個部門或單位的電子政務(wù)建設(shè)。由于電子政務(wù)系統(tǒng)所涉及的各種職能人員較多且組織結(jié)構(gòu)往往都較為復(fù)雜,再加之政府內(nèi)部信息的高機(jī)密的性質(zhì)對系統(tǒng)的安全性提出了很高的要求。那么如何保證系統(tǒng)安全,保證系統(tǒng)數(shù)據(jù)安全,以及保證合法用戶訪問正確的數(shù)據(jù)就顯得非常重要。所以設(shè)計一套完整的,便捷的,可靠的用戶訪問控制策略是電子政務(wù)系統(tǒng)建設(shè)中最為關(guān)鍵的一步。
傳統(tǒng)的自主訪問控制 (DAC,Discretionary Access Control)、強(qiáng)制訪問控制(MAC,Mandatory Access Control)策略都是用戶通過對權(quán)限的直接操作來實現(xiàn)權(quán)限控制,它們的靈活度并不能適應(yīng)在工作流的系統(tǒng)環(huán)境下用戶的動態(tài)變化以及用戶權(quán)限的經(jīng)常性變更。
1992年由Ferraiolo等人[1]提出的基于角色的訪問控制(Role-Based Access Control,RBAC)的模型第一次將角色作為用戶和權(quán)限之間的媒介。而由Sandhu等[2]在1996年提出的最具代表性的RBAC96模型為現(xiàn)在的RBAC模型的普及奠定了基礎(chǔ)。由于該模型實現(xiàn)了通過引入角色的概念將用戶與訪問權(quán)限分離,從而有效的降低了對訪問控制的復(fù)雜度以及很好的適應(yīng)工作流系統(tǒng)靈活的特點。
由于RBAC是以主體為中心的訪問控制模型,因此近年來對RBAC的擴(kuò)展研究大多集中于角色,對組織機(jī)構(gòu)的研究。2009年,李細(xì)雨等人[3]將粒邏輯的思想引入RBAC模型中,提出了基于粒計算角色訪問控制模型 (G-RBAC);2010年陳琛,陳學(xué)廣等[4]提出了改進(jìn)的RBAC細(xì)粒度模型(FG-RBAC);2011年張盈謙,孫斌等[5]提出基于AOP的細(xì)粒度RBAC模型。然而,遺憾的是,這些模型的改進(jìn)都是基于角色的細(xì)化,根據(jù)訪問客體設(shè)置角色。導(dǎo)致權(quán)限和角色數(shù)量的成倍甚至指數(shù)倍的增加,使得用戶管理越來越復(fù)雜。本文在RBAC模型的基礎(chǔ)上通過權(quán)限與系統(tǒng)模塊相結(jié)合,引入系統(tǒng)訪問頁面與訪問權(quán)限綁定的理念,來減少授權(quán)管理的復(fù)雜性,降低管理開銷。
RBAC模型的基本思想是:引入了角色的概念,是用戶主體與訪問權(quán)限實現(xiàn)松耦合,用戶與角色連接之后,權(quán)限不是直接賦予給用戶,而是賦予給角色,通過用戶所扮演的角色來擁有的訪問權(quán)限。在NIST (The National Institute of Standards andTechnology,美國國家標(biāo)準(zhǔn)與技術(shù)研究院)標(biāo)準(zhǔn)RBAC模型中,主要由4個部件模型組成,包括基本模型RBAC0 (Core RBAC)、 角色繼承模型 RBAC1(Hierarchal RBAC)、角色限制模型 RBAC2(Constraint RBAC)和統(tǒng)一組合模型RBAC3(Combined RBAC)。圖1所示基于標(biāo)準(zhǔn)的RBAC模型。
圖1 標(biāo)準(zhǔn)的RBAC模型Fig.1 Standard RBAC model
基本的RBAC模型是由用戶、角色、權(quán)限、會話這4個數(shù)據(jù)元素,角色分配、權(quán)限分配這兩種分配關(guān)系,角色層次結(jié)構(gòu)以及作用于各部分之上的約束條件組成。角色層次結(jié)構(gòu)是在RBAC1模型在RBAC0的基礎(chǔ)上引入的,在數(shù)學(xué)上是一種偏序關(guān)系,直觀上體現(xiàn)為角色間的繼承關(guān)系,即高級角色繼承低級角色的權(quán)限。如果角色繼承關(guān)系是一個絕對偏序關(guān)系,允許角色之間的多繼承那么這種角色繼承關(guān)系為一般繼承關(guān)系。不過有時低級角色的某些權(quán)限拒絕被高級角色繼承,這時就要求角色繼承關(guān)系是一個樹結(jié)構(gòu)。這種繼承關(guān)系叫受限繼承。約束條件是在RBAC2模型中引入,也就是角色約束模型。它規(guī)定了用戶賦予角色時,角色賦予權(quán)限時或者用戶在某一時刻激活一個角色時所應(yīng)遵循的強(qiáng)制性規(guī)則,一般最常見的規(guī)則為互斥角色關(guān)系,互斥權(quán)限關(guān)系等。RBAC3模型實際上是RBAC1模型和RBAC2模型的綜合。
雖然RBAC模型通過引入角色概念令其具了高靈活性和易維護(hù)性,但由于該模型中用戶與角色,角色和權(quán)限之間的多對多關(guān)系,使其在系統(tǒng)中的應(yīng)用實現(xiàn)比較繁瑣。并且目前多數(shù)對于RBAC的授權(quán)管理模型的研究尚不完善,導(dǎo)致一些問題仍然沒有解決,首先是大型系統(tǒng)中權(quán)限粒度與角色數(shù)量的矛盾。權(quán)限粒度越小,角色數(shù)量越多,角色數(shù)量的增長與權(quán)限粒度的細(xì)化成指數(shù)增長。其二、RBAC本質(zhì)上是個被動安全模型,缺乏靈活動態(tài)的授權(quán)機(jī)制[6]。
近年來隨著信息技術(shù)的發(fā)展,B/S應(yīng)用模式的系統(tǒng)迅速增加并成為當(dāng)前信息系統(tǒng)的主流應(yīng)用模式,RBAC模型在WEB應(yīng)用中實現(xiàn)的繁瑣性也越來越明顯。在一般的電子政務(wù)系統(tǒng)中無論是它的用戶數(shù)量、角色種類、操作權(quán)限,還是系統(tǒng)的功能、顯示的頁面都十分復(fù)雜。圖2為傳統(tǒng)B/S系統(tǒng)設(shè)計中RBAC模型對應(yīng)的實體-關(guān)系模型圖[7]。
圖2 用戶權(quán)限管理E-R模型Fig.2 E-R model of user permission management
模型中除了用戶與角色、角色與權(quán)限之間的多對多關(guān)系以外,又增加了頁面與功能實體之間的多對多關(guān)系。這些復(fù)雜的關(guān)系使得模型在系統(tǒng)中實現(xiàn)變得更加復(fù)雜。但是,如果能夠按照一定的頁面設(shè)計原則將頁面與用戶所屬角色具有的權(quán)限與所能訪問的功能對應(yīng)到系統(tǒng)中允許被訪問的某個頁面或者某組頁面操作上面去,那么就可以通過動態(tài)的控制這些頁面對特定用戶的可見性來實現(xiàn)用戶權(quán)限的管理。從而大大簡化上圖所示的用戶權(quán)限管理模型。因此本文針對RBAC模型的不足,提出了基于導(dǎo)航樹頁面的RBAC模型(如圖3所示)。
圖3 基于導(dǎo)航樹頁面的RBAC模型Fig.3 RBAC model based on navigation tree and page
導(dǎo)航樹的引入是為了能夠更好的動態(tài)呈現(xiàn)角色權(quán)限所對應(yīng)的頁面索引,從而使得用戶方便、快捷、直觀的與系統(tǒng)進(jìn)行交互。而頁面的設(shè)計應(yīng)該遵守以下原則:對于一個頁面要實現(xiàn)的功能,應(yīng)該有盡量細(xì)粒度的劃分,確保在某一頁面上實現(xiàn)的一個或者多個功能只對應(yīng)某一權(quán)限所允許的訪問。本模型的核心理念是將權(quán)限與應(yīng)用系統(tǒng)的導(dǎo)航菜單關(guān)聯(lián)起來,根據(jù)頁面設(shè)計原則,一項權(quán)限對應(yīng)導(dǎo)航樹中的一個節(jié)點同時映射底層一個頁面。用戶在登錄系統(tǒng)時,根據(jù)不同的用戶及其權(quán)限對導(dǎo)航樹進(jìn)行動態(tài)修改,通過導(dǎo)航樹屏蔽用戶無權(quán)訪問的操作頁面,從而達(dá)到應(yīng)用系統(tǒng)的安全訪問。
文中采用LDAP作為訪問控制方案的信息模型,來存儲用戶、角色、權(quán)限等信息。LDAP(Lightweight Directory Access Protocol)即輕量目錄訪問協(xié)議。它是一個基于X.500標(biāo)準(zhǔn)且用來發(fā)布目錄信息到許多不同資源的協(xié)議。LDAP的目錄服務(wù)的目標(biāo)是快速響應(yīng)和大容量查詢,由于LDAP對讀操作進(jìn)行了優(yōu)化,其數(shù)據(jù)讀取速度比關(guān)系數(shù)據(jù)庫快一個數(shù)量級,因此非常適合用戶對數(shù)據(jù)頻繁的查詢操作,而對數(shù)據(jù)的更新請求相對較少的情況。另一方面LDAP目錄結(jié)構(gòu)的樹狀信息模型更適合操作邏輯上呈現(xiàn)樹型結(jié)構(gòu)的數(shù)據(jù),比用關(guān)系數(shù)據(jù)庫存儲這些數(shù)據(jù)更加直觀。
LDAP中的數(shù)據(jù)是以目錄樹的形式存放的。樹中的每一個節(jié)點稱為目錄項(Entry)。一個目錄項由若干個屬性構(gòu)成。屬性又通過一個屬性類型和一個或多個屬性值表示。根節(jié)點到每個目錄項的路徑稱為DN(DistinguishedName,簡稱DN),它用來唯一標(biāo)識樹中的節(jié)點。具有相同屬性的一組目錄項組成一個對象類,對象類規(guī)定了目錄項中的屬性類型。對象類中的屬性可以相互繼承[8]。
一個條目通過它的DN被引用。該DN使用如下方式構(gòu)造:首先得到條目自己的名稱(相對DN,簡稱RDN),然后連接上其祖先條目的名稱。比如管理員,具有一個RD:cn=admin,祖先條目為 ou=users,dc=partment,dc=com,dc=cn。 則DN 為:cd=admin,ou=users,dc=partment,dc=com,dc=cn。 本模型的LDAP目錄樹如圖4所示。
圖4 LDAP目錄樹Fig.4 LDAP directory tree
用戶條目由用戶標(biāo)識userId、用戶名username、用戶密碼 password、用戶創(chuàng)建者 creater、用戶描述 description、用戶有效性標(biāo)識enable、用戶所屬角色標(biāo)識roleId以及用戶電話號碼Tel、地址address等擴(kuò)展屬性組成。每個用戶通過roleId的值與角色條目建立多對多映射關(guān)系,同時roleId的值也指定為了角色條目在LDAP中的位置。用戶有效性標(biāo)識可以用來識別該用戶是否被禁用。角色條目由角色標(biāo)識 roleId、角色描述 description、 擁有權(quán)限標(biāo)識seeAlsoRight、角色有效性標(biāo)識enable以及角色擴(kuò)展字段等屬性組成。每個角色的通過seeAlsoRight屬性值與權(quán)限建立多對多的映射關(guān)系。角色有效性標(biāo)識可以用來識別該用戶角色是否被啟用。
RBAC-NTP模型中角色權(quán)限與導(dǎo)航樹是相互映射的一對一的關(guān)系。一般實現(xiàn)導(dǎo)航樹與權(quán)限映射的方法有兩種,編程方式與非編程方式。編程方式是將權(quán)限節(jié)點存儲于數(shù)據(jù)庫當(dāng)中,通過讀取權(quán)限節(jié)點數(shù)據(jù),以一種生成樹算法來動態(tài)的生成樹型結(jié)構(gòu)。非編程方式是將用戶的權(quán)限保存在相關(guān)文檔中,一般為XML文檔,通過將XML文件加載到控件的方式動態(tài)生成導(dǎo)航樹。,而XML文件本身是一種樹型結(jié)構(gòu)的文檔,如果用將用戶權(quán)限保存在XML文檔中并用其來填充導(dǎo)航樹控件的各個節(jié)點,那么頁面的導(dǎo)航樹就可以達(dá)到動態(tài)生成的效果,并且形式上更加直觀。以下是在不同的模塊中,系統(tǒng)訪問權(quán)限的存儲XML設(shè)計:
使用XML文檔存儲權(quán)限信息,既可以達(dá)到存儲的目的,又可以直接加載于頁面控件生成導(dǎo)航樹,因此本文采用XML文檔來存儲權(quán)限信息,通過一定的導(dǎo)航樹生成策略來動態(tài)的修改XML文檔,從而實現(xiàn)導(dǎo)航樹的動態(tài)生成。以下是整個用戶權(quán)限控制模型的數(shù)據(jù)實體間的關(guān)系如圖5所示。
圖5 實體關(guān)系圖Fig.5 E-R diagram
訪問控制算法就是根據(jù)訪問控制策略對存儲權(quán)限數(shù)據(jù)的XML文檔進(jìn)行訪問,返回一個進(jìn)過權(quán)限過濾的XML文檔的視圖。下面給出基于RBAC的XML訪問控制算法。
文中通過擴(kuò)展的RBAC模型設(shè)計實現(xiàn)了對用戶、角色和權(quán)限三者的良好控制,不但減小了授權(quán)管理的復(fù)雜性,增加了系統(tǒng)的安全性,而且在操作上,權(quán)限分配更加直觀。通過權(quán)限樹與系統(tǒng)導(dǎo)航樹一一映射以及控制權(quán)限操作的頁面對用戶是否可見來實現(xiàn)用戶權(quán)限的管理,不僅簡化了RBAC模型的實現(xiàn),減少了應(yīng)用編程實現(xiàn)中繁瑣的權(quán)限判斷邏輯代碼,而且極大程度減少了編程工作量,使Web應(yīng)用的開發(fā)更加方便迅速。通過LDAP目錄服務(wù)來管理基于RBAC的用戶與角色信息,不僅可以適應(yīng)用戶更新操作不太頻繁系統(tǒng),使得用戶對數(shù)據(jù)的訪問更加方便快捷,靈活支持了企業(yè)的安全策略,而且可以根據(jù)需要擴(kuò)充新的LDAP服務(wù)器,實現(xiàn)數(shù)據(jù)的分布存儲。通過對權(quán)限的XML文檔存儲,實現(xiàn)了權(quán)限與系統(tǒng)頁面呈現(xiàn)的綁定,使得訪問權(quán)限控制更加簡便。因此本文對電子政務(wù)系統(tǒng)的RBAC的實現(xiàn),也具有一定借鑒價值。但本文只討論了一些相對簡單的情況,在實際應(yīng)用中,由于權(quán)限控制的粒度取決于對于頁面實現(xiàn)功能的劃分。頁面實現(xiàn)的功能越少,控制粒度越細(xì),靈活性和擴(kuò)展性就高,但造成應(yīng)用的頁面過多,開發(fā)和管理困難;反之,頁面的功能越強(qiáng),但靈活性和擴(kuò)展性就越差。因此該方法要求在設(shè)計階段必須有合適的頁面-功能劃分,才能取得較好的實用效果。
[1]Ferraiolo D,Kuhn R.Role-based access controls[C]//Proceedings of 15th NIST-NCSC National Computer Security Conference, Baltimore, Maryland,1992:554-563.
[2]Sandhu R S,Edward J C,F(xiàn)einstein H L,et al.Role-Based access control models[J].IEEE Computer,1996,29(2):38-47.
[3]李細(xì)雨,韓建民,于娟,等.基于粒邏輯的擴(kuò)展RBAC模型[J].浙江師范大學(xué)學(xué)報:自然科學(xué)版,2009,32(3):303-307.
LI Xi-yu,HAN Jian-min,YU Juan,et al.Extending RBAC model based on granular logic[J].Journal of Zhejiang Normal University:Natural Science Edition,2009,32(3):303-307.
[4]陳琛,陳學(xué)廣,王煜,等.一種基于改進(jìn)RBAC模型的EIS權(quán)限管理框架的研究與實現(xiàn)[J].計算機(jī)應(yīng)用研究,2010,27(10):3855-3858.
CHEN Chen,CHEN Xue-guang,WANG Yu,et al.Research and implementation of authority control framework in EIS basedon improved RBAC model [J]. Application Research of Computers,2010,27(10):3855-3858.
[5]張盈謙,孫斌,劉佳,等.基于AOP的細(xì)粒度RBAC模型研究[J].電子設(shè)計工程,2011,19(18):161-163.
ZHANG Ying-qian,SUN Bin,LIU Jia,et al.Study on finegrained RBAC model based on AOP[J].International Electronic Elements,2011,19(18):161-163.
[6]梁木.基于動態(tài)任務(wù)菜單的RBAC模型的設(shè)計與實現(xiàn)[J].計算機(jī)與數(shù)字工程,2010,38(02):136-137+173.
LIANG Mu.Design and implementation of the RBAC model based on dynamic task menu[J].Computer& Digital Engineering,2010,38(2):136-137+173.
[7]倪晚成,劉連臣,劉偉.基于角色-頁面模型的WEB用戶訪問控制方法[J].計算機(jī)工程與應(yīng)用,2006(21):124-126.
NI Wan-cheng,LIU Lian-chen,LIU Wei.A Role-page model based accesscontrolmethod forweb applications[J].Computer Engineering and Applications,2006(21):124-126.
[8]歐陽星明,趙顥,程劍.運(yùn)用LDAP在Web上實現(xiàn)RBAC的一個方案[J].計算機(jī)工程與科學(xué),2005,27(11):5-6,23.
OUYANG Xing-ming,ZHAO Hao,CHENG Jian.A scheme using LDAP to implement RBAC on the web[J].Computer Engineering&Science,2005,27(11):5-6,23.