いまさら聞けないActive Directoryのデータベース:今だからこそ学び直すActive Directory基礎のキソ(6)
「Active Directory」のデータベースは、一般的なデータベースとは異なる仕組みを採用しています。その特徴と特殊な構造の謎を理解できれば、トラブルシューティングにも役立てられると思います。そこで今回は、Active Directoryのデータベースについて学び直します。
今だからこそ学び直すActive Directory基礎のキソ
Active Directoryの「データベース」とは
「Active Directory」では、「ユーザー」や「コンピュータ」などのIDを管理するためのデータベースが用意されています。IDの場合は、「オブジェクト」と「属性」という関係性でデータを保存する特殊な仕組みになっています(図1)。
そのため、一般的なデータベースとは異なるデータの保存方法が採用されています。Active Directoryのような、特殊なデータベースを「ディレクトリデータベース」と呼びます。Active Directoryに作成されるデータベースは、以下の4つのデータ格納領域(パーティション)で構成されています。
- ドメインパーティション
- 構成パーティション
- スキーマパーティション
- アプリケーションパーティション
これらのパーティションは、種類によってデータの保存先が異なります。この中で「構成パーティション」と「スキーマパーティション」は、フォレスト内の全てのドメインコントローラーで共有されます。
ドメインパーティション
「ドメインパーティション」はユーザー、グループ、コンピュータなどのオブジェクトの情報を格納する領域で、「Active Directoryユーザーとコンピューター」管理ツールで作成したデータが格納されます。
本連載第2回で「ドメインコントローラー間の複製」を説明しましたが、ドメインパーティション内のデータは同じドメインのドメインコントローラー間だけで複製されます。同じ「Active Directoryユーザーとコンピューター」管理ツールを参照しても、ドメインが異なれば、ツールの中に保存されている情報が全く異なるのはこのためです。
構成パーティション
構成パーティションはその名前の通り、Active Directoryドメインの構成情報を格納する領域で、「Active Directoryサイトとサービス」管理ツールや「Active Directoryドメインと信頼関係」管理ツールで作成したデータが格納されます。
構成パーティション内のデータは、同じフォレストのドメインコントローラー間で複製されます。本連載第4回では、「サイト」はドメインコントローラー間の複製をコントロールするための仕組みであることを解説しましたが、こうした仕組みに関わる情報も構成パーティションに保存されます。
スキーマパーティション
スキーマパーティションはActive Directoryのデータベースで扱うオブジェクトの種類や属性の種類などを定義した情報(これを「スキーマ」と呼びます)を格納する領域で、「Active Directoryスキーマ」管理ツールで設定した情報が格納されます。
スキーマ情報は変更したり、属性などを追加したりすることが可能で、スキーマパーティション内で設定変更したデータは同じフォレストのドメインコントローラー間で複製されます。
アプリケーションパーティション
アプリケーションパーティションは文字通り、アプリケーションで扱うデータを格納する領域で、よく使われるアプリケーションとしては「DNS」(Domain Name System)があります。
一般的にDNSサーバのゾーン情報は、テキストデータとしてDNSサーバのローカルに保存されます。アプリケーションパーティションを利用すると、DNSサーバのゾーン情報をActive Directoryのデータベースに保存できます。
Active DirectoryではDNSを利用することを本連載第2回で解説しましたが、アプリケーションパーティションを利用することで、Active Directory用のDNSサーバ情報(ゾーン情報)をActive Directoryそのものの情報と一元的に管理できるようになります。
なお、アプリケーションパーティションの複製範囲は、ドメイン内またはフォレスト内のどちらでも管理者が自由に設定できます。
ADSIエディターでパーティションを参照する
ここまで、Active Directoryのデータベースのパーティションについて見てきました。これらパーティションの複製状況は、「repadmin」コマンドで確認できます。具体的な利用法、既に別の記事で解説されているのでそちらを参考にしてください。
- ドメインコントローラーの複製とは(連載:基礎から分かるActive Directory再入門 第4回)
一方、それぞれのデータベース内に保存されている情報を、管理ツールからではなくデータベースの生情報を参照したい場合は、Windows Serverの管理ツールとして起動可能な「ADSIエディター」管理ツールを利用します。
ここまでドメインパーティションであれば「Active Directoryユーザーとコンピューター」管理ツールを利用して参照できることを解説しましたが、「Active Directoryユーザーとコンピューター」管理ツールから参照できる情報は、管理上不要と思われる情報が省略されています。ADSIエディターは、それぞれのパーティションに保存されている完全な形のデータを参照したい場合に役立ちます。
ADSIエディターを起動し、「接続」を選択すると「接続の設定」画面が表示されるので、画面からデータベースのどのパーティションに接続するかを選択します(画面1)。
「既定の名前付けコンテキスト」メニューがドメインパーティション、「構成」メニューが構成パーティション、「スキーマ」メニューがスキーマパーティションを表します。画面2が、構成パーティションを選択して表示した様子になります。構成パーティションには「Active Directoryサイトサービス」管理ツールで設定した「Active Directoryサイト」などの情報が含まれますが、ADSIエディターでは「CN=Sites」配下から確認できます。
ADSIエディターに表示されるDN(識別名)について
Active Directoryのデータベース内に保存されるオブジェクトは、「DN」(識別名)と呼ばれる名称で表現します。例えば「contoso.com」ドメインの構成パーティション(名称Configuration)をDNで表現する場合は、次のようになります。
CN=Configuration,DC=contoso,DC=com
ドメイン名は「.」(ドット)で区切った名前を分割し、「DC=」で書き始めて表現します。一方、パーティションや個別のオブジェクトの名称は「CN=」で書き始めます。そのため、前出の画面2にある「Default-First-Site-Name」サイト内の「contoso00.com」ドメインのDC00サーバをDNで表現する場合は、次のようになります。
CN=DC00, CN=Servers, CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=contoso,DC=com
DNをADSIエディターで見た場合、下の階層から上の階層に向かって順番に名称が表現されます。以上のことを踏まえ、ADSIエディターを参照するとエディタに書いてあることが理解できるようになります。
ADSIエディターを使ったトラブルシューティング
最後にADSIエディターの具体的な利用例として、「残留オブジェクト」を解説します。残留オブジェクトとは、Active Directoryから削除したはずのオブジェクト(または属性)が削除されずに復活してしまう現象です。これは特定のドメインコントローラーで削除したオブジェクトが、他のドメインコントローラーに同期されずに残されたままの状態が一定期間続くと発生します。
本来、オブジェクトが削除されれば、すぐに同期が行われ、全てのドメインコントローラーからオブジェクトが削除されます。しかし、何かしらの理由で同期が行われず、180日過ぎると同期すべき削除したオブジェクトの情報自体が削除されます。
例えば、AとBのドメインコントローラーがあり、Aで削除したオブジェクトが同期されずに180日過ぎると、Bに残されたオブジェクトがAに向かって同期するため、Aから見ると削除したはずのオブジェクトが復活してしまいます。
このことは180日以上前のデータベースを持つバックアップをドメインコントローラーに復元したり、「Hyper-V」などの仮想マシンでチェックポイントから復元したりした場合に起こりがちです。
そこで、もし残留オブジェクトの問題を解決するために削除オブジェクトをキープしておく日数を変更したいのであれば、ADSIエディターで日数を変更します(画面3)。日数の設定は以下の「DNのtombstoneLifetime」属性として保存されています。
CN=Directory Service, CN=Windows NT, CN=Services,CN=Configuration,DC=contoso,DC=com
画面3に表示されているように、「180」の部分の値を変えることで日数を変更できます。残留オブジェクトに関わる設定は、MicrosoftのWebページでも確認できます。
- Windows Server Active Directoryフォレスト内の残留オブジェクトを検出して削除する方法(Microsoft Learn)
今回はActive Directoryのデータベースの構造と、データベースに直接アクセスする方法について解説しました。日常の運用で利用することはないかもしれませんが、長期間運用されてきたActive Directoryであれば構成も複雑になっており、今回紹介した事例を含めて、さまざまなトラブルに巻き込まれる可能性が考えられます。そのときにADSIエディターを利用することで、データベースの構成をより深く確認できるようになり、結果的にトラブルも解決できるようになるでしょう。
筆者紹介
国井 傑(くにい すぐる)
株式会社エストディアン代表取締役。1997年からマイクロソフト認定トレーナーとして、Azure Active DirectoryやMicrosoft 365 Defenderなど、クラウドセキュリティを中心としたトレーニングを提供している。2007年からMicrosoft MVP for Enterprise Mobilityを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。
Copyright © ITmedia, Inc. All Rights Reserved.