成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

LDAP模式設計

LDAP 手冊入門 ,1. LDAP 概念與概覽如果你已經(jīng)知道了LDAP 是什么,它有什么好處,并且也知道了Schemas, objectClasses, 以及所有諸如此

LDAP 手冊

入門

,

1. LDAP 概念與概覽

如果你已經(jīng)知道了LDAP 是什么,它有什么好處,并且也知道了Schemas, objectClasses, 以及所有諸如此類的概念——那就可以跳過本章。但是如果你不想盲目按照“HOWTOs 這樣的指南”去做事情,那么你必須理解本章材料中的絕大數(shù)內容。

LDAP 和X.500在術語上淵源頗深。一些術語很重要,另一些術語則無足輕重。為了便于記憶,我們創(chuàng)建了一個詞匯表,我們所介紹的術語要么很重,要么它們在各類文檔中經(jīng)常出現(xiàn)。

LDAP 中大小寫敏感問題的簡單說明:這個問題很混亂,- 是的,我們發(fā)現(xiàn)這事確實很混亂。事實告訴我們這方面存在很多混亂的認識。在LDAP 中,只有密碼(passwords )和某些受限于匹配規(guī)則(matchingRule )的特定屬性(極其少見)要求區(qū)分大小寫。在本文和其他文檔中你會看到 objectclasses 或objectClasses 甚至ObjectClasses 這樣的詞匯,但它們都能工作。你有足夠的理由擔心大小寫的問題,如果真的存在大小寫敏感的問題,那在開始學習LDAP 的六年時間中(開個玩笑,只需要四年)每次按下鍵盤時都會出一身汗,生怕輸錯某些東西的名稱。

,

1.1 LDPA簡史(A Brief Historyof LDAP)

曾經(jīng),在模糊和久遠的過去(上世紀70年代末到80年代初),ITU (國際電信聯(lián)盟- International Telecommunication Union)開始了X.400系列的email 郵件標準的制定工作。Email 標準需要一個名稱(names ,以及其他信息)的目錄,這個目錄可以通過網(wǎng)絡以一種層級(hierarchical fashion )的方式進行訪問,這種方式與所熟悉的DNS 架構有所不同。

這種基于全球網(wǎng)絡的目錄需求導致ITU 開發(fā)X.500系列標準,以及尤為特別的X.519標準,這個標準定義了DAP (目錄訪問協(xié)議Directory Access Protocol),該協(xié)議用于訪問網(wǎng)絡目錄服務。

X.400 和X.500系列標準被打包在整個OSI 中,非常龐大、臃腫并嚴重消耗資源,這就是ITU 標準的現(xiàn)實。

時間很快到了上世紀90年代初期,IETF 看到了訪問全球目錄服務的需求(最初也是和ITU 制定email 標準需要目錄服務一樣的原因),但是沒有全部采用讓人感覺頭大的OSI 協(xié)議,而是開啟輕量級目錄服務訪問協(xié)議(LDAP )的制定工作。LDAP 被設計為提供與X.519標準一樣的功能,但使用TCP/IP協(xié)議——同時仍然允許與基于X.500協(xié)議的目錄進行交互工作(inter-working )。實際上,與X.500 (DAP)的交互工作(inter-working )和映射(Maping )一直是IETF LDAP RFCs系列標準的組成部分。

注: IETF 國際互聯(lián)網(wǎng)工程任務組(The Internet Engineering Task Force,簡稱IETF )

在LDAP 規(guī)范中,很多非常糾結的問題主來自于目錄根 (directory root )的命名規(guī)約,這個問題可以追溯到X.500的交互工作以及全球目錄的需求。

,

LDAP –大體上–與DPA 的不同之處如下:

1. TCP/IP用于LDAP-DAP 使用OSI 作為傳輸/網(wǎng)絡層協(xié)議。

2. 在功能上的一些縮減 – 在X.519中一些模糊的、重復的和很少使用的功能被以安靜

(quietly )和仁慈(mercifully )的方式刪除。

,

3. 在LDAP 中用文本表達方式(用于LDAP URLs和查找過濾器)替換了部分ASN.1(X.519)的表達方式。對于這一點,IETF 受到了很多贊揚,但遺憾的是,很多ASN.1標記仍然被保留。

1.2 LDAP 概述(Overview )

