カリスマITトレーナーが見てきたActive Directory 15年の変遷過去、現在、そして未来へ! AD進化の歴史を振り返る(2/4 ページ)

» 2015年05月22日 05時00分 公開
[横山哲也グローバルナレッジネットワーク株式会社]

洗練されたActive Directory――Windows Server 2003

 2003年に発売されたWindows Server 2003では、Active Directoryの制約の多くが撤廃され、かなり使いやすくなった。特に、Service Pack1(SP1)によってセキュリティ対策が進み、製品の完成度も向上した。

 もともとWindows 2000 ServerのActive Directoryは、Windows NTドメインに比べればずいぶんと自由になっている。例えば、Windows NTではドメインコントローラーか非ドメインコントローラーかはインストール時に決定し、後から変更する場合にはOSの再インストールが必要だった。Active Directoryは「Active Directoryのインストールウィザード」を使うことで、ドメインコントローラーの昇格/降格が自由に行える(再起動は必要)。

 それでも現在のActive Directoryに比べると、Windows 2000 Serverには以下のような制約があり、不便な思いをしたものだ。

  • DCのホスト名変更ができない
  • ドメイン名を変更できない
  • サイト数が20を超えるとデータベースの複製が事実上機能しない
  • データベーススキーマを変更するとグローバルカタログ(GC)の再構成が発生する
  • 低速回線で結ばれた地域にDCを追加するには時間がかかる
  • 管理ツールが使いにくい

 最後の「管理ツール」を除けば、各種制約の撤廃や規模の拡大、ネットワーク回線の制約の撤廃など、いずれもディレクトリサービスの基本的な機能の強化である。Windows Server 2003のActive Directoryは、いわば「バージョン2」であり、基本機能の完成度を上げてきたのが大きな特徴だった。

ドメインコントローラー名の変更

 Windows 2000 Serverでは、ドメインコントローラーのホスト名を変更できなかったが、Windows Server 2003からは容易に変更できるようになった。クライアントとの通信を考慮し、新旧二つのホスト名を一時的に共存させる方法が推奨されているが、実際には一般的なホスト名変更の手順が利用できる。

ドメイン名の変更

 Windows Server 2003では、ドメイン名を変更するための「RENDOM」というツールが提供されている。一般的なドメイン名の変更手順は、以下の通りである。

  1. 現在のドメイン構造をXMLファイルに出力する
  2. XMLファイルを修正する
  3. 修正したXMLファイルを使ってドメイン構造を変更する

 RENDOMはドメイン名の変更だけでなく、フォレストルート(Active Directoryのトップドメイン)以外のドメイン階層の付け替えもできる(図4)。ただし、複数ドメインの統合や分離はできない。

図4 図4 RENDOMツールの利用例。ドメイン名の変更だけでなく、ドメイン階層の付け替えも可能

 RENDOMの利用には、細かい手順までを含めると20以上のステップが必要となる。各ステップは前のステップが完了して他の全DCに複製される必要があるため、時間も手間もかかる。ドメインを新規作成して移行した方が早いこともあるくらいだ。RENDOMの基本機能は現在も大きくは変化していないため、ドメイン名の設定は慎重に行いたい。

サイト間複アルゴリズムの改善

 「サイト」は、Active Directory情報の複製を制御する単位である。また、クライアントは同一サイト内のドメインコントローラーを優先的に使用してログオンする。

 Windows 2000 ServerのActive Directoryは、サイト間複製のアルゴリズムの問題で、サイト数が20を超えると実用的な時間で複製が完了しないというトラブルがあった(図5)。そのため、大量のサイトを利用する環境では手動で複製を行う必要があったが、もちろんそれは面倒である。

