Active Directory

Active Directory スキーマをエクスポート、比較、および同期する

John Policelli

概要:

  • LDIFDE を使用してソース フォレストのスキーマをエクスポートする
  • Active Directory DS/LDS スキーマ アナライザを使用してスキーマを比較する
  • ターゲット フォレストにスキーマをインポートする

目次

ソース フォレストのスキーマをエクスポートする
Active Directory スキーマを比較する
存在しない要素を含む LDIF ファイルを作成する
ターゲット フォレストにスキーマをインポートする
まとめ

各 Active Directory フォレストには、Active Directory ディレクトリ サービスでデータの格納に使用するオブジェクトや属性を定義している独自のスキーマがあります。組織で複数の Active Directory フォレストを使用している場合、IT 管理者は複数の Active Directory スキーマを管理する必要があります。複数のフォレストを管理するには、スキーマ間の整合性を保つことが必要不可欠です。この記事では、複数の Active Directory スキーマを管理するための合理的な手順を詳しく説明します。

スキーマの同期と比較に関する柔軟性

この記事で紹介する手順の最大のメリットは、この手順が Active Directory スキーマの管理に限定されていないことです。この手順は、Active Directory、ADAM (Active Directory Application Mode)、および AD LDS ディレクトリ間でスキーマを同期する際にも使用できます。スキーマの同期は、次のディレクトリ間で実行できます。

  • Active Directory と Active Directory
  • ADAM と ADAM
  • AD LDS と AD LDS
  • Active Directory と ADAM
  • Active Directory と AD LDS
  • AD LDS と ADAM

この手順は、Active Directory、ADAM、および AD LDS ディレクトリ間でスキーマを比較する際にも使用できます。スキーマの比較は、次のディレクトリ間で実行できます。

  • Active Directory と Active Directory
  • ADAM と ADAM
  • AD LDS と AD LDS
  • Active Directory と ADAM
  • Active Directory と AD LDS
  • AD LDS と ADAM
  • Active Directory と LDIF ファイル
  • ADAM と LDIF ファイル
  • AD LDS と LDIF ファイル

組織では、さまざまな業務上または技術的な理由から、複数の Active Directory フォレストを展開して運用することがあります。また、Active Directory フォレストを展開して運用を開始して、随分たってから、追加のフォレストを展開することがあります。場合によっては、数年後に追加のフォレストを展開することもあります。

Active Directory が誕生してから約 10 年になります。その間に、組織では、運用中のフォレストのスキーマに、さまざまな変更が加えられていることでしょう。このようなフォレストの変更内容を特定するのは、至難の業です。また、運用中のフォレストで以前に加えられたスキーマの変更が新しいテスト フォレストで同様に加えられるようにすることは、さらに困難です。

この記事では、認証と承認に Active Directory を使用するアプリケーションのテストを行うエンド ユーザーが使用するユーザー承認テスト (UAT) 用の新しい Active Directory フォレストを展開するシナリオを紹介します。運用中の Active Directory スキーマには 5 つのカスタム属性があり、運用中のソース フォレストのスキーマと UAT 用の新しいターゲット フォレスト間のスキーマに整合性を持たせる必要があります。

この記事で紹介する手順を使用して複数のスキーマの管理を合理化できるシナリオは多数あります。詳細については、補足記事「スキーマの同期と比較に関する柔軟性」を参照してください。

ソース フォレストのスキーマをエクスポートする

まず、ソース フォレストのスキーマをエクスポートします。この手順は、後で、ソース フォレストのスキーマとターゲット フォレストのスキーマを比較して、同期する必要がある属性とクラスを特定できるようにするのに必要です。

ソース フォレストのスキーマをエクスポートするには、LDIFDE コマンド ライン ツールを使用できます (このツールは、Windows Server 2003 と Windows Server 2008 に同梱されています)。このツールでは、LDAP データ交換形式 (LDIF) でフォーマットされたファイルが作成されます。ソース フォレストのスキーマをエクスポートするのに特別な権限は必要ないので、ドメイン ユーザーであれば、この手順を実行できます。

ソース フォレストのスキーマをエクスポートするには、次の操作を実行します。

  1. メンバ サーバーまたはドメイン コントローラにログオンします。

  2. コマンド プロンプトを起動します。

  3. コマンド プロンプトで、次のコマンドを入力します。

    ldifde -f PRODSchema.ldif -d CN=Schema,CN=Configuration,DC=WS08DOMAIN01,DC=local
    
  4. Enter キーを押します。

上記コマンドを実行したときの出力結果を図 1 に示します。

fig01.gif

図 1 ソース フォレストのスキーマをエクスポート

このコマンドの -f PRODSchema.ldif パラメータでは、LDIFDE ツールに対して、出力を PRODSchema.ldif という名前のファイルに書き込むように指示しています。また、-d CN=Schema,CN=Configuration,DC=WS03DOMAIN01,DC=local パラメータでは、LDAP 検索のルートに指定のスキーマ パーティションを使用するように指示しています。このコマンドを実行する際には、コマンドの "DC=WS08DOMAIN01,DC=local" という部分は、ソース フォレストのフォレスト ルート ドメインの識別名に置き換える必要があります。

