2件のコメント

Active Directoryのパーティションとレプリケーションスコープ

Active Directoryを理解するためには、「パーティション」と「レプリケーションスコープ」の理解が欠かせません。簡単に解説してみたいと思います。

パーティション

ActiveDirectoryのデータベースを保持しているのはドメインコントローラーです。そして、そのドメインコントローラーが持っているデータベースをより詳細に見ると、以下のように4つの大きなパーティションの種類があります。

パーティション名 格納されている情報 レプリケーションスコープ
(複製範囲)
Configuration Partition
(構成パーティション)
フォレスト、ドメインの構成情報
ActiveDirectory対応アプリケーションの構成情報
フォレストワイド
Schema Partition
(スキーマパーティション)
ActiveDirectoryに存在するクラス、オブジェクトの設計情報 フォレストワイド
Domain Partition
(ドメインパーティション)
ドメインに存在するオブジェクトの情報 ドメインワイド
Application Partition
(アプリケーションパーティション)
※2003から新規導入
ActiveDirectoryに情報を格納する用に設計されているアプリケーションの情報 色々

何かを操作するときに「この操作はどのパーティションに対しての操作なのか、情報はどこに保存されているのか」ということを意識できるようになるとActive Directoryのことがよくわかってきます。

特にアプリケーションパーティションを除く3つのパーティションは特に重要ですのでその用法含めてしっかり理解する必要があります。

具体的に見ていきましょう。

ADSIEdit

具体的にADの中を覗いていくためには、それ相応のツールが必要です。一番使えるのはADSIEditという、ADのデータベースを直接覗けるツールです。すべての情報が見え、すべての操作が行えるというある意味とても危険なツールです。

ADSIEditはSupport Toolsに含まれていますので、Support Toolsを導入しておきましょう。インストールCDやサービスパックCDにも含まれていますし、Webからダウンロードもできます。

起動方法としてはMMCを起動後、ADSIEditを組み込む方法もありますが、直接「ファイル名を指定して実行」から「adsiedit.msc」を起動してしまうのが楽だと思います。

clip_image002

このように起動すると、Domain, Configuration, Schemaの3つのパーティションに接続された状態でADSIEditが起動してきます。

clip_image002[4]

以降の説明の中で”DC=test,DC=local”という記述が何度も出てきますが、これはこの画像を取得した環境のドメイン名(=フォレスト名)がtest.localであり、その名前が表れているものです。各自自分の環境の名前に読み替えてください。

Configuration Partition

Configuration Partitionはその名の通り、構成情報が格納されています。Active Directory自身の構成情報や、Active Directory対応のアプリケーションの情報が入っています。

具体的に中身を見てみましょう。

例えば”CN=Sites,CN=Configuration,DC=test,DC=local”には「サイトとサービス」で見えるものと(ほぼ)同じものががあります。

clip_image002[6]

clip_image002[8]

また、”CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=test,DC=local”以下には「Exchangeシステムマネージャー」で見えるものと(ほぼ)同じものがあります。

clip_image002[10]

clip_image002[12]

Configuration Partitionのポイントは「レプリケーションスコープがフォレストワイド」であることです。つまり、ドメイン単位の設定ではなくて、Active Directory全体にかかわる設定事項がここに入ってくるわけです。

上記の例でいえば、

  • サイトとサービス(つまりドメインコントローラー間の複製の設定)は、ドメイン単位ではなくてフォレスト単位で管理されている
  • Exchangeがドメインごとではなく、フォレストごと(Active Directory単位)で動作するアプリケーションである

ということになります。

Domain Partition

次はDoain Partitionを見てみましょう。

“DC=test,DC=local”以下には「Active Directory ユーザーとコンピューター」で見えるものと(ほぼ)同じものがあります。

clip_image002[14]

clip_image002[16]

具体的に中を見ていくとドメインパーティションに関してはほぼ1対1で対応しているのがわかると思います。

ドメインパーティションの中には、「Active Directory ユーザーとコンピューター」で管理されているもの、つまり、ドメイン内のユーザー、グループ、コンピューターなどが格納されているわけです。

これらの情報はドメインごとの情報です。ですからDomain Partitionのレプリケーションスコープはドメインワイドです。つまり、この情報は同じドメインのドメインコントローラーとのみ複製し合えばいいのであって、別ドメインのドメインコントローラーとやり取りをする必要はありません。

Active Directoryとオブジェクト指向

ADSIEditで生データをのぞくとよくわかるのですが、それぞれのオブジェクトはClassが定義されているし、プロパティから属性の一覧を見てみると多くのClassが同じ属性を持っています。

これはまさに、Active Directory内のオブジェクトはオブジェクト指向で作成、管理されている、ということです。

(余談)オブジェクト指向という考え方は比較的新しい考え方ではあるもののプログラミングの世界では当たり前に使われているものです。しかし、Windowsを管理する人で、プログラミング経験、知識が全くない、という人もいると思います。両者は無関係なように考えがちですが、このあたりのソフトウェアが動作している基盤の仕組みにちょっと足を踏み込むとすぐにプログラミング知識の前提がないと理解が難しいことが出てきます。一人前の管理者になるにはプログラミングの知識は避けて通れないものと思っておいた方が良いと思います。

Schema Partition

オブジェクト指向で作られているからには、設計(=クラス定義)がどこかにあるはずです。そしてそれがまさにSchema Partitionに当たります。

スナップインとしては「Active Directory スキーマ」というものがあるのですが、設計情報をいじるということは非常に危険なことなので、規定の状態では組み込まれておらず、使えません。