技術上講,LDAP 只是一個定義目錄數(shù)據(jù)訪問方法的協(xié)議。必然地,LDAP 就需要定義和描述目錄服務中數(shù)據(jù)如何表達(數(shù)據(jù)(信息)模型)。最后,它還需要定義目錄服務如何加載(導入)和備份(導出)數(shù)據(jù)(使用LDIF )。LDAP 沒有定義如何存儲和操作數(shù)據(jù)。數(shù)據(jù)的存儲和訪問方法是盡可能標準化的自動處理過程,并且通常由所有特定LDAP 實現(xiàn)的后臺模塊(通常會使用某種形式的事務數(shù)據(jù)庫)處理。

LDAP 定義了4個模型,下面將會有簡短描述——你可以很快就忘了這些模型,因為它們對理解LDAP 沒有太多幫助。

1. 信息模型(Information Model):我們更傾向于使用術語數(shù)據(jù)模型,我們的觀點是數(shù)據(jù)模型這個術語更加直觀和易于理解。數(shù)據(jù)(或信息)模型定義如何在LDAP 系統(tǒng)中表達信息或數(shù)據(jù)。它也可能包括數(shù)據(jù)的實際存儲方法,但這個問題已經(jīng)超出了上述LDAP 標準的范圍。

2. 命名模型(Naming Model):命名模型定義所有諸如 'dc=example,dc=com'這樣你在LDAP 系統(tǒng)中偶然發(fā)現(xiàn)的名稱. 這里,我們特別堅持的命名規(guī)范,因為這些術語被廣泛使用。

3. 功能模型(Functional Model):當你在讀取、查找、寫或者修改LDAP ,那么你就在使用功能模型。

4. 安全模型(Security Model): 你能夠以合適的粒度來控制誰能對哪些數(shù)據(jù)做什么。這是一件復雜且強大的事情. 我們將以循序漸進的方式來引入相關的概念并有專門的一章來闡述它。在開始的時候——請先忘記安全。

LDAP 標準的范圍如下圖所示,紅色(1,2,3,4)表示東西是在協(xié)議中定義范圍之內(定義LDAP 的各個RFC )。而在黑色框(或者綠色,黃色和紫色框)和連接到Databases 的黑色線是“天然存在的(automagical )”,并且不在標準的范圍之內。

,

這里先簡短介紹一下每個組件,后續(xù)章節(jié)中會有詳細的闡述,而這里首先介紹4個要點:

1. LDAP 沒有定義數(shù)據(jù)如何被存儲,只是定義數(shù)據(jù)如何被訪問。但是大多數(shù)LDAP 實現(xiàn)使用一個標準的數(shù)據(jù)庫作為后端,而OpenLDAP 這樣的LDAP 實現(xiàn)還提供了選擇后端數(shù)據(jù)庫支持。

2. 當你與LDAP 服務器進行對話時,你不知道數(shù)據(jù)來自哪里:其實關于標準的整點(whole point )就是隱藏這種細節(jié)。在理論上,數(shù)據(jù)可以來自于一個或者多個本地數(shù)據(jù)庫,也可能來自于一個或者多個X.500服務(盡管這種情況近來越來越罕見)。在哪以及如何訪問數(shù)據(jù)是實現(xiàn)細節(jié),而且只有在定義LDAP 服務器配置選項時這些問題才顯得重要。

3. 記住兩個概念——訪問LDAP 服務和運轉LDAP 服務——在頭腦中要將兩個概念清晰地分開。當你設計基于目錄的系統(tǒng)時,要明確你想要目錄做什么(數(shù)據(jù)的組織)并忘記如何實現(xiàn)。然后在第二階段才會明確數(shù)據(jù)在哪,以及在什么地方存儲這些數(shù)據(jù)——LDAP 配置過程。

4. 很多商業(yè)數(shù)據(jù)庫產(chǎn)品提供了關系型或其他數(shù)據(jù)庫類型的LDAP 視圖(一種LDAP 的包裝或抽象)。

1.3 LDAP 與Database 的比較

LDAP 服務的特點是“一次寫入,多次讀取”。也就是說,在LDAP 服務中存儲的數(shù)據(jù)通常不希望每次訪問時都被更改。為了說明這一點:LDAP 不適合維護銀行交易記錄,因為,從業(yè)務本質上看,這些交易記錄幾乎每次訪問都會被更改。但LDAP 非常適合維護銀行分支機構,開業(yè)時間,員工等這樣的數(shù)據(jù)。這些數(shù)據(jù)很少變化。

