3 Minutes NetWorking Supplement
No.11

3Minutes NetWorking Supplement

補講第11回LDAP(3) 名前付けモデル

■ 名前付けモデル

おねーさん

おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Supplement !!

おねーさん

ん〜。前回、LDAPのモデルについて話をしたわね。

ほげたん

プロトコルモデル、情報モデル、名前付けモデル、機能モデル、セキュリティモデル、だったよね。

おねーさん

そうそう。LDAPを説明するのに、まぁ、簡単に言うと5つの側面から見てみましょうって話ね。
ででで、プロトコルモデル、情報モデルの話をしたところで前回が終わったわけ。

ほげたん

でした。

おねーさん

さて、まず今回は「名前付けモデル」の説明をするんだけど、ほげたん、前回でてきたDITは覚えてる?

ほげたん

[Directory Information Tree]。DNS名前空間みたいな木構造のやつでしょ?

DIT

[FigureSP10-06:DIT]

おねーさん

そう、エントリを格納する木構造がDITだったわね。
で、ほげたん? こういうデータ、LDAPだとエントリって呼ぶわけだけど、エントリを格納するのに必要なことは?

ほげたん

…? 曖昧すぎてわかんないよ、おね〜さん。

おねーさん

ん〜、そうね。多くのエントリを格納します。格納するのはいいんだけど、識別できないと困るわよね。入れたらお終いじゃないんだから。LDAPは、エントリを検索したりするためにあるんだから。

ほげたん

識別? DITに格納されているエントリを探し出すために、何か必要ってこと?

おねーさん

そういうこと。って、わけで識別するための「名前」をつける必要があるっていいたいわけなのよ、これが。

ほげたん

まぁ、「名前」をつけるのが一番簡単かな? 確かに。

■ 相対識別名と識別名

おねーさん

でしょでしょ。そういうわけなので、エントリに名前をつけます。ここで登場する名前は2つ。
まず、RDN

ほげたん

相対識別名?

おねーさん

うん。同じ上位エントリを持つ下位エントリを識別する属性ね。
もちろん、同じ上位エントリを持つエントリの中で、ユニークな名前じゃなきゃだめよ。

相対識別名

[FigureSP11-01:相対識別名]

おねーさん

この例だと、同じ「一課」って上位エントリを持つ、2つのエントリがあって、そのエントリの属性の中で、「名前」って属性をRDNにしてるわけね。これで2つのエントリが識別できるようになった、ってわけ。

ほげたん

でも、おね〜さん。同名の人がいる場合はどうするのさ?

おねーさん

ん、そうね。この場合だと「名前」をRDNの属性として選んだのは失敗、ってことになるわね。
もしくは、複数の属性を組み合わせて、RDNにするって方法もあるわね。

ほげたん

へ〜。例えば、「名前」+「住所」でRDNにするとか?

おねーさん

そうそう。上位エントリに所属する中でユニークになればいいわけ。
で、こう考えていくと、「一課」っていうのは「営業部」エントリの中で識別されるRDNだってことになるわね。

ほげたん

そうだね。「営業部」ってのも「ABC商事」エントリ内で識別するためのRDNってことだよね。

おねーさん

そゆこと。つまり、エントリはRDNを持ち、それで上位エントリ内で識別されるってことね。

ほげたん

「同じ上位エントリを持つエントリの中で」「識別する」ための属性が、RDNってことだね。

おねーさん

そうそう、そういうこと。

ほげたん

で、さっき「登場する名前は2つ」って言ってたけど、もう1つは?

おねーさん

うん。で、このRDNを理解した上で、もう1つの名前である、DNの登場となるわけ。

ほげたん

識別名? RDNは「相対」識別名だけど、相対がつかない識別名?

おねーさん

相対がつかない識別名がDN。相対ってどういう意味?

ほげたん

絶対の反対語で。何か基準があって決まるってこと? 絶対は基準がなくても「これ」ってきまることだから。

おねーさん

そうよね。つまり、RDNは「上位エントリ」という基準点があって、そこで識別される名前なわけよね。
一方、DNは基準点がなくても、決まる名前、つまり、DITでユニークになる絶対的な名前ってこと。

識別名

[FigureSP11-02:識別名]

おねーさん

