目錄服務中LDAP的基本模型

近幾年,隨着LDAP(Light Directory Access Protocol,輕量級目錄訪問協議)技術的興起和應用領域的不斷擴展,目錄服務技術成爲許多新型技術實現信息存儲、管理和查詢的首選方案,特別是在網絡資源查找、用戶訪問控制與認證信息的查詢、新型網絡服務、網絡安全、商務網的通用數據庫服務和安全服務等方面,都需要應用目錄服務技術來實現一個通用、完善、應用簡單和可以擴展的系統。

目錄服務的組成


  目錄服務就是按照樹狀信息組織模式,實現信息管理和服務接口的一種方法。目錄服務系統一般由兩部分組成:第一部分是數據庫,一種分佈式的數據庫,且擁有一個描述數據的規劃;第二部分則是訪問和處理數據庫有關的詳細的訪問協議。

  目錄服務與關係型數據庫不同的是,目錄不支持批量更新所需要的事務處理功能,目錄一般只執行簡單的更新操作,適合於進行大量數據的檢索;目錄具有廣泛複製信息的能力,從而在縮短響應時間的同時,提高了可用性和可靠性。目前,目錄服務技術的國際標準有兩個,即較早的X.500標準和近年迅速發展的LDAP標準。

  X.500是一個協議族

  X.500實際上不是一個協議,它是由一個協議族組成:X.501模型強調目錄服務基本模型和概念;X.509認證框架是如何在X.500中處理目錄客戶和服務器的認證;X.511 抽象服務定義X.500被要求提供的功能性服務;X.518 分佈式操作過程表明如何跨越多臺服務器處理目錄服務;X.519 協議規範即是X.500協議,包括目錄訪問協議DAP、目錄系統協議DSP、目錄操作綁定協議DOP和目錄信息Shadowing協議DISP;X.520 選定的屬性類型要求是X.500自己使用的屬性類型;X.521選定的對象類即爲X.500自己使用的對象類;X.525複製是如何在目錄服務器之間複製目錄內容。

  在這些X.500標準中主要定義有多種內容。一個信息模型:確定目錄中信息的格式和字符集,如何在項中表示目錄信息(定義對象類、屬性等模式);一個命名空間:確定對信息進行的組織和引用,如何組織和命名項——目錄信息樹DIT和層次命名模型;一個功能模型:確定可以在信息上執行的操作;一個認證框架:保證目錄中信息的安全,如何實現目錄中信息的授權保護——訪問控制模型;一個分佈操作模型:確定數據如何進行分佈和如何對分佈數據執行操作,如何將全局目錄樹劃分爲管理域進行管理——目錄管理模型,客戶端與服務器通信的協議—目錄訪問協議DAP,將用戶請求在服務器之間進行鏈接所需的目錄系統協議DSP,將選定的信息在服務器之間進行復制所需的目錄信息映像協議DISP,用於自動在服務器之間協商連接配置的目錄操作綁定協議DOP。

  X.500雖然是一個完整的目錄服務協議,但在實際應用的過程中,卻存在着不少障礙。由於目錄訪問協議DAP這種應用層協議是嚴格遵照複雜的ISO七層協議模型制定的,對相關層協議環境要求過多,主要運行在UNIX機器上,在許多小系統上,如PC和Macintosh上無法使用,因此沒有多少人按照DAP開發應用程序,TCP/IP協議體系的普及,更使得這種協議越來越不適應需要。

  LDAP目錄訪問標準

  LDAP協議從1993年批准,產生了LDAP V1版本,隨後於1997年發佈了第三個版本LDAP V3,它的出現是LDAP協議發展的一個里程碑性標誌,它使LDAP協議不僅僅作爲X.500的簡化版,同時提供了LDAP協議許多自有的特性,使LDAP協議功能更爲完備,具有了更大的生命力。

  LDAP V3協議也不是一個協議,而是一個協議族。RFC 2251——LDAP V3核心協議,定義了LDAP V3協議的基本模型和基本操作;RFC 2252——定義了LDAP V3中的基本數據模式(Schema)(包括語法、匹配規則、屬性類型和對象類)以及標準的系統數據模式;RFC 2253——定義了LDAP V3中的分辨名(DN)表達方式;RFC 2254——定義了LDAP V3中的過濾器的表達方式;RFC 2255——LDAP統一資源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定義了LDAP V3中的認證方式;RFC 2830——定義瞭如何通過擴展使用TLS服務;RFC 1823——定義了C的LDAP客戶端API開發接口;RFC 2847——定義了LDAP數據導入、導出文件接口LDIF。

  在這些協議中,主要定義了LDAP的內容,同時主要定義了一個信息模型:確定LDAP目錄中信息的格式和字符集,如何表示目錄信息(定義對象類、屬性、匹配規則和語法等模式);一個命名空間:確定對信息進行的組織方式——目錄信息樹DIT,以DN和RDN爲基礎的命名方式,以及LDAP信息的Internet表示方式;一個功能模型:確定可以在信息上執行的操作的通訊協議以及在客戶端進行這些操作的API接口;一個安全框架:保證目錄中信息的安全,匿名、用戶名/密碼、SASL等多種認證方式,以及與TLS結合的通訊保護框架;一個分佈式操作模型:基於Referral方式的分佈式操作框架;一個LDAP擴展框架:基於控制和擴展操作的LDAP擴展框架 。

  但在LDAP協議中尚未定義通用的訪問控制模型和複製協議(對應X.500的映射協議DISP),儘管不同的LDAP廠商均實現了自己的控制模型和複製機制,但是LDAP標準的發展正集中在訪問控制模型、複製協議(DUP)以及擴展操作上,這些擴展操作包括查詢的分頁和排序、語言標籤、動態目錄、LDAP服務發現等。

