Active Directoryのデータベース管理

目次

Active Directoryデータベースとは

Active Directoryデータベースは、Windows環境におけるディレクトリサービスの中核を担う情報格納システムです。

このデータベースはNTDSと呼ばれ、ドメイン内のすべてのオブジェクト情報を階層的に保管します。

NTDS
具体的には、ユーザーアカウント、コンピューターアカウント、グループ、組織単位(OU)、アクセス権限、グループポリシー設定、DNS情報などの重要なネットワークリソース情報がここに格納されています。

技術的にはESE(Extensible Storage Engine)またはJET Blue Engine技術を基盤としており、トランザクションベースのデータベースエンジンを採用しています。

ESE(別名:JET Blue Engine)
NTDSは、ESE(Extensible Storage Engine)、別名JET Blue Engineを基盤に構築されたDBです。
もともとMicrosoft Exchange Serverのために設計されたもので、Microsoft独自のDBエンジンです。
なんとWindows NT 3.51の時代から使用されていて、現在も進化を続けているというMicrosoftの重要な技術資産の一つです!

データベース内部では、オブジェクトはそれぞれ固有の識別子(GUID)を持ち、属性と値のペアの集合として表現されます。

たとえば、ユーザーオブジェクトの場合、ユーザー名、パスワードハッシュ、メールアドレス、所属部署などの情報が属性として格納されています。

Active DirectoryはLDAP(Lightweight Directory Access Protocol)に準拠しており、データベースへのクエリやデータ操作はこのプロトコルを通じて行われます。

Active Directoryデータベースは、ディレクトリパーティションと呼ばれる論理的なセクションに分割されており、主なものとしてスキーマパーティション(オブジェクトの定義情報)、構成パーティション(フォレスト全体の構成情報)、ドメインパーティション(実際のドメインオブジェクト情報)などがあります。

このデータベースはWindows Serverの中核機能として、企業の認証基盤やリソース管理の要として機能しており、適切な設計と管理が組織のIT基盤の安定性に直結します。

構造や保管場所

Active Directoryデータベースの構造は階層型の論理構造と物理ファイルの二つの側面から理解できます。

論理的には、フォレスト、ツリー、ドメイン、組織単位(OU)という階層構造で情報が整理されています。

この階層は、DNSの命名規則に沿って構成され、各オブジェクトは識別名(DN)という一意の名前で参照されます。

データベースは「パーティション」または「命名コンテキスト」と呼ばれる論理的な区分に分割されており、主要なパーティションには、すべてのオブジェクト定義を含むスキーマパーティション、フォレスト全体の構成情報を格納する構成パーティション、ユーザーやコンピューターなどのリソース情報を含むドメインパーティション、そしてドメインコントローラーの詳細なレプリケーション情報を持つアプリケーションパーティションがあります。

物理的には、Active Directoryデータベースはドメインコントローラー上の「NTDS.DIT」という単一のファイルとして保管されています。

このファイルの物理的なデフォルト保管場所は、Windows ServerのシステムドライブにインストールされるActive Directoryデータベースフォルダ(通常は%SYSTEMROOT%\NTDS)内です。

データベースファイル自体は、JET/ESEデータベースエンジンによって管理され、テーブルとインデックスから構成されています。

NTDS.DITの他に、トランザクションログファイル(edb.log)とチェックポイントファイル(edb.chk)が同じディレクトリに存在し、これらはデータベースの一貫性と復旧可能性を確保するために使用されます。

NTDSファイルの構造
トランザクションログはデータベースへの変更を記録し、予期せぬシャットダウンからの回復をサポートします。

Active Directoryのインストール時にデータベースとログファイルの保存場所を変更することは可能ですが、システム管理者はパフォーマンス向上のため、これらを別々の物理ディスクに配置することがよくあります。

特にトランザクションログは高いI/O処理を要求するため、高速なストレージデバイスへの配置が推奨されます。

大規模な環境では、データベースサイズが数ギガバイトから数十ギガバイトに達することもあり、適切なディスク容量計画と監視が必要になります。

メンテナンス方法

Active Directoryデータベースの健全性を維持するためには、定期的かつ計画的なメンテナンスが不可欠です。

メンテナンスの中核となるのはデフラグ操作であり、これはデータベースファイル内の断片化を解消し、パフォーマンスを向上させる処理です。

デフラグ
Windowsでは「ntdsutil」コマンドラインツールを使用して、オンラインデフラグオフラインデフラグの二種類のデフラグ操作を実行できます。

オンラインデフラグはActive Directoryサービスの実行中に自動的に行われる軽量なプロセスであり、通常の運用に影響を与えませんが、完全な最適化は行われません。

一方、オフラインデフラグはより徹底的な最適化を実現しますが、ドメインコントローラーを一時的にディレクトリサーバーとして機能停止させる必要があるため、通常はメンテナンス時間帯に計画的に実施します。

ポイント! オンラインデフラグでは、サービスを停止しなくてもよいけど完全な最適化はできない!
オフラインデフラグは徹底的に最適化ができるか、サービスを停止しないといけない!

定期的なデータベース整合性チェックも重要なメンテナンス作業であり、「ntdsutil」の「integrity」コマンドを使用して、データベースの破損や不整合を検出することができます。

また、データベースサイズの監視と管理も必要です。