図5 図5 サイト間接続の最適解の発見。サイト数が多いと最適な複製パスを見つけるのに時間がかかる

 Windows Server 2003ではサイト間複製のアルゴリズムが改善され、大量のサイトがあっても問題なく利用できるようになった。ただし、異なるサイト管理アルゴリズムが混在することはできない。そこで、全ドメインコントローラーがWindows Server 2003以上であることを保証するために、「フォレスト機能レベル」がWindows Server 2003以上のときのみ利用できるようになっている。機能レベルは互換性を維持するための設定で、管理者が明示的に指定する。

 組み合わせを列挙するプログラムは、爆発的に計算量が増えることがしばしばある。これを防ぐための理論は昔から詳しく研究されている。中には実用時間で最適解を求められないことが分かっている問題もあるが、そのような場合に近似解を求める研究も盛んである。日本では計算量の概念を知らないプログラマーが多いことが問題になっているが、米国でも事情はそう変わらないのかもしれない。

 なお、新しいアルゴリズムは、フォレスト機能レベルを上げると自動的に使用される。Windows Server 2012以降はフォレスト機能レベルとしてWindows Server 2003以上しかサポートしないので、現在は全く問題が起きない。

グローバルカタログ(GC)の再構成の改善

 Windows 2000 Serverでは、Active Directoryのデータベーススキーマを変更すると「グローバルカタログ(GC)」と呼ばれるデータベースの再構成が発生する。GCは複数ドメインを構成している場合、他のドメインの情報を高速に検索できるようにするため、よく使う情報だけを複製したものである。

 GCの再構成はネットワークトラックに大きな影響を与えるため、Exchange ServerなどActive Directoryのデータベーススキーマを変更するようなアプリケーションをインストールする場合は、ネットワーク負荷の低い時間帯に事前準備をしておく必要があった。

 Windows Server 2003からはフォレスト機能レベルがWindows Server 2003以上の場合、GCの再構築が起きないため、事前準備の必要がなくなった。先と同様の理由で、Windows Server 2012では全く問題にならない。

メディアからのインストール(IFM)

 低速回線で結ばれた地域にDCを追加するのには時間がかかる。そこで、まずは同一LAN上で新しいDCを作り、そのサーバーを現地に搬送して、ネットワーク情報などを変更することが実際に行われていた。

 Windows Server 2003からは既存のDCの情報をファイルに保存しておき、ディレクトリデータベースの初期構成をファイル(メディア)から行えるようになった。これを「IFM(インストールフロムメディア)」と呼ぶ(図6)。

図6 図6 「IFM(インストールフロムメディア)」によって、既存のDCの初期構成をファイル(メディア)から行えるようになった

 ただし、IFMを利用するには保存時に使ったWindows Serverのバージョンと、追加するDCのバージョンが一致していなければならない。例えば、Windows Server 2003で取得したファイルをWindows Server 2008の初期値として使うことはできない。また、メディアから読み取った初期情報と最新情報の差分は必ずネットワーク経由で入手しなければならないため、ネットワークトラフィックをゼロにすることはできない(新しいメディアを使う方がネットワークトラフィックを節約できる)。

管理ツールの強化

 管理ツールで、ユーザーやコンピューターのドラッグ&ドロップができるようになったのもWindows Server 2003からである。ただし、手が滑ってどこか分からない所に落としてしまう人が多かったのだろうか、Windows Server 2008からはドロップ時に確認を求めるダイアログボックスが表示されるようになった。この確認ダイアログボックスは「次回から表示しない」ようにすることも可能だが、設定を保持することができず、新たに管理ツールを起動すると再び確認を求めてくる。

 Windows Server 2003では、コマンドラインツールも強化された。定型的な処理を効率よく行うには、コマンドの方が圧倒的に便利である。そこで、Windows Server 2003ではActive Directoryに限らず、多くのところでコマンド機能が強化された。Active Directoryの場合、「DS」で始まる以下のコマンド群が追加されている。

  • dsadd:オブジェクトの追加
  • dsmove:オブジェクトの移動
  • dsrm:オブジェクトの削除
  • dsquery:オブジェクトの検索
  • dsget:オブジェクトの属性取得
  • dsmod:オブジェクトの属性変更

 これらのコマンドは「コマンドプロンプト(CMD)」のパイプ利用を前提としており、Windowsのツールとしては異色のコマンドであった。例えば、営業部グループ「Sales」に所属するユーザーの電子メールアドレス一覧を取得する場合は、以下のコマンドを実行すればよい。

dsquery group -samid sales |dsget group -members | dsget user -email


 DSコマンドは現在も使えるが、Windows Server 2008で導入された「Windows PowerShell」にその役割を譲っており、今後の拡張はないと思われる。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。