張 軒 余 亮
(中國電子科技集團公司第二十八研究所 南京 210007)
與C/S系統相比,B/S系統中的權限更為重要,C/S系統具有特殊的客戶端,權限管理可通過客戶端或客戶端+服務器檢測實現,而B/S系統中,每臺計算機都擁有瀏覽器功能,如果不建立完整的權限檢測機制,非法用戶可能通過瀏覽器輕易訪問到B/S系統中的所有功能。因此需在B/S業務系統中建立健壯的權限管理體系,經過授權的用戶可以正常合法的使用已授權功能,未經授權的非法用戶將被拒之門外。本文基于 RBAC(Role-Based policies Access Control)—基于角色的訪問控制,結合輕量級目錄訪問服務(LDAP)對所存儲的權限信息元素快速讀寫的優勢,探索B/S應用系統權限設計方案。
RBAC是由NIST(National Institute of Standards and Technology)美國國家標準與技術研究院提出,其主要思想可簡單地用圖1來表示[1]。

圖1 RBAC模型
在RBAC基本思想中,訪問控制過程分成兩步:訪問權限與角色相關聯,角色再與用戶關聯,實現用戶與訪問權限的邏輯分離。
用戶與訪問權限的邏輯分離,極大方便了權限管理。在實際應用中,如果一個用戶的職位發生變化,只要將用戶當前角色剔除,加入代表新職務或新任務的角色即可。角色/權限之間的變化比角色/用戶關系之間的變化相對要慢,而且配置權限到角色的工作比較復雜,需要一定的技術,所以由專門的技術人員來承擔;而委派用戶到角色不需要很多技術,可以由行政管理人員來執行,這與現實中情況一致。
LDAP是一個新的目錄訪問協議,它是在繼承了X.500標準的所有優點的基礎上發展起來的一個基于TCP/IP體系的目錄服務協議,也是目前在網絡上應用最為廣泛的目錄服務協議[4]。與UNIX的文件系統類似,在LDAP中目錄按照樹型結構來組織,該樹型結構稱為目錄信息樹(DirectoryInformation Tree,DIT)。LDAP標準定義了目錄中訪問信息的協議,規定了信息的形式和特性、信息存放的索引和組織方式、分布式的操作模型,并且使LDAP協議本身和信息模型都是可以被擴展的。LDAP目錄中可以存放如文本、圖片、URL、二進制數據、證書等不同類型的數據。LDAP樹狀信息中的基本數據單元稱為條目(Entry),條目可以理解為關系數據庫中表的記錄;條目是具有標識名(Distinguished Name,DN)的屬性(Attribute)集合,DN 可以理解為關系數據庫表中的關鍵字(Primary Key);屬性由類型(Type)和多個值(Values)組成。LDAP中的屬性可以理解為關系數據庫中的域(Field),域由域名和數據類型組成,在LDAP中為了便于檢索類型(Type),一個類型(Type)可以同時擁有多個值(Value)。和關系數據一樣,LDAP服務器也是用來處理查詢和更新的,但LDAP與關系數據庫具有較大的不同,LDAP不具有關系數據庫完備的關系運算處理能力,也沒有很強的數值計算能力。但是LDAP目錄服務對讀、瀏覽和搜索等操作進行了優化[2]。
常規B/S應用系統權限管理設計方案,其權限管理元素(組織機構、角色、人員、權限信息)存儲于關系型數據庫中,存在的弊端顯而易見:數據庫需不斷進行數據類型的驗證和事務完整性的確認;角色、人員、權限信息的關系通過表的關聯體現,頻繁的數據訪問使得前端用戶對數據的控制不夠靈活[5]。
輕量級目錄服務協議(LDAP)的推出解決了上述問題。主要優勢體現在:
1)與關系數據庫相比,LDAP的檢索性能更加迅速,對讀、瀏覽和搜索進行了優化,主要面向數據的查詢服務(查詢和修改操作比一般是大于10∶1),快速響應和大容量查詢并且提供多目錄服務器的信息復制功能[3]。
2)提供多目錄服務器的信息復制功能。
3)角色、人員、權限信息關系通過目錄節點之間的相互引用體現,與通過數據表體現方式相比更加簡化。
4)同時,LDAP協議是跨平臺的協議,是開放的Internet標準,因此得到了業界的廣泛認可。
基于LDAP的權限管理目錄體系如圖2所示。