LDAP四種基本模型


  信息模型:描述LDAP的信息表示方式

  在LDAP中信息以樹狀方式組織,在樹狀信息中的基本數據單元是條目,而每個條目由屬性構成,屬性中存儲有屬性值;LDAP中的信息模式,類似於面向對象的概念,在LDAP中每個條目必須屬於某個或多個對象類(Object Class),每個Object Class由多個屬性類型組成,每個屬性類型有所對應的語法和匹配規則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP中一個屬性類型可以對應多個值。

  在LDAP中把對象類、屬性類型、語法和匹配規則統稱爲Schema,在LDAP中有許多系統對象類、屬性類型、語法和匹配規則,這些系統Schema在LDAP標準中進行了規定,同時不同的應用領域也定義了自己的Schema,同時用戶在應用時,也可以根據需要自定義Schema。這有些類似於XML,除了XML標準中的XML定義外,每個行業都有自己標準的DTD或DOM定義,用戶也可以自擴展;也如同XML,在LDAP中也鼓勵用戶儘量使用標準的Schema,以增強信息的互聯互通。

  在Schema中最難理解的是匹配規則,這是LDAP中爲了加快查詢的速度,針對不同的數據類型,可以提供不同的匹配方法,如針對字符串類型的相等、模糊、大於小於均提供自己的匹配規則。

  命名模型:描述LDAP中的數據如何組織

  LDAP中的命名模型,也即LDAP中的條目定位方式。在LDAP中每個條目均有自己的DN和RDN。DN是該條目在整個樹中的唯一名稱標識,RDN是條目在父節點下的唯一名稱標識,如同文件系統中,帶路徑的文件名就是DN,文件名就是RDN。

  功能模型:描述LDAP中的數據操作訪問

  在LDAP中共有四類10種操作:查詢類操作,如搜索、比較;更新類操作,如添加條目、刪除條目、修改條目、修改條目名;認證類操作,如綁定、解綁定;其它操作,如放棄和擴展操作。除了擴展操作,另外9種是LDAP的標準操作;擴展操作是LDAP中爲了增加新的功能,提供的一種標準的擴展框架,當前已經成爲LDAP標準的擴展操作,有修改密碼和StartTLS擴展,在新的RFC標準和草案中正在增加一些新的擴展操作,不同的LDAP廠商也均定義了自己的擴展操作。

  安全模型:描述LDAP中的安全機制

  LDAP中的安全模型主要通過身份認證、安全通道和訪問控制來實現。

  身份認證 在LDAP中提供三種認證機制,即匿名、基本認證和SASL(Simple Authentication and Secure Layer)認證。匿名認證即不對用戶進行認證,該方法僅對完全公開的方式適用;基本認證均是通過用戶名和密碼進行身份識別,又分爲簡單密碼和摘要密碼認證;SASL認證即LDAP提供的在SSL和TLS安全通道基礎上進行的身份認證,包括數字證書的認證。

  通訊安全 在LDAP中提供了基於SSL/TLS的通訊安全保障。SSL/TLS是基於PKI信息安全技術,是目前Internet上廣泛採用的安全服務。LDAP通過StartTLS方式啓動TLS服務,可以提供通訊中的數據保密性、完整性保護;通過強制客戶端證書認證的TLS服務,同時可以實現對客戶端身份和服務器端身份的雙向驗證。

  訪問控制 雖然LDAP目前並無訪問控制的標準,但從一些草案中或是事實上LDAP產品的訪問控制情況,我們不難看出:LDAP訪問控制異常的靈活和豐富,在LDAP中是基於訪問控制策略語句來實現訪問控制的,這不同於現有的關係型數據庫系統和應用系統,它是通過基於訪問控制列表來實現的,無論是基於組模式或角色模式,都擺脫不了這種限制。

  在使用關係型數據庫系統開發應用時,往往是通過幾個固定的數據庫用戶名訪問數據庫。對於應用系統本身的訪問控制,通常是需要建立專門的用戶表,在應用系統內開發針對不同用戶的訪問控制授權代碼,這樣一旦訪問控制策略變更時,往往需要代碼進行變更。總之一句話,關係型數據庫的應用中用戶數據管理和數據庫訪問標識是分離的,複雜的數據訪問控制需要通過應用來實現。

  而對於LDAP,用戶數據管理和訪問標識是一體的,應用不需要關心訪問控制的實現。這是由於在LDAP中的訪問控制語句是基於策略語句來實現的,無論是訪問控制的數據對象,還是訪問控制的主體對象,均是與這些對象在樹中的位置和對象本身的數據特徵相關。

  在LDAP中,可以把整個目錄、目錄的子樹、制定條目、特定條目屬性集或符合某過濾條件的條目作爲控制對象進行授權;可以把特定用戶、屬於特定組或所有目錄用戶作爲授權主體進行授權;最後,還可以定義對特定位置(例如IP地址或DNS名稱)的訪問權。

LDAP的應用


  由於LDAP所具有的查詢效率高、樹狀的信息管理模式、分佈式的部署框架以及靈活而細膩的訪問控制,使LDAP廣泛地應用於基礎性、關鍵性信息的管理,如用戶信息、網絡資源信息等。LDAP的應用主要涉及幾種類型。信息安全類:數字證書管理、授權管理、單點登錄;科學計算類:DCE(Distributed Computing Envirionment,分佈式計算環境)、UDDI (Universal Description,Discovery and Integration, 統一描述、發現和集成協議);網絡資源管理類:MAIL系統、DNS系統、網絡用戶管理、電話號碼簿;電子政務資源管理類:內網組織信息服務、電子政務目錄體系、人口基礎庫、法人基礎庫。

  目前,LDAP已應用在北京大學校園網絡用戶管理系統、Novell的eProvision應用解決方案、上海公務網統一用戶管理、中國數字圖書館系統的用戶管理部分,以及北京、上海、天津、福建等省級CA等。

  某市公務網中的LDAP應用案例:在該市公務網中具有三個LDAP服務器,一個LDAP服務器爲公務網項目中CA的主,一個LDAP服務器爲公務網項目中CA的從,第三個目錄服務器存儲有上海公務網中的所有用戶信息。在該系統中建立了一個基於Web方式的用戶管理系統,各個局維護自己的數據,CA系統中的用戶信息以及辦公自動化系統、電子郵件系統、授權管理系統、共享資源管理系統,通過RMI接口實現與用戶組織樹目錄服務系統中信息的同步。

