儲晨曦,王純,李煒
(1 北京郵電大學網絡與交換技術國家重點實驗室,北京 100876;2 東信北郵信息技術有限公司,北京 100191)
基于LAMP架構的Web權限控制組件的設計與實現*
儲晨曦1,2,王純1,2,李煒1,2
(1 北京郵電大學網絡與交換技術國家重點實驗室,北京 100876;2 東信北郵信息技術有限公司,北京 100191)
設計并實現了一種LAMP(Linux、Apache、MySQL、PHP)架構下的權限控制組件,該組件采用基于角色的訪問控制模型(RBAC),實現Web應用的權限認證控制。權限控制組件主要包含權限管理模塊、角色管理模塊和權限認證模塊3個主要部分,其中權限認證模塊是整個組件的核心,其將權限細分為操作權限和資源權限的方式不僅很好的避免了權限表急劇膨脹的問題,而且使得授權流程更加簡單和高效。
RBAC;權限認證;權限管理;角色管理;LAMP
21世紀隨著互聯網和信息技術的不斷發展,產生了一系列的Internet應用,用戶可訪問的數據資源的結構日益復雜,資源規模日益增大,各類Web系統都面臨著對數據資源進行有效安全管理的難題,在充分共享資源的同時更要求受保護資源不受侵犯,這就要求系統必須能夠進行權限的管理和控制[1]。訪問控制作為網絡安全防范的和保護的核心策略,它的主要任務是保證網絡資源不被非法使用和訪問,傳統應用系統通過用戶名加密碼的方式來實現訪問控制的策略,由于其沒有資源的概念,擴展性和通用性弱,管理效率低下等缺點,在現今的大型系統中越來越難以勝任?;谫Y源的訪問控制在大型的Web系統的設計與開發中占有越來越重要的地位,作為系統底層的技術支撐,訪問控制需要滿足不同主體對不同資源客體的訪問權限控制,現如今大多數的Web應用是基于LAMP(Linux、Apache、MySQL、PHP)架構,在該架構下的權限控制組件越來越成為現實的需要。
訪問控制就是保障信息資源的安全,它是一種通過某些途徑控制或者限制訪問能力及其訪問范圍的方法。訪問控制是為了限制訪問主體對訪問客體(需要保護的資源)的訪問權限,基本的訪問控制策略有自主訪問控制(DAC)和強制訪問控制(MAC)[2]。
強制訪問控制用于將系統中的信息分密級和類進行管理,以保證每個用戶只能訪問到那些被標明可以由他訪問的信息的一種訪問約束機制。通俗的來說,在強制訪問控制下,用戶(或其他主體)與文件(或其他客體)都被標記了固定的安全屬性(如安全級、訪問權限等),在每次訪問發生時,系統檢測安全屬性以便確定一個用戶是否有權訪問該資源。由于強制訪問需要為每一條資源添加權限標簽,數據冗余十分巨大,對于大量數據的管理也會比較復雜。
基于角色的權限訪問控制 (Role Based Access Control,RBAC) 策略[3]采用權限和角色相關聯,用戶通過成為適當角色的成員而得到權限的方式極大的簡化了權限的管理,如圖1所示。

圖1 RBAC模型圖
在RBAC模型中,Who、What、How構成了訪問權限三元組,也就是“Who對What(Which)進行How的操作”。
* Who:權限的擁用者或主體(如Principal、 User、Group、Role、Actor等等)。
* What:權限針對的對象或資源(Resource、Class)。
* How:具體的權限(Privilege,正向授權與負向授權)[4]。
433 Auricular point sticking for adverse effects related to chemotherapy: an update
* Operator:操作。表明對What的How操作。也就是Privilege+Resource。
* Role:角色,一定數量的權限的集合。權限分配的單位與載體,目的是隔離User與Privilege的邏輯關系。
* Group:用戶組,權限分配的單位與載體。權限不考慮分配給特定的用戶而給組。組可以包括組(以實現權限的繼承),也可以包含用戶,組內用戶繼承組的權限。User與Group是多對多的關系。Group可以層次化,以滿足不同層級權限控制的要求[5]。
基于RBAC模型易用和高效的授權方式、簡便和高效的授權模型維護等優點本文選取RBAC模型作為主要的實現模型。
3.1 設計思路
現如今的Web應用中資源的數量和類型都成爆炸式增長,如何統一管理和控制這些不同類型資源的訪問成為Web應用開發中的一個重要話題,另外現如今Web應用對用戶群體進行了細分,這就要求不同用戶主體對不同的資源享有不同的操作權限,因此Web應用必須具備一個基于不同用戶角色的權限管理組件作為底層支撐,如圖2所示。
權限控制組件必須能夠針對不同的用戶主體進行細分,并能夠針對不同的用戶主體群配置不同的操作權限集合,在資源層面能夠實現針對不同用戶主體對不同資源的訪問控制,本文就是在此需求的基礎上實現一個擴展性高、可移植性強、配置性高的訪問控制組件來實現對用戶訪問請求的權限管理和控制。