,

讀優(yōu)化

我們還沒有弄清楚在“一次寫入,多次讀取”這個短句中,什么情況才算多次?

使用LDAP 還是使用經(jīng)典的面向事務的關系型數(shù)據(jù)庫,比如SQLite,MYSQL ,PostGreSQL 的界線是什么呢?如果我們每個瞬間的訪問都進行了更新操作,這是一個合理的LDAP 應用嗎?還是說每1000或者100萬次訪問才進行一次更新才是合理的LDAP 應用?

關于這話題,上面的文字論述略顯單薄,并且主要是為了引起讀者的重視,像地址本這樣的LDAP 應用也會變更數(shù)據(jù),也許,會經(jīng)常變化。

這個問題沒有簡單的答案,下面的觀點可能會有用:

1. 寫數(shù)據(jù)時的性能問題取決于對索引的更新。索引(為了更快的讀)設置的越多,就希望目錄被更新的時候越少?!白x:寫”至少是1000:1,對于重度讀取優(yōu)化的LDAP 目錄,這一比率還會更高。

2. 在每次更新的時候,LDAP 的復制將會產(chǎn)生倍增的事務,因此你要使實際更新的負荷降至最低(1000:1或者更高)。

3. 如果一次要更新的數(shù)據(jù)量很龐大(比方說大于100,000條),盡管索引設置的數(shù)量很少,也會導致嚴重的性能問題,因此你應盡可能地減少這種更新(10,000:1)。

4. 如果數(shù)據(jù)量相對較少(比方使用說小于1000條),索引數(shù)量適中,而且也沒有使用目錄復制(replication ),我們看不出有哪些足夠的理由不使用LDAP ,這種情況下,對LDAP 的使用非常接近一個基于事務的系統(tǒng),也就是說,每5-10次讀訪問伴隨一個“寫閉環(huán)(write cycle)”(LDAP 中對更新(modify)的專門術語)。

5. 我們對這個問題的確定性的答案表示懷疑:讀寫比率是42!

數(shù)據(jù)結構的可見性

支持LDAP 的目錄系統(tǒng)使用基本元素(Primitives :LDAP協(xié)議中的元素) 來訪問數(shù)據(jù)目錄,基本元素使用一種通用的數(shù)據(jù)模型,這種數(shù)據(jù)模型來自對各種數(shù)據(jù)物理結構的抽象?;驹丶俣艘粋€對象的數(shù)據(jù)模型而不關心該對象的實際數(shù)據(jù)結構。實際上,LDAP 的簡單性也是來自于這個特性。特定的LDAP 實現(xiàn)將在其后端(back-end )功能中以一種完全“全能自動化(automagical )”的方式來完成LDAP 基本元素與數(shù)據(jù)的物理結構之間的映射。

與此形成鮮明的對照就是SQL ,在SQL 查詢中可用于詢問數(shù)據(jù)是否完整,以及表(table )或連接(joins )等數(shù)據(jù)結構的細節(jié)。

數(shù)據(jù)同步和復制

關系型和事務型數(shù)據(jù)庫針對寫/更新閉環(huán)過程中如何保證數(shù)據(jù)一致性做到了極致,它們采用類似事務,鎖,回滾以及其他的一些手段。對于這種類型的數(shù)據(jù)庫而言,這些需求非常重要而且必須滿足。這種極致的數(shù)據(jù)同步在數(shù)據(jù)向多個主機或服務復制時也得以延續(xù)和保證,因此,在任何時候,所有數(shù)據(jù)視圖都會保持一致。

在LDAP 主(master )服務器和LDAP 從(slave )服務器(或多主環(huán)境下的對等(peer )服務器)中的數(shù)據(jù)使用一種簡單的異步(asynchronous )數(shù)據(jù)復制處理。這種方式的副作用就是使主服務器和從服務器(或對等服務器)在數(shù)據(jù)復制閉環(huán)過程中失去了數(shù)據(jù)的同步性。在這個過程中(通常時間很短),對主服務器和從服務器的查詢可能會得到不同的結果。如

,