fig02.gif

図 2 [ターゲット スキーマの読み込み] ウィンドウ

Active Directory スキーマを比較する

ソース フォレストのスキーマをエクスポートしたら、今度は、ターゲット フォレストのスキーマと比較できます。フォレストのスキーマを比較すると、ソース フォレストにのみ存在し、ターゲット フォレストに存在しない属性やクラスを特定できます。

Windows Server 2008 では、Active Directory ライトウェイト ディレクトリ サービスの役割をインストールすると、AD DS/LDS アナライザ ツールがインストールされます。このツールを使用すると、さまざまな方法でスキーマを比較できます。このツールは、Windows Server 2003 では、AD スキーマ アナライザと呼ばれていました。この記事の例では、Windows Server 2008 を使用しているので AD DS/LDS アナライザ ツールと呼んでいます。比較とエクスポートについては、Windows Server 2003 に同梱されているバージョンのツールでも実行できます。

ソース フォレストとターゲット フォレストの Active Directory スキーマを比較するには、次の操作を実行します。

  1. AD LDS がインストールされていて、ターゲット フォレストのドメインに参加しているメンバ サーバーまたはドメイン コントローラにログオンします。
  2. 前のセクションで作成した PRODSchema.ldif ファイルを、ログオンしたサーバーにコピーします。
  3. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、「C:\WINDOWS\ADAM\ADSchemaAnalyzer.exe」と入力します。
  4. Enter キーを押して、AD DS/LDS スキーマ アナライザを起動します。
  5. AD DS/LDS スキーマ アナライザで、[File] (ファイル) メニューの [ターゲット スキーマの読み込み] をクリックします。
  6. [ターゲット スキーマの読み込み] ウィンドウ (図 2 参照) で [LDIF の読み込み] をクリックします。
  7. LDIF ファイルがある場所に移動して、[開く] をクリックします。
  8. LDIF ファイルが AD DS/LDS スキーマ アナライザにインポートされます。
  9. [File] (ファイル) メニューの [ベース スキーマの読み込み] をクリックします。
  10. [ベース スキーマの読み込み] ウィンドウで [サーバー[:ポート]] ボックスに接続先のドメイン コントローラ名を入力し、他のボックスには、それぞれユーザー名、パスワード、ドメインを入力します (図 3 参照)。
  11. [OK] をクリックします。
  12. ターゲット フォレストに存在しない要素だけを表示するには、[Schema] (スキーマ) メニューの [存在する要素を非表示にする] をクリックします。存在しない要素は [Attributes] (属性) ノードの下に表示されます (図 5 参照)。
  13. [Attributes] (属性) ノードを展開すると、既定では、存在する要素 (属性とクラス) と存在しない要素が一覧表示されます。両方のフォレストに存在する属性は、要素名の隣にあるチェック ボックスがオンになっています (図 4 参照)。ソース フォレストにのみ存在し、ターゲット フォレストに存在しない要素の隣にあるチェック ボックスはオフになります。

fig03.gif

図 3 [ベース スキーマの読み込み] ウィンドウ

fig04.gif

図 4 存在する属性と存在しない属性が表示された状態

fig05.gif

図 5 存在しない要素のみを表示した状態

fig06.gif

図 6 ターゲット フォレストに含める要素のチェック ボックスをオンにした状態

スキーマ クラス オブジェクトのドメイン SID を処理する

ソース フォレストのスキーマが、adprep /rodcprep コマンドで読み取り専用ドメイン コントローラ (RODC) として構成されている場合、スキーマをターゲット フォレストにインポート後、追加の作業が必要になることがあります。adprep /rodcprep コマンドを実行すると、次の 3 つのスキーマ クラスの既定のセキュリティ記述子にはドメイン SID が含まれることがあります。

  • Domain-DNS
  • DMD
  • SAM-Domain

この 3 つのスキーマ クラスの既定のセキュリティ記述子には、Enterprise Read-Only Domain Controllers セキュリティ グループが含まれており、このグループにはドメイン SID が含まれていることがあります。このセキュリティ グループの SID は、<ドメインSID>-498 という形式になっています。たとえば、ドメイン SID が S-1-5-21-886666173-4210462831-1041481479 の場合、このセキュリティ グループの SID は、S-1-5-21-886666173-4210462831-1041481479-498 になります。ご想像のとおり、ソース フォレストのドメイン SID は、ターゲット フォレストのセキュリティ記述子では使用できません。

この問題の対処法は、ソース フォレストとターゲット フォレストのフォレストの機能レベル (FFL) によって異なります。

  • ターゲット フォレストの FFL が Windows Server 2008 以降の場合、問題のある SID を "RO" という文字列に置き換えることができます。
  • ソース フォレストの FFL が Windows Server 2008 で、ターゲット フォレストの FFL が Windows Server 2008 以前 (たとえば、Windows Server 2003) である場合、SDDL に含まれる RO という文字列をターゲット フォレストの Enterprise Read-Only Domain Controllers セキュリティ グループの SID に置き換える必要があります。

