【LDAP基礎用語】DCとは?OUとは?バインドDN,ベースDN,サフィックスとは?匿名バインドとは?ldapsearchのオプション

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 配下の情報を扱うかを示すものです。これは suffix (サフィックス) とも呼ばれます。

具体的な例を見てみましょう。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