1. 程式人生 > 其它 >LDAP基礎內容介紹

LDAP基礎內容介紹

技術標籤:ITldap分散式儲存

文章目錄


前言

對於公司中有多個IT系統,每個系統都需要賬號密碼時,工作起來就是很麻煩的問題。應用使用者統一身份認證就可以很好的解決這個問題,使用LDAP就是目前一個很好的處理辦法。

一、LDAP基礎概念

什麼是LDAP?

LDAP(Light Directory Access Portocol) 是基於TCP/IP協議的輕量目錄訪問協議,是Internet上目錄服務的通用訪問協議。LDAP的出現簡化了X.500目錄的複雜度,降低了開發成本,是X.500標準的目錄訪問協議DAP的子集,同時也作為IETF的一個正式標準。LDAP的核心規範在RFC中都有定義,所有與LDAP相關的RFC都可以在LDAPman RFC網頁中找到。與LDAP一樣提供類似的目錄服務軟體還有ApacheDS、Active Directory、Red Hat Directory Service 。


什麼是目錄服務?

從上文中可以看出,LDAP其實是一種目錄服務。那目錄是什麼呢?目錄服務又是什麼呢?

  • 目錄
    是一個為查詢、瀏覽和搜尋而優化的專業分散式資料庫,它呈樹狀結構組織資料,就好象Linux/Unix系統中的檔案目錄一樣。可以用來儲存描述性的、基於屬性的詳細資訊,支援過濾功能。目錄資料庫和關係資料庫不同,它有優異的讀效能,但寫效能差,並且沒有事務處理、回滾等複雜功能,不適於儲存修改頻繁的資料。目錄通常只提供一些基本的資料更新操作,而且更新通常都是指全量更新。
  • 目錄服務
    目錄服務是由目錄資料庫一套訪問協議組成的系統。 是動態的,靈活的,易擴充套件的。類似以下的資訊適合儲存在目錄中:
    • 企業員工資訊,如姓名、電話、郵箱等;
    • 公用證書和安全金鑰;
    • 公司的物理裝置資訊,如伺服器,它的IP地址、存放位置、廠商、購買時間等;

LDAP特點

LDAP是開放的Internet標準,支援跨平臺的Internet協議,在業界中得到廣泛認可的,並且市場上或者開源社群上的大多產品都加入了對LDAP的支援,因此對於這類系統,不需單獨定製,只需要通過LDAP做簡單的配置就可以與伺服器做認證互動。“簡單粗暴”,可以大大降低重複開發和對接的成本。

  • LDAP的結構用樹來表示,而不是用表格。正因為這樣,就不能用SQL語句了
  • LDAP可以很快地得到查詢結果,不過在寫方面,就慢得多
  • LDAP提供了靜態資料的快速查詢方式 Client/server模型,Server 用於儲存資料,Client提供操作目錄資訊樹的工具這些工具可以將資料庫的內容以文字格式(LDAP 資料交換格式,LDIF)呈現在您的面前
  • LDAP伺服器可以用“推”或“拉”的方法複製部分或全部資料
  • LDAP允許你根據需要使用ACI(一般都稱為ACL或者訪問控制列表)控制對資料讀和寫的許可權。

二、LDAP基本模型

每一個系統、協議都會有屬於自己的模型,LDAP也不例外,在瞭解LDAP的基本模型之前我們需要先了解幾個LDAP的目錄樹概念:

目錄樹概念

  1. 目錄樹:在一個目錄服務系統中,整個目錄資訊集可以表示為一個目錄資訊樹,樹中的每個節點是一個條目。

  2. 條目(Entry):每個條目就是一條記錄項,每個條目有自己的唯一可區別的名稱(Distinguished Name ,DN)。
    dn:每一個條目都有一個唯一的標識名(distinguished Name ,DN),通過DN的層次型語法結構,可以方便地表示出條目在LDAP樹中的位置,通常用於檢索。

在LDAP中每個條目均有自己的DN和RDN。DN是該條目在整個樹中的唯一名稱標識,RDN是條目在父節點下的唯一名稱標識,如同檔案系統中,帶路徑的檔名就是DN,檔名就是RDN

  1. 屬性(Attribute):描述條目的某個方面的資訊,每個條目都可以有很多屬性。一個屬性由一個屬性型別和一個或多個屬性值組成,屬性有必須屬性和非必須屬性。
  2. 物件類:與某個實體型別對應的一組屬性,物件類是可以繼承的,這樣父類的必須屬性也會被繼承下來。

DC、UID、OU、CN、SN、DN、RDN

關鍵字屬性全稱含義
dnDistinguished Name“uid=songtao.xu,ou=oa組,dc=example,dc=com”,一條記錄的位置(唯一)
rdnRelative dn相對辨別名,類似於檔案系統中的相對路徑,它是與目錄樹結構無關的部分,如“uid=tom”或“cn= Thomas Johansson”
dcDomain Component域名的部分,其格式是將完整的域名分成幾部分,如域名為example.com變成dc=example,dc=com(一條記錄的所屬位置)
ouOrganization Unit組織單位,組織單位可以包含其他各種物件(包括其他組織單元),如“oa組”(一條記錄的所屬組織)
cnCommon Name公共名稱,如“Thomas Johansson”(一條記錄的名稱)
uidUser Id使用者ID songtao.xu(一條記錄的ID)
snSurname姓,如“許”

總結一下LDAP樹形資料庫如下:

1. dn :一條記錄的詳細位置 dc :一條記錄所屬區域(哪一顆樹)
2. ou :一條記錄所屬組織(哪一個分支)
3. cn/uid:一條記錄的名字/ID(哪一個果實)
4. LDAP目錄樹的最頂部就是根,也就是所謂的“基準DN"。

LDAP四種基本模型

模型描述
資訊模型在LDAP中資訊以樹樁方式組織,在樹狀資訊中的基本資料單元是條目,而每個條目由屬性構成,屬性中儲存有屬性值
命名模型定義瞭如何在目錄系統中組織資料以及如何從目錄系統中查詢資料
功能模型描述了LDAP 協議可以採用的相關操作(四類10種:查詢類/更新類/認證類/放棄和擴充套件類),來訪問儲存在目錄樹中的資料
安全模型提供一個框架,保護目錄中的資訊不被非法訪問,主要通過 身份認證、安全通道訪問控制來實現
  • 資訊模型主要包括三部分:條目Entries,屬性Attributes和屬性值Values。
  • 對於安全模型的三種實現方法:
表現方法描述
身份認證在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中是基於訪問控制策略語句來實現訪問控制的,這不同於現有的關係型資料庫系統和應用系統,它是通過基於訪問控制列表來實現的,無論是基於組模式或 角色模式,都擺脫不了這種限制。