圖2 基于LDAP的權限數據元素存儲關系
1)Users目錄用于管理所有的用戶,保存用戶的基本信息。
2)Groups目錄用于管理系統中所有的組織機構(崗位)。組織機構節點下可包含下級的組織機構,體現組織機構在部門內部的上下級關系。
3)Roles目錄存儲系統中的角色信息。
4)Permissions目錄存儲系統中的權限信息,可進一步分解為功能權限信息與資源權限信息。
圖2中虛箭頭體現了各類型節點(組織機構、角色、人員、權限)在權限管理模型中的相互關系,在LDAP的配置文件中,各節點屬性定義如圖3所示。
圖2是體現了存儲結構與存儲關系,圖3是圖2的權限數據元素存儲關系在LDAP服務器中配置文件的定義。
LDAP目錄中的信息是按照樹型結構組織的,具體信息存儲在條目(entry)的數據結構中。條目包含了多個屬性,每個屬性由一個類型和多個值構成。每個條目使用一個識別名(DN)標識,每個條目DN的各個元素稱為相對識別名(RDN)。這個樹型結構類似于文件系統,RDN相當于文件,DN相當于文件的絕對路徑。

圖3 目錄節點的LDAP描述文件定義
在更多的場景中,需要對原有B/S系統、現有B/S系統進行集成,提供統一的權限管理體系和展現界面,需要結合單點登錄技術(SSO)、門戶技術一起構建模型,模型描述如圖4所示[7]。

圖4 統一的權限管理體系
權限數據、用戶(組織機構)、角色數據存入LDAP服務器,并通過圖2中LDAP節點之間的引用關系,建立實際的RBAC模型。
用戶進入門戶時,B/S應用系統的訪問控制功能對訪問者進行身份認證,通過讀取LDAP服務器中的目錄數據(組織機構、用戶、權限數據),合法用戶將被賦予相應的系統訪問權限。當合法用戶通過門戶系統訪問內部的B/S應用系統時,訪問控制功能將在跨系統訪問中提供單一登錄(“一次鑒權”)的服務機制。即系統自動記錄用戶當前身份信息,并在登錄新的應用系統時將記錄用戶的身份,各應用系統支持單點登錄機制并認可接收用戶身份信息,使用者無需再登錄用戶身份認證信息即可登錄此系統[4]。
進入門戶后,如訪問新研系統,會話Session里存放有登錄的用戶名、該用戶所屬組織機構信息、該用戶具有的訪問新研系統的權限,這些信息在單點登錄過程中從LDAP服務器中獲取,新研系統依據這些信息(尤其是用戶權限訪問信息),提供相應功能展示[8]。
進入門戶后,如訪問原有系統,會話Session里只存放有登錄的用戶名、該用戶所屬組織機構信息,這些信息在單點登錄過程中從LDAP服務器中獲取,但無法從LDAP服務器中獲取該用戶具有的訪問原有系統的權限,通過在原有系統內部增加一個過濾器,在不改動原有用戶權限數據庫前提下,將原有系統的用戶權限信息與登錄門戶的用戶信息做映射,達到集成的目的。
這種集成方式無需改造原有系統的權限管理體制,但是需要在過濾器里維護足夠的用戶映射關系。過濾器的工作模式如圖5所示。