使うためには「regsvr32 schmmgmt.dll」と実行し、DLLを登録した上で、MMCに組み込んで使う必要があります。

clip_image002[18]

clip_image002[20]

clip_image002[22]

clip_image002[24]

clip_image002[26]

clip_image002[28]

clip_image002[30]

clip_image002[32]

“CN=Schema,CN=Configuration,DC=test,DC=local”以下に「Active Directory スキーマ」で見えるものと同じものがあります。

clip_image002[34]

clip_image002[36]

Schema Partitionはレプリケーションスコープがフォレストワイドですので、つまり、設計情報はActive Directory全体で単一のものを使っている、ということです。

たとえばActive DirectoryにExchange Serverを導入するときには、メール関連のクラスや属性が追加されます。それはSchema Partitionへの変更(スキーマ拡張)であるため、Active Directory全体に影響が及びます。

よくスキーマ拡張をすると何が起きるのか?という質問をすると「管理ツールでタブが増える」という答えが返ってくることがありますが、それは本質的には全く関係ありません。「Active Directoryにクラスや属性が追加される」のです。そしてそれはSchema Partitionへの変更なわけです。増えた属性を表示編集するためにGUIツールがバージョンアップするのは枝葉であって、本質ではありません。

 

さて、ここまでで、3つのパーティションのことを見てきました。これからActive Directoryに関する操作を行う時には、どのパーティションを見ているのか、どのパーティションに対して操作をしているのか、ということを意識してみてください。理解度がかなり変わってきますよ。たとえばDNSの「AD統合モード」というのはどのパーティション、どのようなレプリケーションスコープなのか、など考えてみると面白いと思いますよ。(AD統合ゾーンに関しては話が長くなるので別エントリで述べます。)

以下は結構激しく脱線していますので、興味のある方だけどうぞ。

Exchange Serverがフォレスト単位のアプリケーションである理由

重要な3つのパーティションのことを理解したところで、わかりやすい例だと思うので、Exchange Serverの導入を再度取り上げます。

なぜExchange Serverの組織はActive Directoryのフォレスト単位に対応しているのでしょうか?つまりなぜドメイン単位ではないのでしょうか?

(以下は私の個人的な考えです。)

答えはそもそものActive Directoryの設計にあるのではないかと思います。

  • Exchange Serverを導入し、メールシステムを構築するには既存のクラス、属性だけでは足りない。
  • よってクラス、属性を追加する必要がある。
  • クラス、属性を追加するにはSchema Partitionを変更する必要がある。
  • これはつまりフォレスト全体への変更となる。
  • フォレスト全体に変更が及んでいる以上、フォレスト全体を対象とすることが自然である。

どうでしょうか?ドメイン単位で導入することを考えるならば、Schema Partitionのレプリケーションスコープはドメインワイドにしておき、ドメインごとに単体でクラス、属性の追加が行えるようになっていればよかったのではないかと思います。また、Exchangeの構成情報はConfiguration Partitionではなく、Domain Partitionに格納されることになります。ただし、この場合にはフォレスト内の別のドメインのオブジェクトとの属性の不一致が起きてしまうわけで、たとえば、Exchange導入済みのActive Directoryユーザーとコンピューターで、別ドメインのオブジェクトを見ると、見える属性が少なかったり、できる操作が異なったりしなくてはいけません。あまり自然ではないように思います。

 

 

ただ、そもそもとしてはもとからActive Directoryの属性を拡張することは計画にあったのだと思われ、その範囲としてフォレストが選ばれた、という話の流れだと思います。ですから、Active Directory対応で、属性を拡張するようなアプリケーションはすべからくフォレスト単位での対応になるのが自然だと思います。

ただし、そのような固定的な複製範囲ではうまくいかない(=効率的ではない)例もいくつかあって、そのために、レプリケーション範囲を自由に設定できる「アプリケーションパーティション」が登場したのだと思います。この話は別途またする予定です。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

2件のコメント

  1. moeさん

    コメント、質問ありがとうございます!

    ちょっと手元にすぐに確認できるマルチドメイン環境が無いのできちんと確認できないのですが、別ドメインのドメインパーティションの情報に関してもGC(=グローバルカタログサーバー)であれば抜粋情報を保持するために複製が必要になります。おそらくその複製が見えているのではないかと思います。

    拙書「Windowsインフラ管理者入門」ではp185, 186に記載してありますので、よろしければ確認してみてください。

    また、ちょっと読むのは大変かもしれませんが、以下の記事が詳しいです。
    http://msdn.microsoft.com/ja-jp/library/how-global-catalog-servers-work(v=ws.10).aspx

  2. よろしければご教示ください。
    シングルフォレスト、シングルサイト、マルチドメイン(親ドメイン1つ、子ドメイン1つ)の構成にしている前提とします。
    親ドメイン:win.local
    子ドメイン:sub1.win.local
    親ドメインDCで「repadmin /showrepl /all」を実行すると、入力方向・出力方向ともに、以下の情報が出力され、複製にも成功しています。
    DC=sub1,DC=win,DC=local

    「DC=sub1,DC=win,DC=local」は、sub1ドメインのドメインパーティションなので、sub1ドメイン内でのみ複製されれば良いように思うのですが、なぜ、親ドメインのDCに対して複製されるように見えるのでしょうか。
    親子ドメインで推移的な信頼関係が結ばれるため、親ドメインから子ドメインのリソースを、子ドメインから親ドメインのリソースを参照可能であるため、複製されているのでしょうか。

コメントを残す

メールアドレスが公開されることはありません。