【再掲】前方リンクと後方リンク

この記事はWindows Live Spaceで掲載したものです。
前回の投稿で「後方リンク」の用語が出てきたので、関連してみていただけるよう、再掲します。
(一部加筆修正しています) 


Active Directoryの属性の中でも、特殊な属性の種類である、前方リンクと後方リンクについて紹介したいと思います。
ユーザー等Active Directoryオブジェクトのプロパティなどを開くと、名前、ログオン名、住所、電話番号、事業所、部署、、など様々な情報が格納できることがわかります。
これらのひとつひとつの情報を「属性」と呼び、そこに格納される値を「属性値」と呼んでいますね。

通常、属性値は独立した情報として、データベースの中に格納されますが、例外的に他の属性との関連をもった属性もあります。例えば、グループの「メンバー」とユーザーの「所属するグループ」などがあります。グループの「メンバー」とユーザーの「所属するグループ」は、ひとつの事柄について、どちらのサイドから見ているかを表しているだけなので、バラバラに管理するのは望ましくありません。
そのため、Active Directoryでは、グループのメンバー属性(Member属性)とユーザーの所属するグループ属性(MemberOf属性)は一元的な管理をしています。

具体的な動きについて紹介しましょう。
例えば、SalesグループにKuniiユーザーを追加するとします。
この操作は言い方を変えると、SalesグループのMember属性にKuniiユーザーを追加するという操作になりますね。このとき、Active Directoryでは同時にKuniiユーザーのMemberOf属性にSalesグループを追加するという操作を自動的に行います。このように、片方の属性に属性値が書き込まれると、もう片方の属性にも属性値が自動的に書き込まれることによって、両者の関係が維持されるようになります。
2つの属性のうち、最初に書き込まれる属性を前方リンク、前方リンクの情報に基づいて自動的に書き込まれる、もう片方の属性を後方リンクと呼びます。

■前方リンク (Member属性)
FLBL000000

■ 後方リンク(MemberOf属性)
FLBL000001

Member属性とMemberOf属性の関係では、Member属性が前方リンク、MemberOf属性が後方リンクとなります。
つまり、グループのメンバーを追加するときには、

・グループのMember属性にユーザーを追加する方法
・ユーザーのMemberOf属性にグループを追加する方法

の2つがありますが、どちらの操作を行っても、Member属性に値が書き込まれ、
その後、MemberOf属性が書き込まれるようになっています。

下の図は、Kuniiユーザーのプロパティを開いて、Salesグループを所属するグループとして追加した様子をADInsightというツールで追跡した様子です。(ADInsightとはActive Directory(ADSI)内部の処理をリアルタイム表示するSysinternalsのツールです)
addmember

ID8番の処理を見ると、Modifyとなっていて、その詳細(画面の下段)を見ると、Salesグループ(画面のdn部分)のMember属性(画面のmod_type部分)に、kuniiユーザー(画面のval部分)が追加されていることがわかります。
このように、
グループのMember属性にユーザーを追加しても、
ユーザーのMemberOf属性にグループを追加しても、
前方リンクであるMember属性にユーザーが追加されます。

後方リンクは、ドメインコントローラーのローカルで処理される属性なので、ドメインコントローラー間のレプリケーションでは、Member属性だけがレプリケートされ、レプリケートされたMember属性の情報に基づいて、MemberOf属性が構成されることになります。