張靖康,石宇良,王海豹
(北京工業大學 軟件學院,北京 100022)
當前,隨著電子政務的普及和高速發展,越來越多的政府部門和企業都開始爭相采用工作流技術來有效的推進各個部門或單位的電子政務建設。由于電子政務系統所涉及的各種職能人員較多且組織結構往往都較為復雜,再加之政府內部信息的高機密的性質對系統的安全性提出了很高的要求。那么如何保證系統安全,保證系統數據安全,以及保證合法用戶訪問正確的數據就顯得非常重要。所以設計一套完整的,便捷的,可靠的用戶訪問控制策略是電子政務系統建設中最為關鍵的一步。
傳統的自主訪問控制 (DAC,Discretionary Access Control)、強制訪問控制(MAC,Mandatory Access Control)策略都是用戶通過對權限的直接操作來實現權限控制,它們的靈活度并不能適應在工作流的系統環境下用戶的動態變化以及用戶權限的經常性變更。
1992年由Ferraiolo等人[1]提出的基于角色的訪問控制(Role-Based Access Control,RBAC)的模型第一次將角色作為用戶和權限之間的媒介。而由Sandhu等[2]在1996年提出的最具代表性的RBAC96模型為現在的RBAC模型的普及奠定了基礎。由于該模型實現了通過引入角色的概念將用戶與訪問權限分離,從而有效的降低了對訪問控制的復雜度以及很好的適應工作流系統靈活的特點。
由于RBAC是以主體為中心的訪問控制模型,因此近年來對RBAC的擴展研究大多集中于角色,對組織機構的研究。2009年,李細雨等人[3]將粒邏輯的思想引入RBAC模型中,提出了基于粒計算角色訪問控制模型 (G-RBAC);2010年陳琛,陳學廣等[4]提出了改進的RBAC細粒度模型(FG-RBAC);2011年張盈謙,孫斌等[5]提出基于AOP的細粒度RBAC模型。然而,遺憾的是,這些模型的改進都是基于角色的細化,根據訪問客體設置角色。導致權限和角色數量的成倍甚至指數倍的增加,使得用戶管理越來越復雜。本文在RBAC模型的基礎上通過權限與系統模塊相結合,引入系統訪問頁面與訪問權限綁定的理念,來減少授權管理的復雜性,降低管理開銷。
RBAC模型的基本思想是:引入了角色的概念,是用戶主體與訪問權限實現松耦合,用戶與角色連接之后,權限不是直接賦予給用戶,而是賦予給角色,通過用戶所扮演的角色來擁有的訪問權限。在NIST (The National Institute of Standards andTechnology,美國國家標準與技術研究院)標準RBAC模型中,主要由4個部件模型組成,包括基本模型RBAC0 (Core RBAC)、 角色繼承模型 RBAC1(Hierarchal RBAC)、角色限制模型 RBAC2(Constraint RBAC)和統一組合模型RBAC3(Combined RBAC)。圖1所示基于標準的RBAC模型。

圖1 標準的RBAC模型Fig.1 Standard RBAC model
基本的RBAC模型是由用戶、角色、權限、會話這4個數據元素,角色分配、權限分配這兩種分配關系,角色層次結構以及作用于各部分之上的約束條件組成。角色層次結構是在RBAC1模型在RBAC0的基礎上引入的,在數學上是一種偏序關系,直觀上體現為角色間的繼承關系,即高級角色繼承低級角色的權限。如果角色繼承關系是一個絕對偏序關系,允許角色之間的多繼承那么這種角色繼承關系為一般繼承關系。不過有時低級角色的某些權限拒絕被高級角色繼承,這時就要求角色繼承關系是一個樹結構。這種繼承關系叫受限繼承。約束條件是在RBAC2模型中引入,也就是角色約束模型。它規定了用戶賦予角色時,角色賦予權限時或者用戶在某一時刻激活一個角色時所應遵循的強制性規則,一般最常見的規則為互斥角色關系,互斥權限關系等。RBAC3模型實際上是RBAC1模型和RBAC2模型的綜合。
雖然RBAC模型通過引入角色概念令其具了高靈活性和易維護性,但由于該模型中用戶與角色,角色和權限之間的多對多關系,使其在系統中的應用實現比較繁瑣。并且目前多數對于RBAC的授權管理模型的研究尚不完善,導致一些問題仍然沒有解決,首先是大型系統中權限粒度與角色數量的矛盾。權限粒度越小,角色數量越多,角色數量的增長與權限粒度的細化成指數增長。其二、RBAC本質上是個被動安全模型,缺乏靈活動態的授權機制[6]。
近年來隨著信息技術的發展,B/S應用模式的系統迅速增加并成為當前信息系統的主流應用模式,RBAC模型在WEB應用中實現的繁瑣性也越來越明顯。在一般的電子政務系統中無論是它的用戶數量、角色種類、操作權限,還是系統的功能、顯示的頁面都十分復雜。圖2為傳統B/S系統設計中RBAC模型對應的實體-關系模型圖[7]。