圖2 應用權限控制組件結構圖
3.2 功能模塊設計
如圖3所示,訪問控制組件主要包括3個主要的模塊:權限管理模塊、角色管理模塊和權限驗證模塊。權限管理模塊主要是針對權限進行相應的添加、刪除、授予等操作,其中權限授予主要是賦予不同的角色授予不同的操作權限,除此之外權限授予還包括資源范圍的指定;角色管理模塊主要是針對角色進行添加、刪除、授予等操作,其中角色授予是為不同的用戶賦予不同的角色,以此角色為關聯來賦予不同的用戶主體相應的操作權限;權限驗證模塊則是驗證用戶主體對于資源客體的操作請求是否具備相應的權限。

圖3 訪問控制組件功能模塊圖
3.3 權限控制流程設計
在基于角色的權限控制模型的基礎之上本文將權限控制中的權限分為兩個方面:基于內容的權限和基于操作的權限。在針對資源內容的操作上,例如對某一資源客體的刪除、增添、更新等,由兩方面共同決定,只有在用戶主體同時擁有該內容權限和操作權限,方可對其進行操作。而不針對資源客體的操作,例如統計管理、組管理等僅由操作權限決定即可。在標準的RABC上對基于內容的權限和基于操作的權限做笛卡爾積[6], 即為每一個欄目對應的操作構成一項權限,這樣的好處是權限的粒度足夠小,但是會使得權限的數量隨著資源客體的增加而急劇膨脹,當資源客體過多的時候會使得權限繁雜并且權限的管理變得混亂,所以我們采取內容和操作分開的處理方式,雖然在粒度上稍顯粗放,當時很好的避免了權限表急劇膨脹的問題。基于以上分析權限認證的基本流程如圖4所示。

圖4 權限控制流程圖
(1)為了簡化權限認證的流程引入了超級用戶角色的概念,當發現請求用戶主體屬于超級用戶直接認證通過。
(2)用戶主體的請求為對某一資源的操作時,在驗證用戶所屬角色是否具有操作權限的基礎上,需要進一步判定該資源是否在用戶所轄資源范圍內才能認證通過。
(3)對于認證結果的處理上,由于Web應用除了了一般的頁面請求,還存在Ajax請求,權限控制組件為了提供統一結果集采用了狀態碼的方式返回認證結果。
該權限控制組件的數據表ER圖如圖5所示。根據ER圖,該組件的實現分為如下兩部分。

圖5 數據表ER圖
4.1 操作權限認證的實現
針對用戶的請求,提取其具體操作(如增、刪、改、查等),從用戶表(user)獲取用戶的角色,并從角色-操作權限表(user2column)中查詢角色的相關權限,如果角色的權限集包含該操作則認證通過。
4.2 資源權限認證的實現
當操作權限認證通過以后,查詢用戶所轄資源范圍,具體流程如下:
(1)獲取請求資源所屬的資源目錄(column)。
(2)查詢用戶-資源目錄映射表(user2column),如找到映射關系則驗證通過,否則進入第3步。
(3)獲取該資源目錄的父目錄,并回到第2步。如父級目錄為空,則認證失敗。
本文設計并實現了一種LAMP架構下的權限控制組件,力圖為權限認證提供統一化的解決方案。使用該組件只需要通過簡單的配置便可實現大多數Web應用對于權限認證控制方面的需要,使得開發者可以投入更多的精力專注于業務邏輯的處理,加快了開發效率。
[1] Ni P, Liao J X, Wang C, Ren K Y. Web information recommendation based on user behaviors[A]. CSIE2009[C]. Los Angeles, USA, March 31-April 2, 2009, 426-430.
[2] Sandhu R, Coyne E J, Feinstein H L, et al. Role-based access control models[J]. IEEE Computer, 1996, 29(2).
[3] BARKLEY J F, CINCOTTA A V, FERRAIOLO D F, et al. Role based access control for the World Wide Web[A]. NIST/NCSC, Proc 20th NIST-NCSC National Information Systems Security Conference[C]. USA:NIST/ NCSC, 1997.
[4] 吳波,王晶. 基于基本RBAC模型的權限管理框架的設計與實現[J]. 計算機應用系統,2011, 20(4):50-54.
[5] 宋善德,劉偉. 基于任務-角色的訪問控制模型[J]. 計算機工程與科學,2005,27 (6):4-9.
[6] 葉錫君,許勇,吳國新. 基于角色訪問控制在Web中的實現技術[J]. 計算機工程,2002,28(1):167-169.
Design and implementation of Web privilege control component based on LAMP
CHU Chen-xi1,2, WANG Chun1,2, LI Wei1,2
(1 State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2 EBUPT Information Technology Co. Ltd., Beijing 100191, China)
This paper designs and realizes an privilege control component based on LAMP (Linux、Apache、MySQL、PHP), which uses Role-Based Access Control (RBAC)model, to realize the privilege authentication control of Web applications. The component includes privilege management module, role management module and privilege authentication module, and the core of the entire component is the privilege authentication module, which devide the privilege into operation privilege and resource privilege. It is not only a good way to avoid the rapid expansion of the permissions table, but also makes the authentication process more simple and eff i cient.
RBAC; privilege authentication; privilege management; role management; LAMP
TN929.5
A
1008-5599(2012)09-0082-04
2012-08-28
國家自然科學基金(No. 61072057,61101119,61121001,60902051);長江學者和創新團隊發展計劃資助(No. IRT1049);國家科技重大專項(No. 2011ZX03002-001-01,移動互聯網總體架構研究)。