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 コマンドを叩きます。
[root@localhost ~]# 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
コメント