圖2 用戶權限管理E-R模型Fig.2 E-R model of user permission management
模型中除了用戶與角色、角色與權限之間的多對多關系以外,又增加了頁面與功能實體之間的多對多關系。這些復雜的關系使得模型在系統中實現變得更加復雜。但是,如果能夠按照一定的頁面設計原則將頁面與用戶所屬角色具有的權限與所能訪問的功能對應到系統中允許被訪問的某個頁面或者某組頁面操作上面去,那么就可以通過動態的控制這些頁面對特定用戶的可見性來實現用戶權限的管理。從而大大簡化上圖所示的用戶權限管理模型。因此本文針對RBAC模型的不足,提出了基于導航樹頁面的RBAC模型(如圖3所示)。

圖3 基于導航樹頁面的RBAC模型Fig.3 RBAC model based on navigation tree and page
導航樹的引入是為了能夠更好的動態呈現角色權限所對應的頁面索引,從而使得用戶方便、快捷、直觀的與系統進行交互。而頁面的設計應該遵守以下原則:對于一個頁面要實現的功能,應該有盡量細粒度的劃分,確保在某一頁面上實現的一個或者多個功能只對應某一權限所允許的訪問。本模型的核心理念是將權限與應用系統的導航菜單關聯起來,根據頁面設計原則,一項權限對應導航樹中的一個節點同時映射底層一個頁面。用戶在登錄系統時,根據不同的用戶及其權限對導航樹進行動態修改,通過導航樹屏蔽用戶無權訪問的操作頁面,從而達到應用系統的安全訪問。
文中采用LDAP作為訪問控制方案的信息模型,來存儲用戶、角色、權限等信息。LDAP(Lightweight Directory Access Protocol)即輕量目錄訪問協議。它是一個基于X.500標準且用來發布目錄信息到許多不同資源的協議。LDAP的目錄服務的目標是快速響應和大容量查詢,由于LDAP對讀操作進行了優化,其數據讀取速度比關系數據庫快一個數量級,因此非常適合用戶對數據頻繁的查詢操作,而對數據的更新請求相對較少的情況。另一方面LDAP目錄結構的樹狀信息模型更適合操作邏輯上呈現樹型結構的數據,比用關系數據庫存儲這些數據更加直觀。
LDAP中的數據是以目錄樹的形式存放的。樹中的每一個節點稱為目錄項(Entry)。一個目錄項由若干個屬性構成。屬性又通過一個屬性類型和一個或多個屬性值表示。根節點到每個目錄項的路徑稱為DN(DistinguishedName,簡稱DN),它用來唯一標識樹中的節點。具有相同屬性的一組目錄項組成一個對象類,對象類規定了目錄項中的屬性類型。對象類中的屬性可以相互繼承[8]。
一個條目通過它的DN被引用。該DN使用如下方式構造:首先得到條目自己的名稱(相對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
用戶條目由用戶標識userId、用戶名username、用戶密碼 password、用戶創建者 creater、用戶描述 description、用戶有效性標識enable、用戶所屬角色標識roleId以及用戶電話號碼Tel、地址address等擴展屬性組成。每個用戶通過roleId的值與角色條目建立多對多映射關系,同時roleId的值也指定為了角色條目在LDAP中的位置。用戶有效性標識可以用來識別該用戶是否被禁用。角色條目由角色標識 roleId、角色描述 description、 擁有權限標識seeAlsoRight、角色有效性標識enable以及角色擴展字段等屬性組成。每個角色的通過seeAlsoRight屬性值與權限建立多對多的映射關系。角色有效性標識可以用來識別該用戶角色是否被啟用。
RBAC-NTP模型中角色權限與導航樹是相互映射的一對一的關系。一般實現導航樹與權限映射的方法有兩種,編程方式與非編程方式。編程方式是將權限節點存儲于數據庫當中,通過讀取權限節點數據,以一種生成樹算法來動態的生成樹型結構。非編程方式是將用戶的權限保存在相關文檔中,一般為XML文檔,通過將XML文件加載到控件的方式動態生成導航樹。,而XML文件本身是一種樹型結構的文檔,如果用將用戶權限保存在XML文檔中并用其來填充導航樹控件的各個節點,那么頁面的導航樹就可以達到動態生成的效果,并且形式上更加直觀。以下是在不同的模塊中,系統訪問權限的存儲XML設計:

使用XML文檔存儲權限信息,既可以達到存儲的目的,又可以直接加載于頁面控件生成導航樹,因此本文采用XML文檔來存儲權限信息,通過一定的導航樹生成策略來動態的修改XML文檔,從而實現導航樹的動態生成。以下是整個用戶權限控制模型的數據實體間的關系如圖5所示。

圖5 實體關系圖Fig.5 E-R diagram
訪問控制算法就是根據訪問控制策略對存儲權限數據的XML文檔進行訪問,返回一個進過權限過濾的XML文檔的視圖。下面給出基于RBAC的XML訪問控制算法。

文中通過擴展的RBAC模型設計實現了對用戶、角色和權限三者的良好控制,不但減小了授權管理的復雜性,增加了系統的安全性,而且在操作上,權限分配更加直觀。通過權限樹與系統導航樹一一映射以及控制權限操作的頁面對用戶是否可見來實現用戶權限的管理,不僅簡化了RBAC模型的實現,減少了應用編程實現中繁瑣的權限判斷邏輯代碼,而且極大程度減少了編程工作量,使Web應用的開發更加方便迅速。通過LDAP目錄服務來管理基于RBAC的用戶與角色信息,不僅可以適應用戶更新操作不太頻繁系統,使得用戶對數據的訪問更加方便快捷,靈活支持了企業的安全策略,而且可以根據需要擴充新的LDAP服務器,實現數據的分布存儲。通過對權限的XML文檔存儲,實現了權限與系統頁面呈現的綁定,使得訪問權限控制更加簡便。因此本文對電子政務系統的RBAC的實現,也具有一定借鑒價值。但本文只討論了一些相對簡單的情況,在實際應用中,由于權限控制的粒度取決于對于頁面實現功能的劃分。頁面實現的功能越少,控制粒度越細,靈活性和擴展性就高,但造成應用的頁面過多,開發和管理困難;反之,頁面的功能越強,但靈活性和擴展性就越差。因此該方法要求在設計階段必須有合適的頁面-功能劃分,才能取得較好的實用效果。
[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,Feinstein H L,et al.Role-Based access control models[J].IEEE Computer,1996,29(2):38-47.
[3]李細雨,韓建民,于娟,等.基于粒邏輯的擴展RBAC模型[J].浙江師范大學學報:自然科學版,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]陳琛,陳學廣,王煜,等.一種基于改進RBAC模型的EIS權限管理框架的研究與實現[J].計算機應用研究,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的細粒度RBAC模型研究[J].電子設計工程,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]梁木.基于動態任務菜單的RBAC模型的設計與實現[J].計算機與數字工程,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].計算機工程與應用,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]歐陽星明,趙顥,程劍.運用LDAP在Web上實現RBAC的一個方案[J].計算機工程與科學,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.