550 likes | 771 Views
第 3 章 目錄服務. 本章重點. 3 - 1 目錄服務的基本觀念 3 - 2 目錄的架構 3 - 3 X.500 和 LDAP 3 - 4 AD 目錄服務 3 - 5 AD 物件的名稱. 目錄服務. 微軟在 2000 年開始推出的目錄服務 , 可以說是新、舊技術的分水嶺。 從 Windows 2000 Server 、 Windows Server 2003 、 2003 R2, 直到 Windows Server 2008, 許多重要的功能都與目錄服務相關。 所以我們先來瞭解目錄服務的相關知識 , 為後面的學習打好基礎。.
E N D
本章重點 • 3 - 1 目錄服務的基本觀念 • 3 - 2 目錄的架構 • 3 - 3 X.500 和 LDAP • 3 - 4 AD 目錄服務 • 3 - 5 AD 物件的名稱
目錄服務 • 微軟在 2000 年開始推出的目錄服務, 可以說是新、舊技術的分水嶺。 • 從 Windows 2000 Server、Windows Server 2003、2003 R2, 直到 Windows Server 2008, 許多重要的功能都與目錄服務相關。 • 所以我們先來瞭解目錄服務的相關知識, 為後面的學習打好基礎。
3 - 1 目錄服務的基本觀念 • 何謂目錄 • 目錄與資料庫的差異 • 何謂目錄服務 • 電腦網路為何需要目錄服務
何謂目錄 • 其實目錄早已存在日常生活中, 例如電話簿可用來查詢用戶的電話號碼、姓名與地址, 就是一種目錄。 • 而電腦的檔案系統記錄了資料夾與檔案的名稱、建立日期、修改日期、儲存位置等等資訊, 因此使用者以檔案名稱或某種檔案屬性 (例如:修改日期), 就能從眾多的資料夾中找出所要的檔案。
何謂目錄 • 從以上的例子可知, 目錄是用來記載特定環境中、一群物件的相關資訊。 • 在此所謂的物件, 泛指環境中的各種獨立個體-包括人、事、物。
目錄與資料庫的差異 • 許多初次接觸目錄或目錄服務的使用者, 經常產生一個問題:「目錄與資料庫有何差異?」 • 其實, 目錄與資料庫都是用來儲存資料, 兩者的確很相似。 • 不過, 深入比較其細節, 就會發現通常有以下兩點差異: • 目錄強調查詢, 資料庫重視異動。 • 目錄對於查詢動作做過最佳化, 因此查詢的速度很快, 適合處理變動少、查詢多的資料。
目錄與資料庫的差異 • 資料庫則是重視異動(Transcation), 適合處理變動較多的資料。 • 目錄以樹狀架構為主, 資料庫以關聯式資料表為主。 • 絕大多數的目錄都採用階層式樹狀架構來儲存資料;至於資料庫, 雖然也有少數採用樹狀架構, 但是主流產品是『關聯式資料庫』, 其主要架構為『存在關聯性的資料表』。
目錄與資料庫的差異 • 雖然目錄與資料庫有以上的差異, 可是在許多文件或人們平常的交談中, 經常將兩者混淆, 幾乎視為相同。 • 所以, 我們也毋須太計較其中的差異, 不妨將目錄當成是一種查詢速度很快的資料庫即可。
何謂目錄服務 • 有了目錄之後, 理論上就可以用來查詢所要的資訊。但是當這份目錄包含龐大的資料時, 用人工查詢和維護便顯得沒有效率。 • 翻閱厚厚的電話簿時很不方便, 但是透過查號台, 利用電腦來搜尋電話用戶資料庫, 便能快速又準確地知道結果, 所以查號台的服務便是一種目錄服務。 • 簡而言之, 藉由目錄服務, 我們能夠方便迅速地查詢與維護目錄, 提高工作效率。
電腦網路為何需要目錄服務 • 在單機時代, 檔案、印表機、掃描器和數據機等等, 都是在同一部電腦, 使用者能輕易地找到這些資源, 因此感受不到目錄服務的重要。 • 可是到了網路時代, 這些資源可能散佈在 5 部或 10 部電腦上, 使用者如何找得到?即使找到了, 是否就有權限使用? • 倘若讀取每一個檔案或使用每一部印表機時, 都得重複輸入帳戶名稱與密碼, 豈不是很麻煩?
電腦網路為何需要目錄服務 • 為了解決這些因為網路規模膨脹而出現的問題, 我們需要一份目錄, 上頭記載著電腦名稱、印表機名稱、帳戶名稱、密碼、權限等等, 再設計一種好用的目錄服務, 讓大家透過該目錄服務就能輕易地使用網路資源。 • 不過在實務應用上, 考量到資訊安全, 因此軟體廠商所設計的目錄服務, 大都還會結合身分驗證(Authentication)機制。
電腦網路為何需要目錄服務 • 亦即在使用目錄服務之前, 必須表明自己的身分, 通常是輸入帳戶名稱與密碼, 但也可以用插入 IC 卡或是掃瞄指紋等等方式, 俟系統驗證無誤後, 使用者才能查詢或修改目錄內容。
3 - 2 目錄的架構 • 目錄的架構是指在目錄中儲存物件的方式, 明白這方面的知識, 有助於未來的維護和設計工作。 • 目錄樹 • 物件的屬性
目錄樹 • 若目錄中的物件是以『階層式樹狀架構』來組織, 則該架構稱為『目錄樹』(Directory Tree), 包含以下兩類的物件: • 容器物件 (Container Object):這類物件的下層可再存放其他物件。位於整個目錄樹頂端的容器物件, 稱為『根』物件 (Root Object)。 • 非容器物件 (Non-container Object):這類物件的下層不可再存放其他物件。非容器物件必定是位於目錄樹的末端, 又稱為『葉』物件 (Leaf Object)。
目錄樹 • 整體的架構圖如下:
物件的屬性 • 在目錄樹中, 各物件都有所謂的『屬性』 (Attribute), 記載著該物件的特性。物件與屬性的關係, 類似於資料庫中紀錄與欄位的關係。 • 一筆紀錄可以有多個欄位, 同理, 一個物件可以有多個屬性, 而且不同性質的物件會有不同的屬性。 • 舉例來說:使用者(User)物件有『公司名稱』『部門名稱』和『電話號碼』這些屬性, 但是資料夾物件就沒有這些屬性, 而有『建立日期』和『大小』等屬性。
物件的屬性 • 屬性的內容通常稱為屬性值, 不同物件的某些屬性值可以相同、某些則必須唯一。 • 例如:A、B 兩位使用者隸屬於相同部門, 所以它們的公司名稱、部門名稱, 甚至電話號碼都相同, 但是『員工編號』就絕對不能相同。
3 - 3 X.500 和 LDAP • 由於電腦網路可能包含了多種不同的作業系統, 當我們要用一種目錄服務將它們整合在一起時, 如果沒有統一的標準, 就必須為每一個系統設計專屬的用戶端軟體, 如此勢必增加複雜度與成本。 • 當初在『目錄』觀念剛萌芽時, ITU-T 發表了一系列名為『X.500 Recommandation』文件, 探討目錄的觀念、模型、存取協定等等技術。
X.500 和 LDAP • 業界便以 X.500 作為目錄的標準, 以 DAP (Directory Access Protocol) 協定作為存取 X.500 目錄的共同方式。 • 但是廠商在實作時, 發覺 DAP 協定過於複雜, 而且用戶端程式的負荷太大, 於是將其改良, 推出了 LDAP (Lightweight Directory Access Protocol) 協定。
X.500 和 LDAP • 顧名思義, LDAP 為『輕量級』(Lightweight) 的 DAP, 一方面簡化架構、易於設計, 另一方面也減輕用戶端軟體的負荷, 因此成為主流。 • Lotus Domino、Sun One Directory Server、Novell Directory Services (NDS) 和微軟的 Active Directory Services 等等目錄服務產品, 都標榜支援 LDAP 協定。
3 - 4 AD 目錄服務 • 微軟自 Windows 2000 Server 開始提供完整的目錄服務, 命名為 AD(Active Directory)目錄服務。 • 搭配該服務的目錄便稱為 AD 目錄--許多文件是以『AD 資料庫』來稱呼 AD 目錄。 • 雖然 AD 目錄與 AD 目錄服務大致上符合 X.500 及 LDAP 規範, 但是難免加入了微軟獨家的規格與技術, 因此本節將介紹其中比較值得注意的一些特性。
AD 目錄的架構 • AD 目錄仍然是以物件組合成階層式樹狀架構, 不過卻多了『網域』(Domain)物件。 • 將一般物件先整合到網 域中, 再形成所謂的 『網域樹狀目錄』 (Domain Tree), 如右圖:
AD 目錄的架構 • 其實網域樹狀目錄與先前提過的目錄樹很像, 只不過多了網域這個容器物件。各個物件先隸屬於網域, 再由網域組合成目錄。 • 而且多個網域樹狀目錄還可以再結合成『樹系』(Forest), 如下圖。
AD 物件的共同特性 • 在 AD 目錄中的物件稱為 AD 物件。雖然大多數 AD 物件的特性各不相同, 但是卻有一些共同點。 • 認識這些共同的特性, 可讓我們更深入瞭解 AD 物件。
GUID • Windows Server 2008 會賦予各物件一個獨一無二的代碼, 稱為 GUID (Globally Unique Identifier, 全域唯一識別元)。 • GUID 的長度高達 128 位元, 以確保不會彼此重複。 • 物件的 GUID 一旦產生, 永遠不會改變, 因此不論物件的名稱或屬性如何變更, 應用程式仍可透過 GUID 找到物件。
ACL • 從 Windows 2000 Server 到 Windows Server 2008, 都存在所謂的安全性原則(Security Principal) 物件, 它包含『使用者帳戶、電腦帳戶與群組』等 3 種物件。 • 而 AD 物件都有一份清單 (List), 記載著安全性原則物件對自己有哪些權限, 這份清單稱為存取控制清單 (ACL, Access Control List)。 • 換言之, ACL 記載了『哪些安全性原則物件, 可以對哪些物件做什麼動作』。
ACL • 例如:『王小華』可以讀取『人事部門』資料夾、但不能刪除或修改其內容;『美編組』的成員可以使用彩色印表機、但不能修改設定等等。 • 我們不妨將物件的 ACL 想像成如下的表格:
ACL • 當然, 以上的內容係經過簡化, 目的是要讓讀者容易理解。實際的 ACL 是用一堆代碼來記錄, 遠比上表來得複雜。
ACL 的繼承關係 • 雖然 AD 物件各自擁有一份獨立的 ACL, 然而系統管理員可以根據實際需求, 決定是否讓下層物件繼承上層物件的 ACL。以下圖為例:
ACL 的繼承關係 • 當 C 物件繼承上層物件(A 和 B 物件)的 ACL 時, 連帶使得 X 和 Y 使用者都對 C 物件具有寫入權限, 造成 X、Y 和 Z 三位使用者都對 C 物件有寫入權限。 • 若將 C 物件移動至其它位置時, 本身的 ACL 並未改變, 但因所繼承的 ACL 不同會導致不同的結果。 • 以下圖為例。
ACL 的繼承關係 • 將 C 物件移至 A 物件下層後, 則只有 X、Z 使用者對 C 物件具有寫入權限, Y 使用者則喪失對 C 物件的寫入權限。
AD 物件的屬性 • AD 物件的主要功能是記載 AD 網域內各種資源的資訊, 這些資訊便是物件的屬性。 • 每個 AD 物件通常有多個屬性, 以使用者 (User)物件為例, 預設有兩百多個屬性, 較常用到的屬性如下: • sn:使用者的姓氏。 • givenName:使用者的名字。 • userPassword:使用者的密碼。 • objectGUID:使用者的 GUID。
AD 物件的屬性 • lastLogon:使用者最近一次的登入時間。 • userCertificate:使用者的數位憑證。 • url:使用者的個人網址。 • homePhone:使用者家中的電話號碼。 • thumbnailPhoto:使用者的數位相片。 • 在實際的應用上, 通常不會用到所有的屬性, 而是依需求來存取部份的屬性, 因此使用者僅能存取應用程式所提供的屬性。
AD 物件的屬性 • 例如:Windows Server 2008 的使用者帳戶管理介面, 並沒有出現 thumbnailPhoto 屬性可供設定。 • 倘若有儲存使用者相片檔的需求, 則必須另行撰寫程式, 提供該屬性的設定選項, 讓操作者能將相片檔儲存在使用者物件中。
AD Schema • 先前提過, 不同類的 AD 物件可能具有不同的屬性, 例如:印表機物件有『紙張尺寸』屬性, 但是使用者物件就不可能有此屬性。 • 到底什麼樣的物件具有哪些屬性, 這是由 AD schema 所決定。 • AD schema 如同一份規格文件, 將物件分成各種類別 (Class), 並定義每一種類別的物件該有哪些屬性。
AD Schema • 透過這些已定義屬性的物件類別來建立物件, 可確保套用這個類別所產生的物件, 皆有相同的屬性。 • 例如:定義 user 類別所包含的屬性之後, 所有的使用者物件都根據 user 類別來建立, 如此所產生的使用者物件便會有相同的屬性。 • 在其它的目錄服務中, schema 經常是以文字檔的形式來呈現。
AD Schema • 但是在 AD 中, 則將 schema 包裝成 AD 物件, 換言之, 雖然 AD schema 本身是用來定義物件, 可是自己也是一種物件, 可以說是『用來定義物件』的物件。 • 在 AD schema 中, 相同屬性可以存在於不同類別, 例如:description 屬性同時存在於 user、group、computer 等類別, 而且彼此完全獨立。
AD Schema • 修改 user 的 description 屬性不會影響 group 物件的 description 屬性。 • 雖然 Windows Server 2008 已經提供相當多的類別與屬性, 但為了提高 AD 功能的彈性, 仍允許系統管理員自行定義新的類別或屬性。
3 - 5 AD 物件的名稱 • 由於使用者或網路程式可能會以不同方式來存取物件, 而每一種存取方式對於物件都有自己的命名方式, 因此 AD 物件會有多種名稱, 以適用於不同的場合。
LDAP 名稱 • AD 是採用 LDAP 3 協定的目錄服務, 因此用戶端可透過 LDAP 協定來存取 AD 中的物件。 • 存取時所指定的物件名稱, 可區分為以下 2 類: • DN (Distinguished Name) 與 RDN (Relative Distinguished Name) • 標準名稱
DN 與 RDN • AD 目錄中各物件皆具有符合 LDAP 規格的 DN 與 RDN 名稱, 以便讓 LDAP 用戶端程式存取物件。 • 物件本身具有一個 RDN 屬性, 用以記載自己的 RDN;物件的 DN 則是由自己的 RDN 再加上層所有物件的 RDN 所組成, 以下圖為例。
DN 與 RDN • 物件 A 的 RDN 為:
DN 與 RDN • DN 為: • 其中, CN (Common Name) 通常用來代表物件名稱, 例如使用者名稱、印表機名稱等等;OU (Organizational Unit) 代表組織單位名稱;DC (Domain Component) 代表網域名稱。 • 這裡要注意我們慣用的是 DNS 網域名稱, 例如:flag.com.tw, 但是 LDAP 則是用『DC=』加在每個網域之前, 形成『DC=flag, DC=com, DC=tw』的表示法。
DN 與 RDN • 物件的 DN 是由系統根據物件的 RDN 與其位置而自動產生的。移動物件時, DN 也會隨之變更, 以反映移動後的位置。 • 除了程式設計師在開發程式時, 會用到冗長難記的 DN 外, 一般情形很少直接使用 DN 來存取物件。
標準名稱 • 標準名稱是以簡化方式表示 LDAP 的 DN, 假設物件的 DN 為: • 則在 AD 中此物件的標準名稱為: • 換言之, 標準名稱省略了 DN 中的 "CN="、"OU=" 等等保留字, 並改用 DNS 網域名稱來表示 DN 中的網域名稱。
登入名稱 • 使用者在登入 Windows Server 2008 主機或網域時, 可使用以下兩種名稱: • UPN (User Principal Name) • SAM (Security Account Manager) 帳戶名稱
UPN • UPN 的格式與慣用的 Email 地址相似。 • 例如:frankie@xdom.com, 其中 frankie 是使用者名稱(一般又稱為『帳戶名稱』或『帳號』), xdom.com 是 frankie 所隸屬的 DNS 網域名稱。 • 開機啟動 Windows Server 2008 後, 首先出現請按 CTRL + ALT + DELETE 來登入的畫面, 使用者按下 Ctrl + Alt + Del鍵, 便可輸入 UPN 來登入網域, 如下圖。