画面1●Windows Server 2012で強化された「Active Directory 管理センター」
画面1●Windows Server 2012で強化された「Active Directory 管理センター」
[画像のクリックで拡大表示]

 「Active Directoryドメインサービス(AD DS)」は、ディレクトリサービスによってユーザー認証基盤を提供する、Windows Serverの中枢機能である。Windows 2000から数えて6世代目となるWindows Server 2012のAD DSの主な改良点は、仮想化環境への対応、迅速なドメインコントローラーの展開、管理ツールである「Active Directory管理センター」のパワーアップなどがある(画面1)。

 Windows Server 2012におけるActive Directoryの新機能と強化点は表2のとおり。

表2●Active Directoryの新機能と強化点
表2●Active Directoryの新機能と強化点
[画像のクリックで拡大表示]

安全なDC仮想化

 これまで、ドメインコントローラー(Domain Controller:DC)を仮想化環境上で実行すると、以下のような問題が発生する可能性があることから、仮想化環境上でのDCの実行は積極的には推奨されていなかった。どうしてもDCを仮想環境上で実行したければ、基本的に仮想化環境のメリットであるスナップショット、エクスポートとインポート、仮想マシンや仮想ディスクの複製、差分ディスクの利用、仮想化ホストとの時刻同期といった便利な機能を一切利用せず、Active Directoryに対応したバックアップと復元の仕組みのみを利用することが条件だった。

【問題1】
 スナップショットの復元時にディレクトリデータベースの「更新シーケンス番号(USN)」がロールバック(若返り)し、オブジェクトの不整合や複製エラーが発生する。この問題を解決するには、USNがロールバックしたDCを強制的に降格して、メタデータをクリーンアップする必要がある。

【問題2】
GUID(Globally Unique Identifier:グローバル一意識別子)が退行したり、重複したGUIDでオブジェクトが作成されたりする。この問題を解決するには、重複したオブジェクトを探して手動で削除する。

【問題3】
仮想マシンの時刻がPDC(プライマリドメインコントローラー)エミュレータと5 分以上ずれることで、Kerberos認証ができなくなる。この問題を解決するには、仮想化環境のホストとは異なるタイムソース、例えば物理サーバー上で実行するDCをタイムソースに指定する。

 Windows Server 2012のHyper-V環境では、仮想マシンごとに割り当てられた128ビットの「Generation ID」を使って上記の「問題1」と「問題2」を解決している。具体的には、バックアップやスナップショットからの復元時、仮想マシンのコピーやインポート、クローニング時などにGeneration IDが変化するので、以前と値が異なっていればロールバックが発生したものと見なし、次の操作を自動的に実行してディレクトリデータベースを自己修復する。

◎「invocationID」(ディレクトリデータベースのID)をリセットして不整合を解消する
◎相対ID(RID)プールを破棄し、同じIDを持ったオブジェクトが作成されないようにする
◎他のDCのディレクトリデータベースを複製して、ディレクトリデータベースをロールフォワードする

 この仕組みによって、Hyper-Vのスナップショットやエクスポート/インポート機能などが安全に利用できるようになり、DCの運用管理が非常に楽になる。また、バックアップや復元のためのダウンタイムも最小化することができるので、サービスレベルも向上する。

 ところで、Generation IDをサポートしていない旧式の仮想化環境において、DCを仮想化する際には次の点に注意しよう。

◎仮想ディスクファイルの盗難、誤消去、不用意なコピーに十分注意する
◎仮想マシンをエクスポート/インポートしない
◎仮想マシンを長期間オフライン状態にしない
◎差分ディスク機能とスナップショット機能を使用しない
◎ Windowsがサポートしている復元方法以外で復元しない
◎仮想化環境が単一障害点(SPOF)になることを避ける
◎タイムソースとして、物理サーバーのDCを1台以上用意する

 ここで、仮想マシンのオフライン状態について、少し説明しておこう。ディレクトリデータベースには、オブジェクトの有効期間を決定する「tombstoneLifetime」という設定値があり、基本的に「180日」に設定されている。tombstoneLifetimeの値を超えてオフライン状態に置かれたDCでは、ディレクトリデータベースの内容が古すぎて使えなくなってしまう。DCの古すぎるバックアップからの単純な復元が許されないのも同じ理由だ。

画面2●tombstoneLifeTimeの設定値は、Dsqueryコマンドで確認できる
画面2●tombstoneLifeTimeの設定値は、Dsqueryコマンドで確認できる
[画像のクリックで拡大表示]

 また、Active Directoryの「ごみ箱」機能を利用している ディレクトリデータベースの“ 消費期限”、つまりtombstoneLifeTimeの設定値は次のコマンドで知ることができる(画面2)。

Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=<ドメイン名>" -scope base -attr tombstoneLifeTime

 tombstoneLifeTimeオブジェクトが見つからない場合は、システムの既定値が採用される。

 システムの既定値は、Windows Server 2003までは「60日」と「180日」の2つが混在しているが、Windows Server 2008以降では「180日」に統一されている。とはいえ、旧バージョンのWindows Serverからアップグレードした場合は「60日」の設定を継承している可能性があるので、設定値をしっかりと確認しておこう。