スキーマ拡張作業の基礎 - その1 - 事前知識: スキーマとは

 

みなさん、こんにちは

Windows Active Directory & Network 担当 村木ゆりかです。

Windows Server 2003 もサポート上、延長サポートのフェーズにも入り, Windows Server 2008, Windows Server 2008 R2 ドメインへ移行されるお客様も多いのではないでしょうか。

ドメイン・フォレストの拡張や、アプリケーション (Exchange, SC Configuration Manager など) を導入される際など、Active Directoryスキーマ拡張を実施される機会があるかと思います。

これから複数回にわたって、スキーマ拡張に際して、一般的な Active Directory 側の作業や影響、よくあるお問い合わせなどをご紹介していきたいとおもいます。

簡単な内容ではありますが、各種スキーマ拡張の作業を実施される際は、ドメインに対する一般的で基礎的な作業ノウハウとして、ぜひご一読いただけますと幸いです。

* 今回は、Windows Server 2008 での作業画面を元にご説明を進めます。

 

今回は、まずは作業の前提となる知識、スキーマについて簡単にご説明します。すでにご存知の方も多い内容かと思いますが、AD 運用がはじめての方もいらっしゃるかと思いますので、まずはおさらいをかねてご説明したいと思います。

 

 

[1] 事前知識: スキーマとは

スキーマ拡張作業の話の前に、そもそも、Active Directory におけるスキーマとはいったい何か、拡張とは何か、スキーマの確認のしかたなど、基本事項について、おさらいを兼ねてご説明します。

 

(1-A) スキーマとは?

Active Directory では「オブジェクト」単位で情報が格納されています。ユーザや、コンピュータなどがそれぞれ「オブジェクト」として管理されています。

スキーマとは、オブジェクトとオブジェクトに設定される属性はどういうものであるかを定義した雛形のような情報です。たとえば、そのオブジェクトに格納できるデータの種類やデータ構文などを定義しています。

たとえば、ユーザを作成するときは User クラスのスキーマから雛形を取得し、その雛形に情報を入力してユーザオブジェクトをつくります。

Userクラス

User オブジェクト

識別名

構文 (データ型)

範囲

属性名

DisplayName

Unicode 文字列

0-256

DisplayName

John

AccountExpires

大きい整数/間隔

AccountExpires

2010/09/05 0:00:00

PwdLastSet

大きい整数/間隔

PwdLastSet

2010/06/09 17:30:33

Mail

Unicode 文字列

0-256

Mail

空白

:

:

:

:

:

 
スキーマの格納箇所

Active Directory では、論理的にいくつかの 「パーティション」と呼ばれる領域に分けて情報を格納しています。スキーマはスキーマパーティションと呼ばれる領域に格納されています。

スキーマはフォレストで共通した情報です。具体的には、スキーマパーティションは、フォレスト内すべてのドメインのすべてのドメインコントローラが同じ情報を共有しています。

このため、ひとつのフォレスト内で、異なったスキーマパーティションの情報を持つことはできません。

 

スキーマのバージョン

現在どのスキーマのバージョンとなっているかは、CN=Schema,CN=Configuration,DC= <フォレストのルートドメインのドメインDN> にある ObjectVersion  において確認できます。

後述しますスキーマを確認する方法のADSI エディタなどで、上記の DN 名を展開してバージョンを確認してください

 

 

(1-B) スキーマ拡張とは?

スキーマ拡張の必要性

一般的に「スキーマ拡張」 とは、Active Directory の スキーマに対して、変更を加えることをいいます。 具体的には、スキーマに新たなクラスや属性を作成したり、既存の属性をクラスに追加したりする作業のことをいいます。

先に述べたとおり、オブジェクトは Active Directory に格納されているスキーマを雛形として作成されます。このため、オブジェクトに雛形には存在しない属性が必要な場合は、スキーマを変更する必要があるのです。

一般的には以下のようなシナリオでスキーマ拡張が必要となります。

・ Active Directoryをアップグレードする際

現在のドメインに存在するドメイン コントローラの OS よりも新しい OS を搭載したサーバーをドメインコントローラに昇格する際は、ドメインおよびフォレストのスキーマ拡張が必要となります。

・アプリケーションを利用する際

Active Directory と統合されていたり、 Active Directory の情報を利用するアプリケーションなどでは、アプリケーションが利用するオブジェクトや属性を追加するために、スキーマ拡張が必要な場合があります。

弊社製品ですと、Exchange サーバやSCCMなどでそれに該当します。

 