圖5 過濾器工作模式圖
圖5簡要描述了過濾器的映射關系模型,以及通過單點登錄認證的用戶如何利用映射關系訪問原有B/S應用系統。事實上,如果原有系統的權限管理體系足夠復雜,單靠上圖的模型是遠遠不夠的,需要用戶在過濾器里維護足夠復雜的映射關系。
與常規基于關系數據庫的權限管理體系相比,RBAC(基于角色的訪問控制)實現了用戶與訪問權限的邏輯分離,權限指派流程更加清晰,便于信息系統管理員維護;同時權限信息元素存儲于輕量級目錄訪問服務(LDAP)中,大幅縮減了對數據庫的訪問,提高了系統的訪問控制運行效率,是未來基于B/S架構的大型管理信息系統權限控制所采用一項核心技術[9]。
目錄服務(LDAP)被視為網絡應用發展的下一個核心技術,具備良好的跨平臺能力,有廣闊的應用前景,隨著國產化、網絡化進程,以LDAP為代表的目錄服務,以其簡單、高效、低成本的優勢,提供了一種統一而簡便的網絡資源管理和組織技術。
使用目錄服務來實現系統權限管理只是目錄服務的一個簡單應用。目錄服務是一個具有強大功能和潛力的新技術,它的應用不僅僅限于系統權限管理,我們還可以利用LDAP作名錄解析、視頻會議、信息資源查詢等。
新一代的基于B/S架構信息管理系統將基于國產化的軟硬件平臺,目錄服務(LDAP)為名錄服務提供一種高效的解決方案。
LDAP的諸多特性為跨平臺名錄服務的開發提供了可行性條件,具體體現在[11]:
1)提供了一個操作系統和應用程序需要的信息服務模型,可以被許多平臺和應用程序接收和實現。于此,可基于LDAP開發新的名錄服務,運行在不同操作系統之上的遺留業務系統可以跨平臺訪問名錄服務,有效整合現有資源,避免重復開發,降低成本。
2)使用項、對象類、屬性等概念和模式來描述信息,可以滿足未來名錄服務各級名錄項的多種屬性定義,便于依據需求的進展擴充名錄項,形成一個開放的名錄服務體系。
3)LDAP使用目錄信息樹結構和層次命名模型:在分布性方面,目錄信息都可以分布在一個目錄服務器中,這些服務器可以由各組織管理,既保證了目錄信息總體結構的一致性,又滿足了分級管理的需要;LDAP的X.525協議支持各級LDAP服務器的數據復制。利用LDAP的分布性和可復制性,未來的名錄服務可以實現分級管理、按需同步、統一授權。
4)LDAP所提供的基于安全加密方式的認證機制,為未來名錄服務安全可靠的同步傳輸提供技術保障。
[1]覃章榮,王強,歐鑌進,等.基于角色的權限管理方法的改進與應用[J].計算機工程與設計,2007,28(3):1282-1284.
[2]李馥娟.基于LDAP的統一身份認證系統的設計[J].中國新通信,2009(5):48-50.
[3]胡開勝.LDAP協議在數字圖書館統一身份認證系統中的應用[J].電腦知識與技術,2010,6(10):2334-2336.
[4]張輝,楊岳湘,汪詩林,等.數字校園中基于LDAP的統一用戶身份管理技術研究[J].計算機工程與科學,2005,27(1):14-17.
[5]付珊,李寧,來競,等.一種面向LDAP的目錄查詢語言DQL[J].計算機與數字工程,2008,36(1):23-25.
[6]李冰,原野.LDAP目錄服務在統一身份認證系統中的應用[J].信息技術,2005(1):68-71.
[7]尹文平,蘭雨晴,高靜,等.基于LDAP的用戶統一身份認證管理系統的設計與實現[J].計算機系統應用,2005(10):18-21.
[8]李翔,晁愛農,劉孟強,等.LDAP的研究及其在統一身份認證系統中的應用[J].計算機應用,2008,28:1-3.
[9]吳潔明,周寧.基于LDAP的信息共享平臺的研究與實現[J].計算機應用,2008,28(4):26-29.
[10]王居柱,侯彤璞,孫明柱.基于Struts-Hibernate架構的權限管理系統的設計與實現[J].計算機與數字工程,2011(4).
[11]肖琬蓉,楊生舉.基于LDAP的統一用戶認證系統的設計與實現[J].計算機科學,2008,35(5):298-301.