日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扩展活动目录构架

發(fā)布時(shí)間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩展活动目录构架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
概覽:
  • 了解默認(rèn)的 Active Directory 架構(gòu)
  • 添加 classSchema 或 attributeSchema 對象
  • 獲得并使用對象標(biāo)識符
  • 使用 .ldif 文件擴(kuò)展架構(gòu)
下載這篇文章的代碼: Schema2008_05.exe (151KB)
自從在 Windows 2000 中開始引入 Active Directory 以來,Microsoft 已向眾多客戶提供了用于實(shí)施 Active Directory 的基本架構(gòu)定義。 Active Directory? 的出現(xiàn)也標(biāo)志著 Windows? 中許多應(yīng)用程序的寫入和實(shí)施方式都發(fā)生了轉(zhuǎn)變。在此之前,應(yīng)用程序(如 Microsoft? Exchange 5.5)必須要自行加以構(gòu)建來包含其自身的目錄結(jié)構(gòu)。Active Directory 出現(xiàn)后,許多應(yīng)用程序(無論是 Microsoft 的還是其他公司的)都開始充分利用它所提供的底層結(jié)構(gòu),而不再從頭開始構(gòu)建自己的架構(gòu)。 這些應(yīng)用程序首先使用 Active Directory 提供的基本體系結(jié)構(gòu),然后根據(jù)需要再加以擴(kuò)展。以 Microsoft Exchange 2000 為例,它利用 Active Directory 來實(shí)現(xiàn)消息傳遞,并進(jìn)而定義了未來的 Microsoft 消息傳遞體系結(jié)構(gòu)。 現(xiàn)在,許多被編寫為在 Active Directory 環(huán)境中運(yùn)行的應(yīng)用程序都依賴其底層架構(gòu)來發(fā)揮作用,并且有些還會(huì)根據(jù)需要來定義自己的架構(gòu)變更內(nèi)容。當(dāng)然,正如我將在本文中介紹的,這需要一個(gè)可擴(kuò)展的架構(gòu)。并且,由于如此眾多的應(yīng)用程序都依賴于 Active Directory 中的基本定義,因此核心架構(gòu)的持續(xù)穩(wěn)定性至關(guān)重要。因?yàn)樵S多應(yīng)用程序都需要在同一個(gè) Active Directory 中彼此配合工作,因此對任意應(yīng)用程序的變更均不能影響其他應(yīng)用程序。
什么是架構(gòu)? 對許多人來說,Active Directory 架構(gòu)是個(gè)黑盒子,修改自身架構(gòu)這一想法讓人覺得有點(diǎn)恐怖。當(dāng)然,擴(kuò)展 Active Directory 架構(gòu)并不是每天都要執(zhí)行的操作,但特定的應(yīng)用程序或業(yè)務(wù)需求可能會(huì)需要此操作。因此,了解架構(gòu)是什么以及它都包含哪些內(nèi)容非常重要,并且由于 Active Directory 在許多組織中都是非常重要的資產(chǎn),因此如果因更新有誤而致使其出現(xiàn)故障可能會(huì)造成嚴(yán)重的影響。 作為一種策略,許多組織都在考慮將 Windows Server? 2008 中的“Active Directory 輕型目錄服務(wù)”(ADLDS) 或 Windows Server 2003 中的“Active Directory 應(yīng)用程序模式”(ADAM) 作為一種替代方案加以測試,或者直接實(shí)施自定義的架構(gòu)定義而不擴(kuò)展 Active Directory 架構(gòu)。 架構(gòu)是一種提供目錄服務(wù)格式的底層結(jié)構(gòu)。Active Directory 架構(gòu)可以定義“Active Directory 域服務(wù)”(ADDS) 中使用的對象類和屬性。核心架構(gòu)定義了許多眾所周知的類(如 user、computer 和 organizationalUnit)和屬性(如 telephoneNumber 和 objectSID)。核心架構(gòu)定義中出現(xiàn)的對象被稱為“類別 1”對象,而添加的對象被稱為“類別 2”對象。 Active Directory 架構(gòu)可在路徑 cn=Schema, cn=Configuration,dc=X 所定義的容器中找到,其中 X 是 Active Directory 林的命名空間。請注意,Active Directory 林僅包含一個(gè)架構(gòu);對林中的架構(gòu)定義進(jìn)行變更會(huì)影響該林中的所有域。圖 1 顯示了對于不同版本的 Windows Server,在 Active Directory 架構(gòu)中添加的類和屬性的數(shù)量。 ?Figure?1?類和屬性的數(shù)量
版本添加的屬性數(shù)量添加的類數(shù)量架構(gòu)擴(kuò)展文件
Windows Server 200320849Sch14.ldf 到 sch30.ldf
Windows Server 2003 R28129 Sch31.ldf
Windows Server 200813610Sch32.ldf 到 sch44.ldf
在不同版本的 Windows Server 中,架構(gòu)的更新都是使用名為 Adprep 的實(shí)用工具來完成的。在 Windows Server 2003 R2 的更新版本中,架構(gòu)版本更新為 31,在 Windows Server 2008 中會(huì)改為 44。 要對此進(jìn)行核對,可使用 ADSIEdit 等工具來檢查 Active Directory 中 cn=Schema,cn=Configuration,dc=X 的 objectVersion 屬性值。請注意,Exchange Server、System Management Server (SMS) 等應(yīng)用程序或依賴于 Active Directory 的其他一些應(yīng)用程序可能會(huì)根據(jù)應(yīng)用程序的需求來修改架構(gòu)。
具體細(xì)節(jié) Active Directory 包括兩種對象類型:classSchema(簡稱為類)和 attributeSchema(簡稱為屬性)。如果組織希望將數(shù)據(jù)存儲到未包含在現(xiàn)有架構(gòu)中的特定屬性內(nèi),通常會(huì)考慮擴(kuò)展 Active Directory 架構(gòu)。要在 Active Directory 架構(gòu)中創(chuàng)建屬性,首先要在架構(gòu)容器中指定一個(gè) attributeSchema 對象,然后為該新對象定義必要的屬性。 在 go.microsoft.com/fwlink/?LinkId=110445 中提供了 attributeSchema 對象相關(guān)屬性的列表以及其他一些信息。正如您所看到的,可為 attributeSchema 對象定義多個(gè)屬性;這些屬性中很多都是必需的。 除常規(guī)屬性以外,架構(gòu)中還有一些被稱為鏈接屬性的特殊屬性,它們都是通過提供前向鏈接和后向鏈接來成對實(shí)施的。以 Active Directory 中的組成員身份為例。任意組(例如,名為 ContosoEmployees 且包含一個(gè)名為 John Doe 成員的組)的 member 屬性為前向鏈接,而成員對象的對應(yīng) memberOf 屬性為后向鏈接(因此,當(dāng)查詢 John Doe 的 memberOf 屬性時(shí),會(huì)計(jì)算 ContosoEmployees 組的可分辨名稱,即 DN)。 前向鏈接的行為方式與其他所有屬性都非常相似。其值可以是單值或多值(與 member 屬性一樣,可包含多個(gè)對象作為組成員),并與目錄中的父對象存儲在一起。 另一方面,后向鏈接是由系統(tǒng)維護(hù)的,以確保引用的完整性。查詢后向鏈接屬性的值時(shí),會(huì)根據(jù)所有匹配的前向鏈接值來計(jì)算結(jié)果。后向鏈接始終是多值鏈接。 ADDS 中的每個(gè)對象類都由架構(gòu)容器中的 classSchema 對象所定義。在 go.microsoft.com/fwlink/?LinkId=110445 中提供了對成功定義 classSchema 對象至關(guān)重要的一些屬性的列表。 可以指定下列三種類型的類:Structural、Abstract 和 Auxiliary。它們由 objectClassCategory 屬性的值定義。(第四種類型稱為 88,它包括在 X.500 1993 標(biāo)準(zhǔn)之前定義的所有類。這種類型的類由 objectClassCategory 屬性中的值 0 來指定。這種類型的類不應(yīng)該再定義。)
獲得并使用標(biāo)識符 目錄中每個(gè) classSchema 和 attributeSchema 對象的身份都是使用“強(qiáng)制對象標(biāo)識符”(OID) 定義的,此標(biāo)識符的定義依據(jù)是 classSchema 對象的 governsID 和 attributeSchema 對象的 attributeID。這些是由特定的頒發(fā)機(jī)構(gòu)所提供的唯一數(shù)字值,可用于識別對象。編號方式由 LDAP 協(xié)議 (RFC 2251) 的定義進(jìn)行管理。Active Directory 架構(gòu)中的某些 OID 是由“國際標(biāo)準(zhǔn)化組織”(ISO) 頒發(fā)的,而有些是由 Microsoft 頒發(fā)的。OID 對于目錄中的對象而言必須唯一。 OID 是一個(gè)數(shù)字字符串,如 1.2.840.113556.1.y.z(如圖 2 所示)。例如,由此可以得出用戶 classSchema 對象的 OID 為 1.2.840.113556.1.5.9。 ?Figure?2?用戶對象的標(biāo)識符
含義說明
1ISO標(biāo)識根頒發(fā)機(jī)構(gòu)。
2ANSIISO 指定的組名稱。
840美國組織指定的國家/地區(qū)代碼。
113556Microsoft國家/地區(qū)指定的組織名稱。
1Active Directory由組織(如本例中的 Microsoft)指定。
Y對象類型定義不同對象類型(類別)(如 classSchema 或 attributeSchema)的數(shù)字。例如,5 定義對象類。
Z對象標(biāo)識類別中特定對象的數(shù)字。例如,用戶類被指定的數(shù)字是 9。
當(dāng)組織打算擴(kuò)展架構(gòu)時(shí),必須要確保 OID 的唯一性,為此首先要獲取自己的 OID 根號,然后開始分支,為組織所創(chuàng)建的新對象類和屬性提供唯一的 ID。OID 根可直接從 ISO 國家注冊機(jī)構(gòu) (NRA) 獲取,該機(jī)構(gòu)在美國屬于“美國國家標(biāo)準(zhǔn)協(xié)會(huì)”(ANSI)。 可通過 ansi.org 來了解獲取根 OID 所需的程序和費(fèi)用。對于其他地區(qū),請聯(lián)系相應(yīng)的 ISO 成員組織;ISO 在 iso.org/iso/about/iso_members.htm 提供了其成員組織的列表。 在過去,組織可通過向 schemreg@microsoft.com 發(fā)送電子郵件來從 Microsoft 獲取 OID。但是現(xiàn)在,它會(huì)提供一個(gè)自動(dòng)回復(fù),提示請求者從 go.microsoft.com/fwlink/?LinkId=110453 下載并運(yùn)行 VBScript。 對于 Microsoft 頒發(fā)的 OID,該數(shù)字是在 Microsoft OID 數(shù)字空間下指定的:1.2.840.113556.1.8000.x,其中 x 是指定給組織的唯一編號。組織可能會(huì)進(jìn)一步拆分這些 OID 來指定對象。這樣,組織可以使用 1.2.840.113556.1.8000.x.1.y 來代表新的 classSchema 對象,使用 1.2.840.113556.1.8000.x.2.z 來代表 attributeSchema 對象(其中,x 代表組織的唯一編號,y 和 z 分別代表指定給特定的 classSchema 和 attributeSchema 對象的編號)。另外還建議用戶在這些對象的名稱中使用組織特定的前綴以區(qū)分它們。
定義鏈接屬性 前向鏈接的 attributeSyntax 值為 2.5.5.1, 2.5.5.7(或 2.5.5.14),這一點(diǎn)非常重要。這些值對應(yīng)于包含可分辨名稱的語法,例如 Object (DS-DN) 語法。 后向鏈接的 attributeSyntax 值必須為 2.5.5.1,這是 Object (DS-DN) 語法。按照慣例,后向鏈接屬性將被添加到頂層抽象類的 mayContain 值中。這將允許從任意類的對象中讀取后向鏈接屬性,因?yàn)楹笙蜴溄訉傩詫?shí)際上并非存儲在對象中;它們都是根據(jù)前向鏈接值計(jì)算得來的。 Windows Server 2003 引入了如下所示的一個(gè)新功能,組織可使用此功能來鏈接架構(gòu)中的兩個(gè)對象:自動(dòng)生成 linkID。利用此功能,當(dāng)屬性的 linkID 屬性設(shè)為 1.2.840.113556.1.2.50 時(shí),系統(tǒng)會(huì)自動(dòng)為新鏈接屬性生成一個(gè) linkID。通過將 linkID 設(shè)置為前向鏈接的 attributeId 或 ldapDisplayName,可創(chuàng)建對應(yīng)的后向鏈接。在創(chuàng)建前向鏈接之后及創(chuàng)建后向鏈接之前,必須重新加載架構(gòu)緩存。否則,在創(chuàng)建后向鏈接時(shí)將無法找到前向鏈接的 attributeId 或 ldapDisplayName。架構(gòu)緩存可根據(jù)需要重新加載,在架構(gòu)更改后幾分鐘內(nèi)或域控制器重新啟動(dòng)后也會(huì)重新加載。 如果您的 Active Directory 是在 Windows 2000 級別,則必須向 schemreg@microsoft.com 發(fā)送一封電子郵件,向 Microsoft 請求 linkID。在自動(dòng)回復(fù)郵件中,您會(huì)看到:“對于發(fā)送到 schemreg@microsoft.com 的電子郵件,只有那些與原有環(huán)境下的 linkID 注冊問題相關(guān)的郵件才會(huì)得到處理。”為此,請?jiān)陔娮余]件中提供以下信息:公司名稱、聯(lián)系人姓名、電子郵件地址、電話號碼、注冊的前綴(如果適用)、注冊的 OID(如果適用)。
準(zhǔn)備擴(kuò)展架構(gòu) 假設(shè)您已決定擴(kuò)展您的 Active Directory 架構(gòu)。在確信它已無法再滿足要求后,此分析結(jié)果可能會(huì)建議減少使用 ADLDS(或 Windows Server 2003 中的 ADAM)實(shí)現(xiàn)的替代目錄。接下來,確定要添加到架構(gòu)中的新 attributeSchema 對象,這樣做之后,可以定義指定這些新對象所需的所有值(例如 cn、ldapDisplayName 等)。在定義對象的屬性值時(shí),還從 Microsoft 或其他機(jī)構(gòu)獲取了 OID。您實(shí)際上已將上述內(nèi)容記錄為業(yè)務(wù)需求和技術(shù)規(guī)范。而且已實(shí)施了模擬 Active Directory 的實(shí)驗(yàn)室環(huán)境并已準(zhǔn)備好進(jìn)行測試。 許多組織實(shí)際都設(shè)有委員會(huì)來批準(zhǔn)或拒絕此類變更并且會(huì)設(shè)置實(shí)施它們的過程。由于在許多組織中 Active Directory 都被用作權(quán)威的信息源,因此此類檢查和平衡至關(guān)重要,而且在變更后認(rèn)真加以貫徹和執(zhí)行也極為重要,無論怎樣強(qiáng)調(diào)也不為過。 當(dāng)組織決定了繼續(xù)推行后,就必須制定有關(guān)此項(xiàng)目的測試和實(shí)施計(jì)劃。要對架構(gòu)進(jìn)行擴(kuò)展,您可以使用 Microsoft 管理控制臺 (MMC) 中的 Active Directory 架構(gòu)管理單元來添加新對象,也可以使用編程或半編程方法來擴(kuò)展架構(gòu)(如使用 LDIFDE 來導(dǎo)入 .ldif 格式文件;使用 CSVDE 導(dǎo)入 .csv 格式文件;或使用 Active Directory 服務(wù)接口 (ADSI) 腳本)。 無論使用哪種方法,都必須在 Active Directory 林中,在連接到或擁有架構(gòu)主機(jī)的“靈活單主機(jī)操作”(FSMO) 角色的服務(wù)器上執(zhí)行此功能。并且,由于用來更新架構(gòu)的帳戶必須具有足夠的管理權(quán)限才能執(zhí)行更新,因此應(yīng)使其成為“架構(gòu)管理員”組的成員。最后,必須啟用林的架構(gòu)更新(默認(rèn)為禁用)。 除非變更非常簡單,否則都應(yīng)以自動(dòng)方式執(zhí)行,以便促進(jìn)測試和生產(chǎn)實(shí)施階段之間的標(biāo)準(zhǔn)化并減少可能會(huì)因手動(dòng)操作而產(chǎn)生的錯(cuò)誤。讓我們假設(shè)您已決定使用 LDIFDE 來實(shí)施變更。要在擴(kuò)展架構(gòu)時(shí)應(yīng)用更新,您應(yīng)添加新屬性和類,向類添加新屬性,然后觸發(fā)緩存重新加載。讓我們先來看幾種方案。
添加屬性 為了敘述方便起見,假設(shè)名為 Contoso 的組織希望將新屬性添加到其 Active Directory 中,用來標(biāo)識每名員工的鞋碼。Active Directory 林有兩個(gè)域:contoso.com 和 employees.contoso.com。具體要求是使用用戶類定義創(chuàng)建的所有對象都應(yīng)包含這一新屬性。 您必須要記住的一點(diǎn)是,架構(gòu)變更對這兩個(gè)域都會(huì)產(chǎn)生影響,因?yàn)樗鼈兾挥谕涣种小<僭O(shè)您已從 Microsoft 獲得 OID 1.2.840.113556.8000.9999 并已將其拆分為 1.2.840.113556.8000.9999.1(代表 Contoso 的 classSchema 對象)和 1.2.840.113556.8000.9999.2(代表 Contoso 的 attributeSchema 對象)。現(xiàn)在要為這一新對象定義所有屬性值(如圖 3 所示)。 ?Figure?3?定義 contosoEmpShoe 屬性
屬性注釋
CncontosoEmpShoe?
lDAPDisplayNamecontosoEmpShoe?
adminDisplayNamecontosoEmpShoe?
attributeSyntax2.5.5.12指定一個(gè) Unicode 字符串。
oMSyntax64表示一個(gè) Unicode 字符串。
objectClasstop, attributeSchema?
attributeID1.2.840.113556.8000.9999.2.1如組織所定義。
isSingleValuedTRUE只能存儲一個(gè)鞋碼值。
searchFlags1您的分析結(jié)果表明您希望為此屬性編制索引。備注:您需要在實(shí)驗(yàn)室環(huán)境下執(zhí)行壓力測試分析。
isMemberOfPartialAttributeSetTRUE您希望此屬性出現(xiàn)在全局編錄中。
而且,盡管 contosoEmpShoe 屬性需要可供創(chuàng)建為用戶類對象的所有對象使用,但并不建議您對用戶類的默認(rèn)定義進(jìn)行修改。相反,應(yīng)定義一個(gè)名為 contosoUser 的輔助類,它具有指定為 contosoEmpShoe 的 mayContain 值(如圖 4 所示)。然后,將為 contosoUser 輔助類定義的屬性添加到用戶類中。 ?Figure?4?定義 contosoUser 類
屬性
CncontosoUser
lDAPDisplayNamecontosoUser
adminDisplayNamecontosoUser
governsID1.2.840.113556.8000.9999.1.1(如組織所定義)
mayContaincontosoEmpShoe
possSuperiorsorganizationalUnit, container
objectClassCategory3(定義輔助類)
既然已經(jīng)執(zhí)行了分析并定義了值,就可以開始創(chuàng)建 .ldif 文件了(類似于圖 5 所示的代碼)。您可將圖 5 中的內(nèi)容復(fù)制到記事本并將其保存為 contosoUser.ldif(或者,也可以在 technetmagazine.com 的代碼下載部分找到此代碼的副本)。 ?Figure?5?.ldif 文件(用于擴(kuò)展架構(gòu)) ?#Attribute definition for contosoEmpShoedn: CN=contosoEmpShoe,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: attributeSchemacn: contosoEmpShoeattributeID: 1.2.840.113556.1.8000.9999.2.1attributeSyntax: 2.5.5.12isSingleValued: TRUEadminDisplayName: contosoEmpShoeadminDescription: contosoEmpShoeoMSyntax: 64searchFlags: 1lDAPDisplayName: contosoEmpShoesystemOnly: FALSEdn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1-# Classesdn: CN=contosoUser,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: classSchemacn: contosoUsergovernsID: 1.2.840.113556.1.8000.9999.1.1mayContain: contosoEmpShoerDNAttID: cnadminDisplayName: contosoUseradminDescription: contosoUserobjectClassCategory: 3lDAPDisplayName: contosoUsername: contosoUsersystemOnly: FALSEdn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1-dn: CN=User,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemamodifyadd: auxiliaryClassauxiliaryClass: contosoUser-dn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1 生成 .ldif 文件后,您需要在實(shí)驗(yàn)環(huán)境中對實(shí)施進(jìn)行全面的測試、驗(yàn)證域和林的端對端復(fù)制情況,還需要在林中啟用架構(gòu)更新。此時(shí),應(yīng)以具有“架構(gòu)管理員”權(quán)限的帳戶身份登錄。您可能希望禁用架構(gòu)主機(jī)(將在其中執(zhí)行變更)上的出站復(fù)制,然后再運(yùn)行以下命令來導(dǎo)入 .ldif 文件: ?ldifde –i –f <Path>\contosoUser.ldif –b<username> <domain> <password> -k –j. –c"CN=schema,CN=Configuration,DC=X"#schemaNamingContext 變更發(fā)生后,啟用架構(gòu)主機(jī)上的出站復(fù)制并驗(yàn)證所有域控制器都已執(zhí)行復(fù)制操作。 來一次深呼吸——大功告成啦!您已在架構(gòu)中定義了一個(gè)新屬性,它將與使用用戶類(即用戶帳戶)創(chuàng)建的對象相關(guān)聯(lián)。 要驗(yàn)證變更,請打開 Active Directory 用戶和計(jì)算機(jī),連接到 employees.contoso.com 域,瀏覽到用戶組織單元 (OU),創(chuàng)建一個(gè)名為 ContosoTestUser 的新用戶帳戶。現(xiàn)在,打開 adsiedit.msc 控制臺并連接到域分區(qū) dc=employees,dc=contoso,dc=com,展開用戶組織單元,右鍵單擊 ContosoTestUser,打開“Properties”(屬性)頁面。瀏覽查找 contosoEmpShoe 屬性。可編輯此屬性以輸入一個(gè)值。也可使用 Ldp.exe 實(shí)用工具來驗(yàn)證和修改屬性。 現(xiàn)在讓我們來看一個(gè)定義和鏈接兩個(gè)屬性的示例,假設(shè) Contoso 非常看重員工的鞋碼并希望能通過某種方式跟蹤公司中負(fù)責(zé)測量鞋碼的員工的年度表現(xiàn)。這聽起來可能有點(diǎn)好笑,但讓我們進(jìn)一步假設(shè),Contoso 不僅希望跟蹤負(fù)責(zé)測量員工鞋碼的人員,還希望跟蹤他們測量了哪些人的鞋碼以及總?cè)藬?shù)(所有這些都通過查詢一個(gè)屬性來完成)。(您可能會(huì)認(rèn)為此數(shù)據(jù)更適合存儲在數(shù)據(jù)庫表中,但此處只是為了解釋前向鏈接和后向鏈接的工作機(jī)制)。 當(dāng)然,您會(huì)首先執(zhí)行我在先前的示例中提到過的相同類型的分析。但是,在此我們要繼續(xù)生成 .ldif 文件 linkids1.ldif 和 linkids2.ldif(如圖 6 所示)。然后運(yùn)行以下命令來導(dǎo)入 .ldif 文件: ?Figure?6?前向鏈接和后向鏈接 .ldif 文件 ? #linkids1.ldif#Attribute definition for Forward Link Attributedn: CN=ContosoShoeSizeTaker,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: attributeSchemacn: ContosoShoeSizeTakerattributeID: 1.2.840.113556.1.8000.9999.2.2LinkID: 1.2.840.113556.1.2.50attributeSyntax: 2.5.5.1isSingleValued: TRUEadminDisplayName: ContosoShoeSizeTakeradminDescription: ContosoShoeSizeTakeroMSyntax: 64searchFlags: 1lDAPDisplayName: ContosoShoeSizeTakersystemOnly: FALSEdn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1-#Reload schema#linkids2.ldif#Attribute definition for Backward Link Attributedn: CN=ContosoShoeSizesTakenByMe,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: attributeSchemacn: ContosoShoeSizesTakenByMeattributeID: 1.2.840.113556.1.8000.9999.2.3LinkID: 1.2.840.113556.8000.9999.2.2attributeSyntax: 2.5.5.1isSingleValued: FALSEadminDisplayName: ContosoShoeSizesTakenByMeadminDescription: ContosoShoeSizesTakenByMeoMSyntax: 64searchFlags: 1lDAPDisplayName: ContosoShoeSizesTakenByMesystemOnly: FALSEdn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1-#Add ContosoShoeSizeTaker and ContosoShoeSizesTakenByMe Attribute as MayContain in #contosoUser classdn: CN= contosoUser,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemamodifyadd: mayContainmayContain: ContosoShoeSizeTakermayContain: ContosoShoeSizesTakenByMedn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1-#Add Backward Link Attribute as MayContain in Topdn: CN=Top,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemamodifyadd: mayContainmayContain: ContosoShoeSizesTakenByMedn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1 ?ldifde –i –f <Path>\linkedids<>.ldif –b<username> <domain> <password> -k –j. –c"CN=schema,CN=Configuration,DC=X"#schemaNamingContext 在創(chuàng)建完用戶對象后,它還會(huì)使 ContosoShoeSizeTaker 和 ContosoShoeSizesTakenByMe 作為其屬性。當(dāng)為某個(gè)人員(比如 John)創(chuàng)建用戶對象時(shí),ContosoShoeSizeTaker 屬性將被填寫為測量鞋碼人員(即名為 Frank 的人員)的 DN。現(xiàn)在轉(zhuǎn)到 Frank 的用戶對象屬性并查詢 ContosoShoeSizesTakenByMe 屬性,結(jié)果將包含 John 的以及 Frank 所測量的所有其他人的 DN。在我們方案的最后,管理層會(huì)根據(jù) Frank 用戶帳戶的 ContosoShoeSizesTakenByMe 屬性中存在的 DN 總數(shù)來獎(jiǎng)勵(lì)他。
系統(tǒng)檢查和平衡 如果沒有對體系結(jié)構(gòu)需求的檢查,將無法執(zhí)行關(guān)鍵更新(如架構(gòu)修改)。通過這些一致性檢查和安全檢查,Active Directory 可以驗(yàn)證無論何時(shí)對 Active Directory 執(zhí)行添加或修改操作,這些變更都不會(huì)導(dǎo)致任何不一致情況或其他問題。 首先,每個(gè)類的 governsID 值在架構(gòu)內(nèi)必須唯一。在定義 schemaClass 對象時(shí),在 systemMayContain、mayContain、systemMustContain 和 mustContain 列表中定義的所有屬性必須都已經(jīng)存在。同時(shí),在 subClassOf、systemAuxiliaryClass、auxiliaryClass、systemPossSuperiors 和 possSuperiors 列表中定義的所有類也必須都已經(jīng)存在。 并且,systemAuxiliaryClass 和 auxiliaryClass 列表中的所有類的 objectClassCategory 必須為 88 類或 Auxiliary 類。類似地,systemPossSuperiors 和 possSuperiors 列表中的所有類的 objectClassCategory 也必須被指定為 88 類或 Structural 類。 在定義各種類時(shí),Abstract 類只能從其他 Abstract 類繼承,Auxiliary 類無法從 Structural 類繼承,而 Structural 類也無法從 Auxiliary 類繼承。此外,在 rDNAttID 屬性中指定的屬性必須使用 Unicode 字符串作為其語法并且必須為單值。 這些是與 classSchema 對象相關(guān)的一些規(guī)則。那 attributeSchema 對象的規(guī)則呢?與類的 governsID 值一樣,attributeID 的值也必須唯一。同樣,mAPIID(如果有)的值也必須唯一。并且,如果存在 rangeLower 和 rangeUpper,rangeLower 必須小于 rangeUpper。attributeSyntax 和 oMSyntax 的值必須匹配。如果屬性為對象型語法 (oMSyntax =127),它必須具有正確的 oMObjectClass。linkID(如果有)必須唯一。此外,后向鏈接必須有一個(gè)對應(yīng)的前向鏈接。
如果出了差錯(cuò)該怎么辦? 使用新對象(類和屬性)對架構(gòu)進(jìn)行擴(kuò)展后,這些新對象將無法再刪除。但是,可通過將架構(gòu)對象的屬性 isDefunct 設(shè)為 TRUE 來取消激活類或?qū)傩浴2贿^對于隨 Active Directory 一同提供的作為默認(rèn)架構(gòu)一部分的架構(gòu)對象(“類別 1”對象),將無法取消激活它們。您只能取消激活被添加到默認(rèn)架構(gòu)中的對象;即,只有“類別 2”對象能被禁用,并且必須要經(jīng)過 Active Directory 驗(yàn)證,確認(rèn)該類未用于任何現(xiàn)有非無效類的 subClassOf、auxiliaryClass 或 possSuperiors 列表中。 如果試圖將某個(gè)屬性設(shè)為無效,Active Directory 會(huì)檢查以確認(rèn)任何現(xiàn)有非無效類的 mustContain 或 mayContain 中都未使用該屬性。可通過將屬性 isDefunct 設(shè)為 FALSE 來恢復(fù)被禁用的對象。如果您的 Active Directory 是在 Windows Server 2003 級別,則可重用被禁用對象的 ldapDisplayName、schemaIdGuid、OID 和 mapiID 值。
總結(jié) 在架構(gòu)中添加或修改類或?qū)傩远x涉及到添加或修改對應(yīng)的 classSchema 對象或 attributeSchema 對象。此過程類似于在 Active Directory 中添加或修改任意對象,不同之處在于需要執(zhí)行額外的檢查來確保變更在今后不會(huì)在架構(gòu)中導(dǎo)致不一致情況或其他問題。 盡管修改 Active Directory 架構(gòu)非常簡單,但必須要了解架構(gòu)的構(gòu)成以及它是如何實(shí)施這些變更的。對生產(chǎn)型 Active Directory 架構(gòu)進(jìn)行任何變更前都需要進(jìn)行周密的規(guī)劃,并且執(zhí)行時(shí)務(wù)必要小心謹(jǐn)慎。對新對象而言,為其定義業(yè)務(wù)需求和技術(shù)規(guī)范并執(zhí)行大量的實(shí)驗(yàn)室測試至關(guān)重要。由于變更可能會(huì)產(chǎn)生深遠(yuǎn)的影響,因此建議只有在絕對必要的情況下才擴(kuò)展 Active Directory 架構(gòu)。
Vikas Malhotra 就職于紐約的 Microsoft Consulting Services。在 12 年的職業(yè)生涯中,他曾與許多大型和中型企業(yè)的 IT 組織一起工作,研究他們的基礎(chǔ)設(shè)施體系結(jié)構(gòu)需求(如目錄、消息傳遞、安全性以及數(shù)據(jù)聯(lián)網(wǎng)等)。他擁有電子和電信工程學(xué)學(xué)士學(xué)位以及電信(技術(shù))管理理學(xué)碩士學(xué)位。可通過電子郵件 vikasmal@microsoft.com 與他聯(lián)系。

總結(jié)

以上是生活随笔為你收集整理的扩展活动目录构架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。