スキーマ拡張の方法

実際のスキーマ拡張方法は、それぞれの目的によって異なるため、今回はご説明は割愛させていただきますが、

有名どころで言えば、たとえば、Active Directory をアップグレードする場合のスキーマ拡張は adprep.exe というプログラムを Windows OS にて用意しており、このプログラムを実施することで簡単にスキーマを拡張していただけるようになっています。

また、スキーマ拡張をおこなうアプリケーションなどでも類似のプログラムやスクリプトを用意していることが多いです。

そのほか、ご運用にあわせてカスタマイズしたい場合には、後述しますスキーマスナップインを使って GUI 上から変更したり、拡張内容をファイルに記載して、LDIFDE.exe などを使用して読み込みを実施してスキーマに加える方法などもあります。

 

スキーママスタ

スキーマへの変更は、重要な更新であるため、複数のドメインコントローラで同時に更新が発生してしまうと、変更の競合が起きてしまう恐れがあります。このため、スキーマへの変更はスキーママスタの役割をもつドメインコントローラだけで実施されます。スキーママスタと呼ばれる FSMO 役割をもつドメインコントローラで拡張されます。

補足: どのドメインコントローラからも作業自体は可能ですが、スキーマへの実際の変更は、スキーママスタ上で実施されますので、スキーママスタへの通信ができる状態であることが必要です。

 

 

(1-C) スキーマの確認のしかた

スキーマパーティションの情報領域を確認することで、スキーマの情報を確認することができます。確認するツールは、いくつか用意されています。

ご要件に併せて、ご利用してみてください。

 

スキーマ スナップイン

MMC 管理コンソールのひとつである [Active Directory スキーマ] スナップインを使用することで、GUI 上にて Active Directory のスキーマを管理することが出来ます。

clip_image001

 

- 手順

まず、スキーマ管理をするにあたり必要な Schmmgmt.dll ファイルを、登録します。

(すでに登録されている場合はこの手順は不要です)

1. [スタート] から 検索ボックスに以下を入力し [OK] をクリックします。

regsvr32 schmmgmt.dll

2. 登録が正常に行われると、ダイアログ ボックスに "DllRegisterServer in schmmgmt.dll succeeded" と表示されます。

次に、Microsoft Management Console を使用して Active Directory スキーマ スナップインを開きます。

1. [スタート] から検索ボックスに、mmc と入力して、[OK] をクリックします。

2. [ファイル] - [スナップインの追加と削除] をクリックします。

3. 利用できるスナップインの項目から [Active Directory スキーマ] を選択し、 [追加] をクリックします。

4.[OK] をクリックして [スタンドアロン スナップインの追加] ダイアログ ボックスを閉じます。

* 補足:スキーマ マスタは、[スキーマ マスタの変更] ダイアログ ボックスの [現在のスキーマ マスタ] に表示されます。
* 補足: スキーマの変更をするためには、[Active Directory スキーマ] ノードを右クリックして、[操作マスタ] をクリックし [このドメイン コントローラでスキーマの修正が可能] チェック ボックスをオンにします。

 

ADSI エディター (ADSIedit.msc)

ADSI エディターを利用することで、Active Directory の情報を確認することができます。

スキーマ 情報もこのツールにても確認できます。

- 手順

1. [スタート] から検索ボックスに Adsiedit.msc とタイプしてADSI エディターを開きます

2. ADSI エディタ を右クリックし接続をクリックします。

3. 接続の設定ダイアログが開きます。

接続ポイントに [既知の名前付けコンテキストを選択する] から [スキーマ] を選択し、 [OK] をクリックします。

clip_image002

 
LDIFDE ツール (LDIFDE.exe)

LDIFDE.exe を利用することで、テキストファイルなどにスキーマの情報を出力し確認を行うことができます。

- 手順

1. コマンドプロンプトを開きます。

2. 以下のコマンドを実行します。

ldifde -f <出力ファイル名> -s <ドメインコントローラ名> -d "CN=Schema,CN=Configuration,DC=<ドメインDN名>" -p subtree

(例) TEST.COM の DC01 というドメインコントローラ上の情報を test.txt に出力し確認するには、以下のように入力します。

ldifde -f list.txt -s DC01.test.com -d "CN=Schema,CN=Configuration,DC=test,dc=com" -p subtree

3. 出力されたファイルを確認します。

 

 

さて、これで、スキーマに関する基礎知識を整理できたかと思います。

次回は実際のスキーマ拡張作業における概要や注意点をご説明したいと思います。

「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」