こんな風に、エントリからルートへ向かう途中にある上位エントリのRDNをすべて記述したものがDN
これなら、DITの中でユニークな名前になるでしょ?

ほげたん

うん、確かに。RDNは上位エントリの中でユニークだから、それを繋げていけばユニークになるよね。
で、下のエントリを先頭に書いていくんだね。ドメインネームっぽいね。

おねーさん

そうね、考え方としてはドメインネームと一緒でいいかも。
サブドメイン内でユニークな名前がRDN、FQDNがDN。書き方もサブドメインから先頭に書いていくし。

ほげたん

だよね。

■ RDNとDNの表記

おねーさん

ん。でね。図はわかりやすい例で書いているけど、実際の正確な書き方はちゃんと決まってるの。DN、RDN共通で、書き方は次のように書くわけ。

  • 属性型名=属性値
ほげたん

属性型名?

おねーさん

属性には型があるって話は前したわよね。え〜っと、そうコレコレ。

属性型と属性値

[FigureSP10-05:属性型と属性値]

ほげたん

なんだっけ、「属性値が取りうる値や検索の際の条件」を決めておくもの、だっけ?

おねーさん

そう。上の図だと、属性型名「名前」はデータの形として文字列で、検索条件は完全一致、部分一致が使えるって意味なわけ。

ほげたん

うんうん、了解。

おねーさん

で、よく使われる属性型として、まぁ、いずれまた説明するけど、次のようなものがあるわ。

属性型名説明
c2文字の国(Country)コード
cn一般名(Common Name)。そのオブジェクトの名前としてよく使われる
o会社・組織名(Organization)
ou組織・組織単位名(Organization Unit)
dcドメイン名(Domain Compornent)

[TableSP11-01:よく使われる属性型]

おねーさん

他にもあるけど、これぐらいは覚えておいてね。
例えば、上の図の太山田一郎さんを表すRDNはこうなるの。

  • cn=太山田一郎
ほげたん

エントリのRDNは、属性「cn」の属性値「太山田一郎」だってこと?

おねーさん

そうそう。DNの方はこんな感じ。

  • cn=太山田一郎,ou=一課,ou=営業部,o=ABC商事,c=JP
ほげたん

なるほどだよ。

おねーさん

ちなみに、複数の属性でRDNを作っている場合はこうなったりするわけ。

  • cn=太山田一郎+cn=012345,ou=一課,ou=営業部,o=ABC商事,c=JP
おねーさん

cn=012345は太山田一郎さんの社員番号ね。「+」で複数の属性がRDNになってることを示すってことね。

ほげたん

cnが2つあるけど、いいの?

おねーさん

それは問題ないわ。エントリに名前がいくつあってもいいの。例えば、名前と読みとローマ字表記と…って感じでね。
RDNにするのはどれかを決めておけばいいわけ。詳しくはまた話すわね。

ほげたん

了解です。

■ 別名

おねーさん

さてさて、識別できる名前をエントリにつけるわけだけど。
識別したい名前が複数ある場合とかもあるわけよ。

ほげたん

? 例えば?

おねーさん

例えば〜、営業一課の部長さんは、営業二課の課長さんも兼務してるとか。

ほげたん

忙しい人だね。

おねーさん

こうなると、営業一課にあるエントリと同じエントリを営業二課の下位エントリとして配置したいわけでしょ?
でも、そうすると同じものが2つできちゃうので望ましくない、と。

ほげたん

まぁ、そうかも。ディレクトリサービス上では同じ人間が2人いることになっちゃうもんね。

おねーさん

そこで使うのが別名エントリ

別名エントリ

[FigureSP11-03:別名エントリ]

ほげたん

営業一課の太山田一郎さんは、営業二課にも所属している?

おねーさん

そう。基本的に別名エントリは、ホンモノのエントリの位置を「参照」する属性が入っているわけね。だから、営業二課の太山田一郎さんを探し出すと、営業一課の太山田一郎の情報が入手できる形になるわけよ。

ほげたん

ふむふむー。

おねーさん

ただし、別名エントリは「葉(リーフ)」であることが絶対条件。

ほげたん

葉って、あれだよね、下に下位エントリをもたないエントリのことだよね。

おねーさん

