LDAP基礎用語 DCとは?OUとは?バインドDN、ベースDNとは?匿名バインドとは?

DNとは、DCとは、OUとは

LDAPツリーを構成する要素は全てオブジェクトと呼びます。OUもユーザもオブジェクトです。これらのオブジェクトにはツリー上で一意に識別する名前があります。これがDN(Distinguish Name)です。

"[属性1]=[属性値],[属性2]=[属性値],,,,[属性3]=[属性値]"というような表記をします。例えばツリーの頂点は必ず『ドメイン名』ですが、このドメイン名のDNは、"dc=example,dc=com と表記されます。

ここでDC(Domain Component)という属性が出てきましたが、これはドメイン名の構成要素です。この例ではDCが2つですが、数に制限は無く、また、数に意味はありません。1つでも構いません。が、oid等と同じように(連携することはまず無いので重複しても影響はないのですが)『他の企業と重複してはならない』という思想の元、その企業のDNSの保有ドメイン名を使うことが多いです。

OU(Organization Unit)とは、ファイルシステムで言えばフォルダみたいなもので、ユーザを格納するオブジェクトです。ユーザがツリーの葉っぱであるのに対し、OUはツリーの枝です。

LDAPのバインドDN (bind dn)、ベースDN (base dn)とは?

バインドとはLDAPサービスへログインすることを意味します。バインドすると、LDAPサービスの利用(検索や、別ユーザの認証情報の照合)が出来ます。

なのでバインドDNとは、LDAPサービスへログインするときのユーザのことです。

ベースDNとは、LDAPサービスへログインした後、どのOU配下の情報を扱うかを示すものです。

具体的な例を見てみましょう。LDAPクライアントにて、以下のようにldapsearchコマンドを叩きます。

ldapsearch -h 192.168.1.1 -x -D "cn=Manager,dc=example,dc=com" -W -b "ou=eigyo,dc=example,dc=com" cn=test*

するとこれを実行したPCから192.168.1.1のLDAPサーバに対して"cn=Manager,dc=example,dc=com"というユーザでバインド(ログイン)し、"ou=eigyo,dc=example,dc=com"配下で、cn が testから始まるユーザを検索します。

このとき、バインドDNは"cn=Manager,dc=example,dc=com"ベースDNは"ou=eigyo,dc=example,dc=com"となります。

ldapsearch のオプション

-h :LDAPサーバのIPやFQDNを指定するオプション

-x :SASLではなく簡易認証を使うオプション

-D :バインドDNを指定するオプション

-W :Enter押下後に-Dで指定したバインドDNに対するバインドパスワードの入力を求めるオプション

-b :ベースDNを指定するオプション

匿名バインド(anonymous bind)とは?

通常、バインドには具体的なDN(ユーザ名)が必要ですが、バインドDN無しでもLDAPサービスを使わせることができます。これが匿名バインドです。

例えば ldapsearch コマンドであれば、-Dでの指定をしなければ匿名バインドになります。

ただし、匿名で全てのLDAPサービスを使わせてしまってはセキュリティ上問題がありますので、slapd.conf に acl を記載して利用できる範囲を限定します

例えば以下のような acl を書いた場合、匿名バインド(anonymous bind)では "ou=1g,ou=eigyo,dc=example,dc=com" の範囲のユーザのmail属性値のみ閲覧可能になります。(cn=Managerは書き込みも可能な設定になっています)

access to dn.subtree="ou=1g,ou=eigyo,dc=example,dc=com" attrs=mail
by "cn=Manager,dc=example,dc=com" write
by anonymous read

シェアする

  • このエントリーをはてなブックマークに追加

フォローする