【Active Directory入門 Part6】ADのパーティションってなんだ?
この記事の内容
- Active Directory のデータベースは複数の「パーティション」に分かれて構成されています
- ADSI エディターを使うと、各パーティションの中身を直接確認できます
- ドメインパーティションはドメインごとに異なり、構成・スキーマパーティションはフォレスト全体で共有されます
- グローバルカタログは複数ドメインの情報を保持しますが、属性の一部しか持ちません
- パーティションごとに複製(レプリケーション)の範囲が異なります
前提となるフォレスト・ドメイン構成
今回の解説では、以下のドメイン構成を前提としています。
- フォレストルートドメイン:
ad.local - 子ドメイン1:
resort.local - 子ドメイン2:
sub.ad.local - 別ドメイン:
ebisuda.com
この4つのドメインが1つのフォレストに属している状態です。「ドメインと信頼関係」スナップインでこの構成を事前に確認しておくと、パーティションの理解がスムーズになります。
ADSI エディターでパーティションを確認する
パーティションの内容を確認するには、**ADSI エディター(ADSIEdit.msc)**が便利です。
ADSI エディターを起動したら、左ペインで右クリックし「接続」を選択します。接続先として「既定の名前付けコンテキスト」などいくつかの選択肢が表示されます。
ルート DSE とは
まず「ルート DSE」という特殊なエントリを紹介します。ルート DSE はどの AD 環境にも存在する「道標」のような場所です。ここに接続してプロパティを確認すると、以下のような情報が取得できます。
defaultNamingContext(既定の名前付けコンテキスト)configurationNamingContext(構成の名前付けコンテキスト)
ルート DSE 自体はパーティションではありませんが、各パーティションへの接続情報を案内してくれる起点となります。
たとえば DC01(ad.local のドメインコントローラー)でルート DSE を確認すると、defaultNamingContext は DC=resort,DC=local と表示されます。一方、DC042(ebisuda.com のドメインコントローラー)では DC=ebisuda,DC=com と表示されます。同じ属性でもドメインコントローラーの立場によって異なる値が返ってくることがわかります。
パーティションの種類
1. ドメインパーティション
ドメインパーティションには、そのドメインに属するユーザーやコンピューターなどのオブジェクト情報が格納されています。
ADSI エディターで「既定の名前付けコンテキスト」に接続すると、CN=Users、CN=Builtin などのコンテナが表示されます。これがドメインパーティションの中身です。
重要な特徴: ドメインパーティションはドメインごとに異なります。ad.local のドメインコントローラーは ad.local のドメインパーティションを保持しており、ebisuda.com のドメインコントローラーは ebisuda.com のドメインパーティションを保持しています。別ドメインのドメインコントローラーは、他ドメインのドメインパーティションを持ちません。
2. 構成(コンフィギュレーション)パーティション
ADSI エディターで「構成」に接続すると、CN=Configuration,DC=ad,DC=local というパーティションに接続されます。これが**構成パーティション(コンフィギュレーションパーティション)**です。
重要な特徴: 構成パーティションはフォレスト全体で共有されます。ad.local のドメインコントローラーでも ebisuda.com のドメインコントローラーでも、同じ構成パーティションの同じ内容が見えます。サイトやサービスの定義情報などが格納されており、フォレスト内のすべてのドメインコントローラーに複製されます。
3. スキーマパーティション
スキーマパーティションには、Active Directory のデータベース構造(どのような属性が存在するかなど)が定義されています。構成パーティションと同様に、フォレスト全体で共有・複製されます。
グローバルカタログとは
ADSI エディターの「詳細設定」からプロトコルを「グローバルカタログ」に変更して接続することができます。
グローバルカタログは、フォレスト内のすべてのドメインのオブジェクト情報を一部保持しています。通常のドメインパーティションに接続した場合と、グローバルカタログ経由で接続した場合を比較すると、グローバルカタログ経由ではオブジェクトの属性の一部しか格納されていないことがわかります。
たとえば通常のドメインパーティション経由でユーザーのプロパティを確認すると多くの属性に値が入っていますが、グローバルカタログ経由で確認すると値が入っていない属性が増えます。グローバルカタログは「全ドメインの情報を横断検索できるが、属性は抜粋のみ」という性質を持っています。
また、DC01(ad.local のドメインコントローラー)でグローバルカタログ経由で ebisuda.com の情報を参照することはできますが、通常のドメインパーティションとして ebisuda.com に接続しようとするとエラーになります。これは DC01 が ebisuda.com のドメインパーティションを保持していないためです。
複製(レプリケーション)の範囲
repadmin /showrepl コマンドを使うと、パーティションごとの複製状況を確認できます。
repadmin /showrepl
このコマンドの出力を見ると、パーティションごとに複製相手の数や対象が異なることがわかります。
| パーティション | 複製範囲 | 複製先 |
|---|---|---|
| ドメインパーティション | ドメインワイド | 同一ドメインの DC のみ |
| 構成パーティション | フォレストワイド | フォレスト内の全 DC |
| スキーマパーティション | フォレストワイド | フォレスト内の全 DC |
| ドメイン DNS ゾーン | ドメインワイド | 同一ドメインの DC のみ |
| フォレスト DNS ゾーン | フォレストワイド | フォレスト内の全 DC |
| グローバルカタログ | フォレストワイド | フォレスト内の全 DC |
たとえば ad.local のドメインコントローラーが保持するドメインパーティションは、同じ ad.local ドメインに属する DC02 との間でのみ複製されます。一方、構成パーティションはフォレスト内の全ドメインコントローラーと複製し合っています。
GUI ツールとデータベースの関係
Active Directory の管理ツール(「Active Directory ユーザーとコンピューター」など)は、実はこれらのパーティションに対して、設定しやすい UI を提供しているラッパーです。
たとえばユーザーの「姓」フィールドに値を入力すると、裏では以下のような操作が行われています。
- ドメインパーティションの既定の名前付けコンテキスト内
CN=Users,DC=ad,DC=localコンテナの中の対象ユーザーオブジェクトSN(姓)属性に値を書き込む
同様に、「Active Directory サイトとサービス」でサイトを新規作成すると、その情報は構成パーティションに書き込まれます。構成パーティションはフォレストワイドで複製されるため、フォレスト内のすべてのドメインコントローラーにそのサイト情報が伝わります。
まとめ
今回は Active Directory のデータベース構造の核心である「パーティション」について解説しました。
- AD のデータベースは1つですが、内部は複数のパーティションに分かれています
- ドメインパーティションはドメインごとに異なり、ユーザーやコンピューターオブジェクトを格納します
- 構成パーティションとスキーマパーティションはフォレスト全体で共有・複製されます
- グローバルカタログはフォレスト内の全ドメインの情報を一部保持しており、クロスドメイン検索に利用されます
- パーティションごとに複製の範囲が異なり、ドメインワイドとフォレストワイドに分類されます
- ADSI エディターを使うと、これらのパーティションの中身を直接確認できます
次回はこれらのパーティション間で実際に複製がどのように行われるか、マルチマスターレプリケーションやトゥームストーンの仕組みについて解説する予定です。