うん、そうよ。
後はねぇ、名前付けモデルで覚えておいて欲しいことといえば、名前付けコンテキストかな?

ほげたん

コンテキスト? なにそれ?

おねーさん

コンテキストは本来の意味は「文脈」「文章の前後関係」って意味。

ほげたん

「名前の文脈」? ますます意味がわからないよ。

おねーさん

LDAPでは、そのディレクトリサーバが管理するエントリの集合体って意味で捉えるのがいいかな? もしくはそのエントリの集合体での名前とか?

ほげたん

サーバが管理するエントリの集合体? それってDITと違うの?

おねーさん

DITは、一番上のrootがあるでしょ? ルートエントリは特別なエントリで、サーバ用の情報エントリだから含まれないの。

名前付けコンテキスト

[FigureSP11-04:名前付けコンテキスト

おねーさん

例えば、ABC商事のディレクトリサーバは、ABC商事全体、その下位の営業一課、二課をそれぞれ管理する3台のサーバから構成されてるとするわね。
この場合、営業一課の名前付けコンテキストっていったら、緑の範囲を示すのよ。

ほげたん

サーバが管理する範囲?

おねーさん

DITは、ディレクトリ全体を現すけど、名前付けコンテキストはそうじゃない、ってことかな?
名前付けコンテキストはその最上位のエントリのDNで表現されるわ。

ほげたん

ん、んーっと、例えばABC商事全体の名前付けコンテキストは「o=ABC商事,c=JP」っていうコンテキスト、とかいう風に表現するってこと?

おねーさん

そうそう。「o=ABC商事,c=JP」コンテキストっていったら、橙の範囲のエントリ群のこと、って意味になるわけ。

ほげたん

ははぁ。

おねーさん

これでディレクトリサーバが管理する範囲を決めて、ディレクトリを複製する時なんかに使うのよ。サフィックスって呼んだり、ディレクトリパーティションとも呼んだりするわ。

ほげたん

DNSのゾーン?

おねーさん

ん〜、そうね、それが一番わかりやすいかも。そのネームサーバが管理する範囲を示すのが、DNSでのゾーン。
それと同様に、ディレクトリサーバが管理する範囲が名前付けコンテキスト。うん、いいわね。

ほげたん

ゾーンが管理してる範囲、つまりドメインとして「abc.co.jp」があるように。
名前付けコンテキストだと、「o=ABC商事,c=JP」っていうって感じでいいのかな?

おねーさん

そうね、それでいいと思うわ。
さて、他のモデルは次回にしましょ。

ほげたん

あいあい。

おねーさん

じゃ、また次回。
おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3分間ネットワーク、

ほげたん

サプリメントでした〜〜〜っ!!

RDN
[Relative Distinguished Name]
「相対識別名」と訳す。
RDNの属性
RDNにするため選んだ属性を「識別属性[Distinguished Attribute]」もしくは、「名前用属性[Naming Attribute]」と呼びます。その属性値を「識別属性値[Distinguished Value]」とも呼びます。
DN
[Distinguished Name]
「識別名」と訳す。
別名エントリ
[AliasName Entry]
名前付けコンテキスト
[Naming Context]
そのまま「ネーミングコンテキスト」とも呼ばれる。略称として「NC」が使われる。
サフィックス
[Suffix]
末尾につける文字のこと。ドメインネームを名前付けコンテキストとして使用すると、上位のドメイン名が末尾にくる(abc.co.jpとか。下位のエントリは〜.abc.co.jpになる)ことからこの名前で呼ばれると思われる。
ディレクトリパーティション
[Directory Partition]
Windows Active Directoryでは名前付けコンテキストをこの名前で呼ぶ。
ほげたんほげたんの今日のポイント
  • DIT内のエントリを識別するために名前が必要。
    • 同じ上位エントリを持つエントリの中でユニークな名前がRDN。
    • DITでユニークな名前がDN。
    • DNは最上位までのRDNを繋げて表記する。
  • DN、RDNは「属性型名=属性値」の形で表記する
  • 別名エントリを使って、同じエントリを違う上位エントリの下に配置できる。
  • ディレクトリサーバが管理する範囲(とその名前)を名前付けコンテキストと呼ぶ。

3 Minutes NetWorking Supplement No.11

管理人:aji-ssz(at)selene.is.dream.jp