RO という文字列の意味が認識されるのは Windows Server 2008 を実行しているドメイン コントローラだけです。Windows Server 2003 と Windows Server 2000 Server を実行しているドメイン コントローラでは認識されません。そのため、ターゲット フォレストの全ドメイン コントローラに Windows Server 2008 がインストールされていて、今後、Windows Server 2003 や Windows 2000 Server ドメイン コントローラをフォレストに参加させる予定がない場合は、スキーマ オブジェクトの既定のセキュリティ記述子に RO という文字列を使用することをお勧めします。ターゲット フォレストに Windows Server 2003 や Windows 2000 Server を実行しているドメイン コントローラが存在し、今後も、これらの OS のドメイン コントローラをフォレストに参加させる予定がある場合は、ドメイン SID を含む Enterprise Read-Only Domain Controllers セキュリティ グループの SID を使用する必要があります。

存在しない要素を含む LDIF ファイルを作成する

Active Directory スキーマを比較し、ソース フォレストにのみ存在しターゲット フォレストに存在しない要素 (クラスと属性) を特定する作業が完了しました。今度は、この存在しない要素を含む LDIF ファイルを作成します。この新しい LDIF ファイルは、存在しない要素をターゲット スキーマにインポートするのに使用します。

AD DS/LDS スキーマ アナライザを使用して、ターゲット スキーマに存在しない要素を含む LDIF ファイルを作成するには、次の操作を実行します。

  1. 存在しない全要素を LDIF ファイルに含めるには、AD DS/LDS スキーマ アナライザで、[Schema] (スキーマ) メニューの [非存在の要素を含まれているとマークする] をクリックし、確認のメッセージ ボックスで [OK] をクリックします。LDIF ファイルに含める要素は、各要素の隣にあるチェック ボックスのオン/オフを切り替えることで制御できます。隣にあるチェック ボックスがオン (プラス記号、+) になっている要素は追加されます (図 6 参照)。
  2. AD DS/LDS スキーマ アナライザで、[File] (ファイル) メニューの [LDIF ファイルの作成] をクリックします。
  3. [LDIF ファイルの作成] ウィンドウで LDIF ファイルの保存先とファイル名を指定し、[Save] (保存) をクリックします。

ターゲット フォレストにスキーマをインポートする

最後に、Active Directory スキーマをターゲット フォレストにインポートします。ソース フォレストにのみ存在しターゲット フォレストに存在しない要素のインポートには、LDIFDE ツールを使用できます。既に説明したように、ターゲット フォレストに存在しない要素は、AD DS/LDS で作成した LDIF ファイルに含まれています。

ターゲット フォレストに Active Directory スキーマをインポートするには、Enterprise Admins グループと Schema Admins グループのメンバになっているアカウントを使用して次の操作を実行します。

  1. インフラストラクチャ マスタの操作マスタの役割がインストールされているドメイン コントローラにログオンします。

  2. コマンド プロンプトを起動します。

  3. コマンド プロンプトで次のコマンドを入力します。

    ldifde -i -f MissingElements.ldf -c dc=X 
    DC=WS08DOMAIN02,DC=net
    
  4. Enter キーを押します。

このコマンドの -i パラメータでは、LDIFDE ツールに対して、インポート処理を実行するように指示しています。-f MissingElements.ldf パラメータでは、MissingElements.ldf という名前のファイルをインポートするように指示しています。また、-c dc=X DC=WS08DOMAIN02,DC=net パラメータでは、dc=X というすべてのインスタンスを DC=WS08DOMAIN02, DC=net に置き換えるように指示しています。このコマンドを実行する際には、コマンドの "DC=WS08DOMAIN02,DC=net" という部分は、ターゲット フォレストのフォレスト ルート ドメインの識別名に置き換える必要があります。

まとめ

これでターゲット フォレストのスキーマには、不足していた要素が含まれるようになります。

Active Directory スキーマの管理は複雑な作業です。ご使用の環境で複数の Active Directory フォレストを展開している場合、その作業はさらに困難になります。しかし、この記事で紹介した手順を使用すると、複数の Active Directory スキーマの管理を合理化し、すべてのフォレストで同じスキーマを使用できるようになります。

John Policelli は、ソリューションを専門とした IT コンサルタントで、アーキテクチャ、セキュリティ、戦略計画、障害復旧計画の分野で 9 年のキャリアがあります。また、ディレクトリ サービス、MCTS、MCSA、ITSM、iNet+、Network+、A+ の Microsoft MVP 受賞者です。ここ 9 年ほどは、ID とアクセスの管理に重点を置いており、カナダで最大規模を誇るいくつかの Active Directory の実装では、思想的なリーダーシップを発揮しました。彼には policelli.com/blog (英語) から連絡を取ることができます。