果這種差異會導致系統(tǒng)無法正常運作,那么LDAP 不適合這種應用。但是如果在財務部門的LDAP 服務器中看到了BOB Smith,而在銷售部門的另一臺LDAP 服務其中延遲了幾秒鐘才看到BOB Smith,又有什么打緊呢?其實,很多應用都可以歸于此類。

注意: 現(xiàn)代的LDAP 實現(xiàn),尤其是支持多主服務器(Multi-master )配置的LDAP 實現(xiàn),在復制更新方面變得日益精致。另外,高速通信網(wǎng)絡也使復制操作的速度得以很大提高,但這些只是縮短了兩個系統(tǒng)之間進行數(shù)據(jù)同步的時間窗口,并沒有消除LDAP 的數(shù)據(jù)同步行為——盡管大多數(shù)現(xiàn)代化的LDAP 實現(xiàn)已經(jīng)將數(shù)據(jù)同步的時間縮短為亞秒級(sub-second )。

1.3.1 LDAP用途總結

那么LDAP (目錄)的優(yōu)點是什么呢?而且為什么一個理性思考的人要用目錄呢?

在試圖回答這個問題之前,讓我們先消除性能方面的戰(zhàn)術性問題。通常,關系數(shù)據(jù)庫系統(tǒng)(RDBMS )的性能仍然顯著高于LDAP 實現(xiàn)。隨著第二代目錄服務器的發(fā)展,二者之間的性能差距顯著縮短,但關系型數(shù)據(jù)庫的性能仍然高于LDAP 。假如你只作同種類型的比較(量測網(wǎng)絡發(fā)起的交易),這種差異就會變得更加微不足道。當然,除非你每次操作都更新一個高度索引化的屬性——這種情況下,你會得到你想要(或不想要)的結果。

因此,我們?yōu)槭裁匆褂肔DAP ?這里我們列出了一些關鍵特性,這些特性值得付出更高代價。

1. LDAP 能夠以標準的方式訪問遠程及本地數(shù)據(jù)。因而就可能做到替換LDAP 的實現(xiàn)而不影響數(shù)據(jù)的外部訪問接口。關系型數(shù)據(jù)庫提供了標準的本地化數(shù)據(jù)訪問方法,比如SQL ,但是遠程數(shù)據(jù)訪問接口則不同數(shù)據(jù)庫產(chǎn)品各有不同。

2. 因為LDAP 使用了標準化的數(shù)據(jù)訪問方法,這樣客戶端和服務器可以有不同的供應商來源。在這一點上的擴展,LDAP 可以用于為面向事務的數(shù)據(jù)庫建立抽象的數(shù)據(jù)視圖,也就是說,出于運行用戶查詢的目的,允許用戶透明地(通過LDAP 查詢)變化后臺的事務型數(shù)據(jù)庫供應商。

3. LDAP 提供一種將數(shù)據(jù)移動到多個位置而不影響任何外部數(shù)據(jù)訪問的方法。通過使用“引用”這種方法,只需要改變配置參數(shù),LDAP 的數(shù)據(jù)可以被移動到其他的LDAP 服務器上。

4. LDAP 系統(tǒng)能夠以可選的方式配置為向一個或者多個應用復制數(shù)據(jù),而無需增加代碼或變更外部訪問的數(shù)據(jù)。

這些特性專門聚焦于LDAP 數(shù)據(jù)訪問標準化的內涵,而且沒有考慮讀寫比率,正如前面所提到的,讀寫比率依賴于所維護的操作型索引的數(shù)量。上面的這些特性暗示出不建議用LDAP 系統(tǒng)進行事務處理——盡管已有一些跡象表明有些LDAP 實現(xiàn)具備事務的能力。

1.4 LDAP數(shù)據(jù)(對象)模型

支持LDAP 的目錄系統(tǒng)使用一個數(shù)據(jù)模型來表示層級的數(shù)據(jù)對象。但這意味著LDAP 是一個面向對象的數(shù)據(jù)庫。正如上面所指出的那樣,LDAP 本身是一個協(xié)議,它只規(guī)定如何訪

,

問LDAP 服務,而沒有定義數(shù)據(jù)如何存儲——而是由操作型的基本元素(讀,刪除,修改)按照模型(描述/表示)對“類似對象”(大多數(shù)時候)的數(shù)據(jù)進行操作

1.4.1 對象樹結構