時間の経過とともにデータベースは拡大しますが、削除されたオブジェクトの情報は「トゥームストーン」として一定期間保持されるため、実際に使用されているデータ以上のスペースを占めることがあります。

トゥームストーン
これらのデータを効率的に管理するために、「トゥームストーン寿命」の設定の最適化が推奨されます。

レプリケーション健全性のモニタリングも重要なメンテナンス活動であり、「repadmin」や「Active Directory Replication Status Tool」などのツールを使用して、レプリケーションの失敗や遅延を検出し、問題を早期に解決することができます。

さらに、Active Directoryデータベースのパフォーマンスを最適化するために、システム管理者はメモリ割り当て、ページファイル設定、ディスクサブシステムの最適化などのサーバーレベルのチューニングを行うことがあります。

特に大規模な環境では、「lsass.exe」プロセスに十分なメモリを割り当てることが、データベースキャッシュのヒット率を高め、ディスクI/Oを減少させる効果があります。

セキュリティ面では、定期的な監査ログのレビューと不要なアカウントやグループの整理も重要なメンテナンス作業となります。

このように複数の側面からの定期的なメンテナンス活動が、Active Directoryインフラストラクチャの安定性と効率性を確保するために不可欠です。

バックアップとリストア

Active Directoryデータベースのバックアップとリストアは、ディザスタリカバリ計画の重要な要素であり、適切に実行することでデータ損失やサービス停止の影響を最小限に抑えることができます。

バックアップには主に「システム状態バックアップ」「AD DSバックアップ」の二種類があります。

システム状態バックアップはWindows Server Backupを使用して実行でき、Active Directoryデータベース(NTDS.DIT)に加え、レジストリ、SYSVOL、証明書サービス(存在する場合)などの関連コンポーネントも含まれます。

「システム状態バックアップ」
このバックアップは整合性を保つために、バックアップ中にボリュームシャドウコピーサービス(VSS)が使用されます。

AD DSバックアップはより焦点を絞ったバックアップであり、Active Directory Domain Services固有のデータのみをターゲットとします。

AD DSバックアップ
ポイント! AD DSバックアップは、軽量で取得時間が短くなりますが、NTDSのみのバックアップです。
これは、ADサービス全体の復元には情報が不足しているため、部分的な復元にしか利用できない点に注意してください!

具体的には誤って削除されたオブジェクトのみを効率的に復元したいとかの用途です。
ADサービス全体を復元できるようにするには、「システム状態バックアップ」が必要です!

「AD DSバックアップを取っているからADに障害が起きても復元可能!」と思ってはいけませんよ!

バックアップは「フル」または「差分」として構成可能で、差分バックアップは前回のフルバックアップ以降の変更のみを保存するため、時間とストレージ容量を削減できますが、リストア時には最新のフルバックアップと最新の差分バックアップの両方が必要になります。

バックアップ計画では、バックアップの頻度、保持期間、保存場所(オフサイトを含む)などを考慮する必要があります。

リストアプロセスにはいくつかの方法があり、状況に応じて選択します。

「権威的リストア」はバックアップから復元したデータを「権威的」とみなし、他のドメインコントローラーとの後続のレプリケーションでこのデータが優先されます。

誤って削除されたオブジェクトを復元する場合などに使用されますが、複雑でドメイン全体に影響を与える可能性があるため、慎重に実行する必要があります。

権威的リストア
「非権威的リストア」はデータベースを復元した後、他のドメインコントローラーからの通常のレプリケーションプロセスを通じて最新の変更を取得します。

非権威的リストア
単一のドメインコントローラーの障害からの回復に適しています。

さらに、Windows Server 2008 R2以降では「Active Directoryごみ箱」機能が導入され、誤って削除されたオブジェクトを簡単に復元できるようになりました。

これが有効な場合、削除されたオブジェクトは設定された保持期間中はごみ箱に保管され、PowerShellコマンドレットを使用して復元できるため、完全なバックアップからのリストアを避けられることがあります。

また、システムステートバックアップからの「ブート可能メディアを使用した回復」も可能で、システムが起動できない場合の最後の手段となります。

どのリストア方法を選択する場合も、事前に詳細な回復手順書を作成し、定期的にテスト環境でリストアテストを実施することが、実際の障害発生時に迅速かつ確実にサービスを復旧させるために重要です。

まとめ

Active Directoryのデータベースは、組織のITインフラを支える心臓部とも言える存在です。

その構造を理解し、メンテナンス方法を実践することは、システムの健全性とセキュリティを保つために欠かせません。

この知識があることで、単なる問題解決の受け身ではなく、トラブルを未然に防ぎ、効率的かつ安全な環境を構築する力を手にすることができます。

AD環境のメンテナンスは決して単純作業ではありませんが、この記事を通じて得られる知識は、その複雑さを乗り越えるための強力な武器となるでしょう。

そして、バックアップとリストアの重要性を理解することで、障害や予期せぬデータの損失が発生した際にも迅速かつ確実に対応できるようになります。

この記事で解説した内容は、単なる技術的な情報ではなく、現場での実務に直結するものばかりです。

これを踏まえて次の一歩を踏み出せば、あなたのITスキルはさらに一段高いレベルへと進化するはずです。

Active Directoryの可能性を最大限に引き出すために、ぜひこの記事の内容を役立ててください。