Active Directory

Active -{}-Directory是微軟Windows Server中，負責架構中大型網路環境的集中式目錄管理服務中定義的物件，就可以儲存在Active Directory資料檔中，並利用Active Directory Service Interface來存取，實際上，許多Active Directory的管理工具都是利用這個介面來呼叫並使用Active Directory的資料。Active Directory也被做為微軟部份伺服器軟體與網域構連的資料結構，例如Microsoft Exchange Server 2003-2007，均使用AD來儲存其個人信箱資料，並將AD列為建置Exchange Server的必要條件。Active Directory最早在1996年出現，並在Windows 2000中首次問世，研發代號為Cascade，並歷經Windows 2000、Windows Server 2003的演化，目前AD已成為成熟的目錄服務元件，在Windows Server 2008中，AD更擴充其角色至五種服務。目錄結構.Active Directory(AD)以樹狀的資料結構來組成網路服務的資訊，在簡單的網路環境中。物件.Active Directory的最小儲存單元為物件，每個物件均有自己的schema屬性，可以儲存不同的資料，像是使用者、群組、電腦、信箱或其他的基本物件等。一個AD網域底下的基本物件，有以下幾種若公司需要以不同的組織結構來管理公司的帳戶，則可以在AD中建立一個或多個組織單元的套用與集中管理。樹系與多網域.若組織的網路環境相當龐大與複雜時，網域可能會有許多個，在AD之中，網域可以有一個或多個，而一個大型公司可能會利用分公司或是辦公室的方式來組織網域物件，如此一來，在AD中會有數個網域，若需要在網域中共享資料或是做委派管理與組態設定時，便需要建立彼此間的組織關係，微軟將AD中多網域相互的關係階層化，稱為網域樹：如此便可在AD中反映出組織的結構，同樣的，網域內還是可以再建立不同的網域，例如在工程部門中若需要分為軟體部門與硬體部門時，還可以在工程部門的網域中建立：而軟體部門和硬體部門的設定，會自動的繼承工程部門網域中的群組原則設定，而在軟體部門的組態，則不會影響到硬體部門。森林.在多個網域的環境下，可能在不同的網域之間會需要交換與共享資料，像是組態設定、使用者帳戶與群組原則設定等，在這個時候需要有一個角色來做為不同網域間的資訊交換角色，同時又必須要符合AD樹狀結構的規範，因此微軟在多網域之間建立了一個中介用的角色，稱為森林，一個組織中最多隻能有一個Forest，在Forest下則是各自的網域樹系，而在Forest下的網域或網域樹系間，可以共享資訊。實體結構.Active Directory背後，則是一個植基於Windows Server網路基礎結構的網路服務與通訊方式所組成，這些網路服務和通訊方式讓Active Directory具有高度的擴充性與向後相容性等，網路管理人員必須要妥適的設定與監控這些網路服務與通訊方式，以讓Active Directory能夠正常且順利的運作。在以往的Windows NT網域環境中，網域的實體結構分為三種角色，即主要網域控制站，在網域中的任何一臺網域控制站都可以負責處理來自使用者端的網域查詢，如此在分散部署上會具有相當的彈性。Global Catalog.在AD的實體結構中，最重要的角色非Global Catalog，若找不到時，才會連結到其他地區的GC，但若分公司的網路很慢時，這種跨地理位置的AD資料存取會直接影響到登入的時間，因此謹慎的GC的佈署對AD的推行是很重要的。Operation Masters.營運主機是被設定為擔任提供特定角色資訊的網域控制站，在每一個Active Directory網域中，至少會存在三種營運主機的角色。另外還有兩種角色，是具有額外功能，但不強制部署在網域的：Site.Active Directory站臺以及拓樸進行複製。預設情況下，站臺的通訊方式是使用IP的複製，則可以利用SMTP通訊方法，但這個方法需要另外建立企業級的憑證服務才可以使用，目的是確保SMTP的資料可以被確認與保全。在中大型的網路環境中，適當的分散網路流量以及設計網路拓樸是很重要的事，KCC會利用設定好的網路通訊成本的結構，站臺橋接能力讓複製的成本得以分散，並可讓同一臺GC的複製流量分散，也適合在不同地理區域之間的AD資訊複製與散發工作。DNS.Active Directory極度依賴DNS，因為DNS可以讓AD表現出階層化的樹狀結構，同時也可以和開放的目錄標準接軌，因此在建置網域時，DNS服務的格式互轉。實體儲存.Active Directory使用強化過的Microsoft Jet Database Engine，內含了物件資料表以及連結資料表，在Windows Server 2003中加入了一個描述安全資訊的新資料表。而在AD更新資料時的記錄，都被儲存在edb*.log，預設的名稱為edb.log，其他的檔案使用"edb" +數字 + ".log"來記錄，另搭配了edb.chk作為檢查點記錄檔，以及Res1.log和Res2.log作為系統的保留檔案。AD實體儲存的元件有：網域控制站會定時的機制有所不同，使這移動過程有可能失敗。對於Windows 2000，log files與資料庫可以分別存放在不同的磁碟上，但Windows Server 2003則必須放在同一個磁碟上。要行動資料庫，必須重新啟動伺服器，並進入Active Directory Restore Mode裡，利用ntdsutil工具進行移動。唯讀網域控制站.在Windows Server 2008中，加入了一個新的網域控制站角色，稱為唯讀型網域控制站控制下的帳戶才會快取密碼等功能。若要在AD中加入唯讀網域控制站，則網域的功能層級必須要在Windows Server 2003以上。安全性.Active Directory的安全性可分為物件的安全性識別、階層的安全性以及森林之間的信任關係等。安全性識別.AD以Kerberos V5作為其安全驗證的主要架構，並且每個AD物件都擁有一個獨一無二的安全性識別碼，其格式範例為S-1-5-21-7623811015-3361044348-030300820-1013，每組程式碼均有其意義，這組識別碼儲存在AD的objectSid屬性中。階層的安全性.在AD中，不同階層的OU可以定義不同的安全性資訊，以及不同的使用者許可權，而不同的網域階層之間也可以定義不同的使用者許可權，管理員也可以利用安全性管理範本。在父階層定義的安全性，可以被繼承至子階層。信任關係.在大型的網路環境中，可能組織間有夥伴關係，或者是專案間的合作，而需要在兩個Forest間共享或授權存取時，可以利用信任關係來建立Forest間的信任，以授權在彼此樹系間的存取權，在Windows Server 2003以後版本的AD環境可支援四種信任關係：信任關係的設定可以分為單向兩種，單向信任表示被信任的一方可以存取信任的一方的資源，而雙向信任則是可以存取各自的資源。信任關係的傳遞可分為可遞移才可以使用信任資訊。名稱系統.Active Directory的命名預設是以LDAP，在UNC與LDAP名稱間的轉換則由ADSI的codice_1介面來提供。識別名.每個AD物件均有一個以LDAP組成的名稱，稱為識別名，這個識別名是作為使用LDAP查詢AD目錄中識別物件的名稱，其格式類似下列：LDAP://cn=John Smith, ou=Software Engineering, dc=engineering, dc=acme, dc=com, dc=twLDAP://cn=COMP1024, ou=Computers, dc=acme, dc=com, dc=tw在LDAP字串中經常使用的代字有：當使用者端在下達LDAP查詢字串時，若無法符合AD物件的LDAP DN，則會找不到資料，LDAP代字亦可使用於搜尋。一般名稱.每個AD中的物件都會有一個一般的名稱，又稱為別名基本上是例外，它自己有一個代字ou作為識別符。關聯識別名稱.為了要在容器與物件間作識別，在Schema中設定了一個Relative Distinguished name，儲存在rDnAttId屬性中，可在搜尋AD時可以快速的對應容器內的物件。GUID.每一個物件都有一個唯一的GUID物件識別碼，儲存在objectGUID屬性中，其編碼方式與GUID相同。功能層次.Active Directory於是一個開放式的目錄服務，而且為了要能夠容納不同版本的Windows作業系統以及其網域，因此特別在AD中使用了一種版本控制的機制，稱為功能層次，因此若網域中沒有前版本的作業系統，則應將功能層次設定到最新版本，以開放AD的所有功能。另外，若要在網域中安裝新版本的作業系統，以相容於新版本作業系統。對於Windows NT的BDC，則不是透過功能層次的設定，而是用Operation Master的PDC Emulator來保持相容性。物件結構.由於微軟在設計Active Directory是使用開放型的目錄服務為方針，且目錄服務的最基本特性之一就是要能「廣納百川」，除了基本的網路服務資料外，還需要能夠和其他異質型服務連線與整合，因此微軟在AD之中實作了一個物件的儲存單位，稱為「物件結構」都有各自的schema，用以儲存識別該物件的不同資料，schema是由class和attribute所組成，attribute是最小的儲存單元，class則是包含attribute的集合體。儲存在attribute中的資料有很多種格式，微軟將這些格式定義成27種Schema資料型態，像是指示帳戶過期日的codice_8屬性，其值是interval資料型態。微軟也開放了可延伸schema的方法，開發人員可以利用這一套方法來延伸Active Directory Schema中的資料，但一旦寫入AD後，即不可刪除，但是可以停用，延伸AD Schema最好的例子就是Microsoft Exchange Server。服務.Active Directory本身除基本的網路目錄服務外，微軟也應用這個基礎架構設計了不同的服務，並且在Windows Server 2003不同的版次中加入，以提升Active Directory的應用範圍。聯合服務.由於AD本身具有可分散式的身份驗證與授權能力，且在2003年時Web正吹起了單一簽入，它顯露了幾個主要成員：此服務在Windows Server 2003 R2版本中首次出現，並在Windows Server 2008中升級為Active Directory Federation Service角色。輕量級服務.輕量級服務，ADAM本身也可以延伸schema，開發人員可以將ADAM視為另一種型式的資料庫，也可以由AD中複製資料到ADAM，不過ADAM不會對AD進行站臺複製，開發人員需要自行撰寫程式來複製資料。輕量級服務在Windows Server 2008中改名為Active Directory Lightweight Directory Service，並提升為AD的應用角色之一。憑證服務.憑證服務整合在一起，提供對檔案或應用程式層次的權利管理。權利管理服務.權利管理服務功能，可利用它來控制Office檔案散佈時的許可權，例如列印以及儲存檔案等，接著微軟發表了Right Management Server以及RMS SDK，供Windows Server 2003平臺使用，而在Windows Server 2008中即將它整合到Active Directory中，變成AD服務的一部份。整合Unix到Active Directory中.Active Directory互通的多樣性層次得以透過符合標準的LDAP使用者端在大多數的類Unix作業系統記錄，但這些系統通常缺乏與Windows元件像是群組原則與單向信任關聯的許多屬性的自動直譯，目前也有許多第三方軟體廠商提供了將Unix平臺。這些額外的物件結構在Windows Server 2003 R2版本中被釋出，包含完全對應到RFC 2307的一般用途的屬性。這些RFC 2307、nss_ldap與pam_ldap的參考實作均提供自PADL.com，包含直接使用這屬性以及填充資訊的支援。預設群組成員的Active Directory Schema與被提議的RFC 2307bis延伸功能一起編譯。RFC 2307bis使用LDAP成員屬性儲存Unix的群組成員資料，與基礎RFC 2307，以儲存群組成員為以逗號分隔的使用者識別碼清單有所不同。Windows Server 2003 R2包含了一個MMC snap-in以建立與編輯這些屬性。一個替代選項是使用其他的目錄服務，像是Fedora Directory Server功能得以延伸專案於使用額外屬性儲存在本地資料庫的任何遠端LDAP伺服器上。在本地資料庫中指示的使用者端將會看到包含在遠端和地的屬性，當遠端資料庫仍保持完整不變的情況下。Samba 4，在2012年12月11日釋出的 Samba 4中包含了一個Active Directory相容伺服器。