本節(jié)定義LDAP 的要素。如果你理解了本節(jié)內容和各種不同的術語以及術語之間的相互關系,那么你就真的理解來了LDAP 。

數(shù)據(jù)在LDAP 系統(tǒng)中以層級對象的方式表達,層級中的每個數(shù)據(jù)都被稱作條目。整個樹結構被稱作目錄信息樹(DIT-。樹的頂端通常被稱為根(root ,也被稱為基(base )或者后綴(suffix ))。

樹中的每個條目(entry )都有一個父條目(對象)以及0或多個子條目(對象)。每個子條目(對象)與其父條目的其他子條目是同級關系。

每個條目都由一個或者多個構成(是一個或者多個的實例)。Objectclasses 包含0或者多個屬性()屬性有名字(而且有時有縮寫或者別名)以及通常會包含數(shù)據(jù)(至少?。?/p>

objectClasses 及其屬性的特性以ASN.1(抽象語法標記1)定義方式進行描述。

現(xiàn)在你知道了關于LDAP 的每件事情。剩下的就是一些細節(jié)了——LDAP 有很多細節(jié),但是這里只介紹核心部分。

下圖表明了這些概念之間的關系:

LDAP DIT Information (Data) Model

,

總結:

1. 每個條目(Entry )都由一個或者多個對象類構成(objectClasses )。

2. 每個對象類都有一個名字(name )。

3. 每個屬性(Attribute )都有一個名字,屬性通常都含有數(shù)據(jù),并且屬性是對象類(object class )的組成成員。

1.4.2 屬性(Attributes )

每個屬性都有一個名字并且正常情況下會含有數(shù)據(jù)。屬性通常與一個或者多個對象類(ObjectClasses )相關聯(lián)。屬性有很多有趣的特性:

1. 所有的屬性都是一個或者多個的對象類(objectclass )的成員。

2. 每個屬性都定義了它所包含數(shù)據(jù)的數(shù)據(jù)類型(data type).

3. 按照ASN.1的描述方式,作為對象類objectclass 的成員,屬性可以定義為可選(修飾關鍵詞為MAY )還是必須(修飾關鍵詞為MUST )。一個屬性在某個類對象中是可選屬性,但在其他對象類中可能是必須屬性,這件事情主要由類對象來決定。

有人顯然已經(jīng)看出,在本文中,屬性可以被從所有地方自由地選擇——這種困惑首先來自于大多數(shù)屬性的可選特性。LDAP 允許以“拼接”的方式來構成一個條目。找到你想要的屬性,包括該屬性的類對象,以及希望所有其他不想在類對象中使用的屬性都是可以設置的。

4. 屬性可以有單值或者多值(正如ASN.1定義所描述的那樣)。單值意味著只有一個數(shù)據(jù)值可以用來表示那個屬性。多值意味著屬性可以有一個或者多個數(shù)據(jù)值。比如說,如果某個屬性表示的是email 地址,那么就可能有一個,兩個或者500個值——這只是目錄設計中處理email 別名的多種方法中的一種方法而已。屬性默認設置是多值(允許有多個值)。

5. Attributes 屬性都有名稱,并且有時后會有別名或者縮略名(正如ASN.1定義所描述的那樣),比如,commonName 是稱為person 的對象類(也可以是許多其他對象類)的一個成員屬性,同時該屬性有一個縮略名cn 。無論commonName 還是cn 都被用于指向同一個屬性。

6. 在樹狀層級中的每個具體層次,條目屬性中包含的數(shù)據(jù)都可以用于唯一標識該條目。可以用條目的一個屬性來標識條目的唯一性,也可以用兩個以上屬性的組合來表示條目的唯一性。

假如你有一個傳統(tǒng)紙質的名冊目錄,包含了名字,電話號碼,地址,喜歡的飲料(對,是一個標準屬性)等等。為了唯一識別一個特定的條目,你可能選擇使用人的名字(commonName 或cn 屬性)。如果人名在LDAP 目錄中不是唯一的,比如'Bob Smith',那么查找'Bob Smith'將會返回目錄中所有包含名字為'Bob Smith'的條目,而且用戶必須要選擇他所要查找的人。對于讀取或者查詢的操作,這種情況可能會可以接受,甚至值得稱道。因為在面向人類的界面中使用了易讀的信息——人名。

標簽: