一. LDAP介紹
1. LDAP能做什么
大多數(shù)的LDAP服務器都為讀密集型的操作進行專門的優(yōu)化。因此,當從LDAP服務器中讀取數(shù)據(jù)的時候會比從專門為OLTP優(yōu)化的關系型數(shù)據(jù)庫中讀取數(shù)據(jù)快一個數(shù)量級。也是因為專門為讀的性能進行優(yōu)化,大多數(shù)的LDAP目錄服務器并不適合存儲需要需要經常改變的數(shù)據(jù)。它主要面向數(shù)據(jù)的查詢服務(查詢和修改操作比一般是大于10:1),不提供事務的回滾(rollback)機制,它的數(shù)據(jù)修改使用簡單的鎖定機制實現(xiàn)All-or-Nothing,它的目標是快速響應和大容量查詢并且提供多目錄服務器的信息復制功能。例如,用LDAP服務器來存儲電話號碼是一個很好的選擇,但是它不能作為電子商務站點的數(shù)據(jù)庫服務器。如果下面每一個問題的答案都是“是”,那么把數(shù)據(jù)存在LDAP中就是一個好主意。?
1.?需要在任何平臺上都能讀取數(shù)據(jù)嗎??
2.每一個單獨的記錄項是不是每一天都只有很少的改變?? l?可以把數(shù)據(jù)存在平面數(shù)據(jù)庫(flat?database)而不是關系型數(shù)據(jù)庫中嗎?換句話來說,也就是不管什么范式不范式的,把所有東西都存在一個記錄中(差不多只要滿足第一范式)。?
最后一個問題可能會唬住一些人,其實用平面數(shù)據(jù)庫去存儲一些關系型的數(shù)據(jù)也是很一般的。例如,一條公司員工的記錄就可以包含經理的登錄名。用LDAP來存儲這類信息是很方便的。一個簡單的判斷方法:如果可以把保數(shù)據(jù)存在一張張的卡片里,就可以很容易地把它存在LDAP目錄里。
2. LDAP具有安全和訪問控制?
?
LDAP提供很復雜的不同層次的訪問控制或者ACI。因這些訪問可以在服務器端控制,這比用客戶端的軟件保證數(shù)據(jù)的安全可安全多了。用LDAP的ACI,可以完成:?
l?給予用戶改變他們自己的電話號碼和家庭地址的權限,但是限制他們對其它數(shù)據(jù)(如,職務名稱,經理的登錄名,等等)只有“只讀”權限。?
l?給予“HR-admins"組中的所有人權限以改變下面這些用戶的信息:經理、工作名稱、員工號、部門名稱和部門號。但是對其它域沒有寫權限。?
l?禁止任何人查詢LDAP服務器上的用戶口令,但是可以允許用戶改變他或她自己的口令。?
l?給予經理訪問他們上級的家庭電話的只讀權限,但是禁止其他人有這個權限。?
l?給予“host-admins"組中的任何人創(chuàng)建、刪除和編輯所有保存在LDAP服務器中的與計算機主機有關的信息?
l?通過Web,允許“foobar-sales"組中的成員有選擇地給予或禁止他們自己讀取一部分客戶聯(lián)系數(shù)據(jù)的讀權限。這將允許他們把客戶聯(lián)系信息下載到本地的筆記本電腦或個人數(shù)字助理(PDA)上。(如果銷售人員的軟件都支持LDAP,這將非常有用)?
l?通過Web,允許組的所有者刪除或添加他們擁有的組的成員。例如:可以允許銷售經理給予或禁止銷售人員改變Web
頁的權限。也可以允許郵件假名(mail?aliase)的所有者不經過IT技術人員就直接從郵件假名中刪除或添加用戶。 “公用”的郵件列表應該允許用戶從郵件假名中添加或刪除自己(但是只能是自己)。也可以對IP地址或主機名加以限制。例如,某些域只允許用戶IP地址以192.168.200.*開頭的有讀的權限,或者用戶反向查找DNS得到的主機名必須為*.foobar.com。
?
3. 目錄服務系統(tǒng)的組成
目錄服務系統(tǒng)一般由兩部分組成:第一部分是數(shù)據(jù)庫,一種分布式的數(shù)據(jù)庫,且擁有一個描述數(shù)據(jù)的規(guī)劃;第二部分則是訪問和處理數(shù)據(jù)庫有關的詳細的訪問協(xié)議。
目錄服務與關系型數(shù)據(jù)庫不同的是,目錄不支持批量更新所需要的事務處理功能,目錄一般只執(zhí)行簡單的更新操作,適合于進行大量數(shù)據(jù)的檢索;目錄具有廣泛復制信息的能力,從而在縮短響應時間的同時,提高了可用性和可靠性。目前,目錄服務技術的國際標準有兩個,即較早的X.500標準和近年迅速發(fā)展的LDAP標準。
?
1.X.500是一個協(xié)議族
X.500實際上不是一個協(xié)議,它是由一個協(xié)議族組成:X.501模型強調目錄服務基本模型和概念;X.509認證框架是如何在 X.500中處理目錄客戶和服務器的認證;X.511 抽象服務定義X.500被要求提供的功能性服務;X.518 分布式操作過程表明如何跨越多臺服務器處理目錄服務;X.519 協(xié)議規(guī)范即是X.500協(xié)議,包括目錄訪問協(xié)議DAP、目錄系統(tǒng)協(xié)議DSP、目錄操作綁定協(xié)議DOP和目錄信息Shadowing協(xié)議DISP; X.520 選定的屬性類型要求是X.500自己使用的屬性類型;X.521選定的對象類即為X.500自己使用的對象類;X.525復制是如何在目錄服務器之間復制目錄內容。
在這些X.500標準中主要定義有多種內容。一個信息模型:確定目錄中信息的格式和字符集,如何在項中表示目錄信息(定義對象類、屬性等模式);一個命名空間:確定對信息進行的組織和引用,如何組織和命名項——目錄信息樹DIT和層次命名模型;一個功能模型:確定可以在信息上執(zhí)行的操作;一個認證框架:保證目錄中信息的安全,如何實現(xiàn)目錄中信息的授權保護——訪問控制模型;一個分布操作模型:確定數(shù)據(jù)如何進行分布和如何對分布數(shù)據(jù)執(zhí)行操作,如何將全局目錄樹劃分為管理域進行管理——目錄管理模型,客戶端與服務器通信的協(xié)議—目錄訪問協(xié)議DAP,將用戶請求在服務器之間進行鏈接所需的目錄系統(tǒng)協(xié)議DSP,將選定的信息在服務器之間進行復制所需的目錄信息映像協(xié)議DISP,用于自動在服務器之間協(xié)商連接配置的目錄操作綁定協(xié)議DOP。
X.500雖然是一個完整的目錄服務協(xié)議,但在實際應用的過程中,卻存在著不少障礙。由于目錄訪問協(xié)議DAP這種應用層協(xié)議是嚴格遵照復雜的ISO七層協(xié)議模型制定的,對相關層協(xié)議環(huán)境要求過多,主要運行在UNIX機器上,在許多小系統(tǒng)上,如PC和Macintosh上無法使用,因此沒有多少人按照DAP開發(fā)應用程序,TCP/IP協(xié)議體系的普及,更使得這種協(xié)議越來越不適應需要。
?
2.LDAP目錄訪問標準
LDAP協(xié)議從1993年批準,產生了LDAP V1版本,隨后于1997年發(fā)布了第三個版本LDAP V3,它的出現(xiàn)是LDAP協(xié)議發(fā)展的一個里程碑性標志,它使LDAP協(xié)議不僅僅作為X.500的簡化版,同時提供了LDAP協(xié)議許多自有的特性,使 LDAP協(xié)議功能更為完備,具有了更大的生命力。
LDAP V3協(xié)議也不是一個協(xié)議,而是一個協(xié)議族。RFC 2251——LDAP V3核心協(xié)議,定義了LDAP V3協(xié)議的基本模型和基本操作;RFC 2252——定義了LDAP V3中的基本數(shù)據(jù)模式(Schema)(包括語法、匹配規(guī)則、屬性類型和對象類)以及標準的系統(tǒng)數(shù)據(jù)模式;RFC 2253——定義了LDAP V3中的分辨名(DN)表達方式;RFC 2254——定義了LDAP V3中的過濾器的表達方式;RFC 2255——LDAP統(tǒng)一資源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定義了LDAP V3中的認證方式;RFC 2830——定義了如何通過擴展使用TLS服務;RFC 1823——定義了C的LDAP客戶端API開發(fā)接口;RFC 2847——定義了LDAP數(shù)據(jù)導入、導出文件接口LDIF。
在這些協(xié)議中,主要定義了LDAP的內容,同時主要定義了一個信息模型:確定LDAP目錄中信息的格式和字符集,如何表示目錄信息 (定義對象類、屬性、匹配規(guī)則和語法等模式);一個命名空間:確定對信息進行的組織方式——目錄信息樹DIT,以DN和RDN為基礎的命名方式,以及 LDAP信息的Internet表示方式;一個功能模型:確定可以在信息上執(zhí)行的操作的通訊協(xié)議以及在客戶端進行這些操作的API接口;一個安全框架:保證目錄中信息的安全,匿名、用戶名/密碼、SASL等多種認證方式,以及與TLS結合的通訊保護框架;一個分布式操作模型:基于Referral方式的分布式操作框架;一個LDAP擴展框架:基于控制和擴展操作的LDAP擴展框架 。
但在LDAP協(xié)議中尚未定義通用的訪問控制模型和復制協(xié)議(對應X.500的映射協(xié)議DISP),盡管不同的LDAP廠商均實現(xiàn)了自己的控制模型和復制機制,但是LDAP標準的發(fā)展正集中在訪問控制模型、復制協(xié)議(DUP)以及擴展操作上,這些擴展操作包括查詢的分頁和排序、語言標簽、動態(tài)目錄、LDAP服務發(fā)現(xiàn)等。
?
4. X.500與LDAP的比較分析
從目錄服務技術的發(fā)展來看,LDAP標準實際上是在X.500標準基礎上產生的一個簡化版本,兩者之間的關系與那種為解決同一個問題出現(xiàn)的兩個獨立發(fā)展的技術有很大的不同之處,因此需要在此基礎上對這兩個標準進行理解和分析。
首先,作為IETF(Internet Engineering Task Force)一個正式的標準,LDAP是X.500標準中的目錄訪問協(xié)議DAP的一個子集,可用于建立X.500目錄。因此這兩個目錄服務技術標準有著許多的共同之處,即在平臺上,都實現(xiàn)了一個通用的平臺結構,提供了一個操作系統(tǒng)和應用程序需要的信息服務類型,可以被許多平臺和應用程序接收和實現(xiàn);在信息模型上,都使用了項、對象類、屬性等概念和模式來描述信息;在命名空間方面,都使用了目錄信息樹結構和層次命名模型;在功能模型上,都使用了相似的操作命令來管理目錄信息;在認證框架方面,都可以實現(xiàn)用戶名稱和密碼,或者基于安全加密方式的認證機制;在靈活性上,它們的目錄規(guī)模都可大可小,大到全球目錄樹,小到只有一臺目錄服務器;在分布性方面,目錄信息都可以分布在多個目錄服務器中,這些服務器可以由各組織管理,既保證了目錄信息總體結構一致性,又滿足了分級管理的需要。
LDAP與X.500的DAP相同之處是,LDAP也是被設計用來從分層目錄中提取信息。但與之不同的是,為保持網絡的帶寬, LDAP對來自X.500目錄詢問的應答次數(shù)加以限制。最初LDAP只是一種訪問X.500目錄的簡單方法,是X.500的功能子集,但隨著它的成熟和獨立發(fā)展,已經增加了許多在X.500中沒有的新特性。現(xiàn)在的LDAP既可以為X.500目錄服務提供一個輕型前端,也可以實現(xiàn)一個獨立的目錄服務。
LDAP的獨特之處
首先,AP(Access Protocol)既是一個X.500的訪問協(xié)議,又是一個靈活的可以獨立實現(xiàn)的目錄系統(tǒng)。
其次,DAP(Directory Access Protocol)基于Internet協(xié)議,X.500基于OSI(開放式系統(tǒng)互聯(lián))協(xié)議:建立在應用層上的X.500 目錄訪問協(xié)議DAP,需要在OSI會話層和表示層上進行許多的建立連接和包處理的任務,需要特殊的網絡軟件實現(xiàn)對網絡的訪問;LDAP則直接運行在更簡單和更通用的TCP/IP或其它可靠的傳輸協(xié)議層上,避免了在OSI會話和表示層的開銷,使連接的建立和包的處理更簡單、更快,對于互聯(lián)網和企業(yè)網應用更理想。
再者,LDAP協(xié)議更為簡單:LDAP繼承了X.500最好的特性,同時去掉了它的復雜性。LDAP通過使用查找操作實現(xiàn)列表操作和讀操作,另一方面省去了X.500中深奧的和很少使用的服務控制和安全特性,只保留常用的特性,簡化了LDAP的實現(xiàn)。
其它,LDAP通過引用機制實現(xiàn)分布式訪問:X.500 DSA通過服務器之間的鏈操作實現(xiàn)分布式的訪問,這樣查詢的壓力集中于服務器端;而LDAP通過客戶端API實現(xiàn)分布式操作(對于應用透明)平衡了負載;
最后,LDAP實現(xiàn)具有低費用、易配置和易管理的特點。經過性能測試,LDAP比X.500具有更少的響應時間;LDAP提供了滿足應用程序對目錄服務所需求的特性。
(http://www.fanqiang.com)
5. LDAP四種基本模型
1.信息模型:描述LDAP的信息表示方式
在LDAP中信息以樹狀方式組織,在樹狀信息中的基本數(shù)據(jù)單元是條目,而每個條目由屬性構成,屬性中存儲有屬性值;LDAP中的信息模式,類似于面向對象的概念,在LDAP中每個條目必須屬于某個或多個對象類(Object Class),每個Object Class由多個屬性類型組成,每個屬性類型有所對應的語法和匹配規(guī)則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創(chuàng)建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP中一個屬性類型可以對應多個值。
在LDAP中把對象類、屬性類型、語法和匹配規(guī)則統(tǒng)稱為Schema,在LDAP中有許多系統(tǒng)對象類、屬性類型、語法和匹配規(guī)則,這些系統(tǒng)Schema在LDAP標準中進行了規(guī)定,同時不同的應用領域也定義了自己的Schema,同時用戶在應用時,也可以根據(jù)需要自定義 Schema。這有些類似于XML,除了XML標準中的XML定義外,每個行業(yè)都有自己標準的DTD或DOM定義,用戶也可以自擴展;也如同XML,在 LDAP中也鼓勵用戶盡量使用標準的Schema,以增強信息的互聯(lián)互通。
在Schema中最難理解的是匹配規(guī)則,這是LDAP中為了加快查詢的速度,針對不同的數(shù)據(jù)類型,可以提供不同的匹配方法,如針對字符串類型的相等、模糊、大于小于均提供自己的匹配規(guī)則。
2.命名模型:描述LDAP中的數(shù)據(jù)如何組織
LDAP中的命名模型,也即LDAP中的條目定位方式。在LDAP中每個條目均有自己的DN和RDN。DN是該條目在整個樹中的唯一名稱標識,RDN是條目在父節(jié)點下的唯一名稱標識,如同文件系統(tǒng)中,帶路徑的文件名就是DN,文件名就是RDN。
3.功能模型:描述LDAP中的數(shù)據(jù)操作訪問
?
在LDAP中共有四類10種操作:查詢類操作,如搜索、比較;更新類操作,如添加條目、刪除條目、修改條目、修改條目名;認證類操作,如綁定、解綁定;其它操作,如放棄和擴展操作。除了擴展操作,另外9種是LDAP的標準操作;擴展操作是LDAP中為了增加新的功能,提供的一種標準的擴展框架,當前已經成為LDAP標準的擴展操作,有修改密碼和StartTLS擴展,在新的RFC標準和草案中正在增加一些新的擴展操作,不同的 LDAP廠商也均定義了自己的擴展操作。
?
4.安全模型:描述LDAP中的安全機制
LDAP中的安全模型主要通過身份認證、安全通道和訪問控制來實現(xiàn)。
身份認證 在LDAP中提供三種認證機制,即匿名、基本認證和SASL(Simple Authentication and Secure Layer)認證。匿名認證即不對用戶進行認證,該方法僅對完全公開的方式適用;基本認證均是通過用戶名和密碼進行身份識別,又分為簡單密碼和摘要密碼認證;SASL認證即LDAP提供的在SSL和TLS安全通道基礎上進行的身份認證,包括數(shù)字證書的認證。
通訊安全在LDAP中提供了基于SSL/TLS的通訊安全保障。SSL/TLS是基于PKI信息安全技術,是目前Internet上廣泛采用的安全服務。LDAP 通過StartTLS方式啟動TLS服務,可以提供通訊中的數(shù)據(jù)保密性、完整性保護;通過強制客戶端證書認證的TLS服務,同時可以實現(xiàn)對客戶端身份和服務器端身份的雙向驗證。
訪問控制雖然LDAP目前并無訪問控制的標準,但從一些草案中或是事實上LDAP產品的訪問控制情況,我們不難看出:LDAP訪問控制異常的靈活和豐富,在 LDAP中是基于訪問控制策略語句來實現(xiàn)訪問控制的,這不同于現(xiàn)有的關系型數(shù)據(jù)庫系統(tǒng)和應用系統(tǒng),它是通過基于訪問控制列表來實現(xiàn)的,無論是基于組模式或角色模式,都擺脫不了這種限制。
在使用關系型數(shù)據(jù)庫系統(tǒng)開發(fā)應用時,往往是通過幾個固定的數(shù)據(jù)庫用戶名訪問數(shù)據(jù)庫。對于應用系統(tǒng)本身的訪問控制,通常是需要建立專門的用戶表,在應用系統(tǒng)內開發(fā)針對不同用戶的訪問控制授權代碼,這樣一旦訪問控制策略變更時,往往需要代碼進行變更。總之一句話,關系型數(shù)據(jù)庫的應用中用戶數(shù)據(jù)管理和數(shù)據(jù)庫訪問標識是分離的,復雜的數(shù)據(jù)訪問控制需要通過應用來實現(xiàn)。
而對于LDAP,用戶數(shù)據(jù)管理和訪問標識是一體的,應用不需要關心訪問控制的實現(xiàn)。這是由于在LDAP中的訪問控制語句是基于策略語句來實現(xiàn)的,無論是訪問控制的數(shù)據(jù)對象,還是訪問控制的主體對象,均是與這些對象在樹中的位置和對象本身的數(shù)據(jù)特征相關。
在LDAP中,可以把整個目錄、目錄的子樹、制定條目、特定條目屬性集或符合某過濾條件的條目作為控制對象進行授權;可以把特定用戶、屬于特定組或所有目錄用戶作為授權主體進行授權;最后,還可以定義對特定位置(例如IP地址或DNS名稱)的訪問權。
?
6. LDAP的應用
由于LDAP所具有的查詢效率高、樹狀的信息管理模式、分布式的部署框架以及靈活而細膩的訪問控制,使LDAP廣泛地應用于基礎性、關鍵性信息的管理,如用戶信息、網絡資源信息等。LDAP的應用主要涉及幾種類型。信息安全類:數(shù)字證書管理、授權管理、單點登錄;科學計算類:DCE (Distributed Computing Envirionment,分布式計算環(huán)境)、UDDI (Universal Description,Discovery and Integration, 統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議);網絡資源管理類:MAIL系統(tǒng)、DNS系統(tǒng)、網絡用戶管理、電話號碼簿;電子政務資源管理類:內網組織信息服務、電子政務目錄體系、人口基礎庫、法人基礎庫。
目前,LDAP已應用在北京大學校園網絡用戶管理系統(tǒng)、Novell的eProvision應用解決方案、上海公務網統(tǒng)一用戶管理、中國數(shù)字圖書館系統(tǒng)的用戶管理部分,以及北京、上海、天津、福建等省級CA等。
某市公務網中的LDAP應用案例:在該市公務網中具有三個LDAP服務器,一個LDAP服務器為公務網項目中CA的主,一個LDAP 服務器為公務網項目中CA的從,第三個目錄服務器存儲有上海公務網中的所有用戶信息。在該系統(tǒng)中建立了一個基于Web方式的用戶管理系統(tǒng),各個局維護自己的數(shù)據(jù),CA系統(tǒng)中的用戶信息以及辦公自動化系統(tǒng)、電子郵件系統(tǒng)、授權管理系統(tǒng)、共享資源管理系統(tǒng),通過RMI接口實現(xiàn)與用戶組織樹目錄服務系統(tǒng)中信息的同步。