X.500與LDAP的比較分析


  從目錄服務技術的發展來看,LDAP標準實際上是在X.500標準基礎上產生的一個簡化版本,兩者之間的關係與那種爲解決同一個問題出現的兩個獨立發展的技術有很大的不同之處,因此需要在此基礎上對這兩個標準進行理解和分析。

  首先,作爲IETF(Internet Engineering Task Force)一個正式的標準,LDAP是X.500標準中的目錄訪問協議DAP的一個子集,可用於建立X.500目錄。因此這兩個目錄服務技術標準有着許多的共同之處,即在平臺上,都實現了一個通用的平臺結構,提供了一個操作系統和應用程序需要的信息服務類型,可以被許多平臺和應用程序接收和實現;在信息模型上,都使用了項、對象類、屬性等概念和模式來描述信息;在命名空間方面,都使用了目錄信息樹結構和層次命名模型;在功能模型上,都使用了相似的操作命令來管理目錄信息;在認證框架方面,都可以實現用戶名稱和密碼,或者基於安全加密方式的認證機制;在靈活性上,它們的目錄規模都可大可小,大到全球目錄樹,小到只有一臺目錄服務器;在分佈性方面,目錄信息都可以分佈在多個目錄服務器中,這些服務器可以由各組織管理,既保證了目錄信息總體結構一致性,又滿足了分級管理的需要。

  LDAP與X.500的DAP相同之處是,LDAP也是被設計用來從分層目錄中提取信息。但與之不同的是,爲保持網絡的帶寬,LDAP對來自X.500目錄詢問的應答次數加以限制。最初LDAP只是一種訪問X.500目錄的簡單方法,是X.500的功能子集,但隨着它的成熟和獨立發展,已經增加了許多在X.500中沒有的新特性。現在的LDAP既可以爲X.500目錄服務提供一個輕型前端,也可以實現一個獨立的目錄服務。

  LDAP的獨特之處

  首先,AP(Access Protocol)既是一個X.500的訪問協議,又是一個靈活的可以獨立實現的目錄系統。

  其次,DAP(Directory Access Protocol)基於Internet協議,X.500基於OSI(開放式系統互聯)協議:建立在應用層上的X.500 目錄訪問協議DAP,需要在OSI會話層和表示層上進行許多的建立連接和包處理的任務,需要特殊的網絡軟件實現對網絡的訪問;LDAP則直接運行在更簡單和更通用的TCP/IP或其它可靠的傳輸協議層上,避免了在OSI會話和表示層的開銷,使連接的建立和包的處理更簡單、更快,對於互聯網和企業網應用更理想。

  再者,LDAP協議更爲簡單:LDAP繼承了X.500最好的特性,同時去掉了它的複雜性。LDAP通過使用查找操作實現列表操作和讀操作,另一方面省去了X.500中深奧的和很少使用的服務控制和安全特性,只保留常用的特性,簡化了LDAP的實現。

  其它,LDAP通過引用機制實現分佈式訪問:X.500 DSA通過服務器之間的鏈操作實現分佈式的訪問,這樣查詢的壓力集中於服務器端;而LDAP通過客戶端API實現分佈式操作(對於應用透明)平衡了負載;

  最後,LDAP實現具有低費用、易配置和易管理的特點。經過性能測試,LDAP比X.500具有更少的響應時間;LDAP提供了滿足應用程序對目錄服務所需求的特性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章