3.OpenLDAPサーバの構築③ -ベースDN(dc)/管理者DN(cn)の設定

投稿者: | 2017年12月3日

2.OpenLDAPサーバの構築② -管理者パスワードの設定が終わったら、次は管理者DNとベースDNの設定。


■ldapのディレクトリ構成とベースDN

ldapにはベースDNという概念がある。
DNとは識別名(Distinguished Name)で、ベースDNとは今後LDAPユーザを追加/修正/削除する際に、そのユーザがどの場所にいるか、検索する位置を指定するもの。ldapではベースDNを

dc=abc,dc=def,dc=com

というような記述をするが、後述のouやその配下のディレクトリを入れて検索位置を絞る場合もある。ここでは一旦dcのみでベースDNを考えていく。(abc、defは任意の文字列)dcはドメイン要素(Domain Component)。ホスト名やドメイン名(abc.def.comみたいな)に類似した考え方で、うしろに指定するdcほど広域(.jpや.comのような国、地域)を指す。

図にすると

というイメージ。
この図でのベースDNを「dc=abc,dc=def,dc=com」とする。図の例ではdcが3つあるが、一般的には2~3つのdcを使用することが多い。
このベースDNに管理者を置く場合、「cn=Manager,dc=abc,dc=def,dc=com」といった管理者を設定する。(管理者DNという)
管理者はuidではなくcnで指定する。また一般的なrootユーザのように「su – Manager」等でユーザ切り替えはできない。teraterm等のターミナル上で何か作業するための管理者ではないが、別のアプリケーションと連携する際に、ベースDNと管理者DNは随所に出てくるので、このような設定があることは覚えておいた方がよい。cnは共通名(common name)で、cn=******は任意の文字列でよいが、ここではManagerとする。
ldapはこのベースDNの配下に組織(ou:organizational unit)を置いて、さらにouの配下に(cn)やユーザ(uid)を置くという構成をとる。
ou配下のcnと管理者を示すcnは、呼び方はcommon nameで同じだが居る位置が違うので、混乱しないようにしたい。またouにつける名前は「ou=Group」や「ou=People」がデフォルトだが、任意でよい。

ディレクトリ階層をイメージした構成になっていることから、LDAP(ライトウェイト ディレクトリ アクセス プロトコル)と呼んでいる(はず!)

これを踏まえた上で、管理者DNとベースDNを設定する。


■ベースDNと管理者DNの設定

設定用のldifファイルを以下の内容で作成する。

[root@ldapserver ~]#  vi /root/ldif/change-domain.ldif    ->  ファイル名は任意
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=abc,dc=def,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=abc,dc=def,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=abc,dc=def,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}G+ZkXh6X/sf0K7roTRVj1zZzyFqSuAa6    ->  2.OpenLDAPサーバの構築②  -管理者パスワードの設定で設定した管理者パスワード

このファイルをldapmodifyコマンドでldapサーバに投入する。

[root@ldapserver ~]# ldapmodify -x -D cn=config -w manager -f /root/ldif/change-domain.ldif
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

ldapmodifyコマンドのオプションは以下の通り。
「-x」 : 簡易認証。(-Y EXTERNALでSASL認証をしないやり方。)
「-D」 : どのDNに結び付けるかを指定する。/etc/openldap/slapd.d/cn=config配下のデータを変更するため、「cn=config」とする。
「-w」 : 管理者パスワードを設定する。ここでは2.OpenLDAPサーバの構築② -管理者パスワードの設定で「manager」と設定したので、managerと指定する。対話式(コマンド実行後パスワードを聞かれるようにする)の場合は「-W」を使い、コマンド上ではパスワードを設定しない。
「-f」 : 実行するldifファイルを指定する。

コマンド実行結果でmodifying entry ~ 以外にエラーが出なければ投入OK。


■設定が反映されたか確認

ldapmodifyコマンドで変更実施した内容がちゃんと反映されているか、ldapsearchコマンドで確認してみる。

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={1}monitor,cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={1}monitor,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external
 ,cn=auth" read by dn.base="cn=Manager,dc=abc,dc=def,dc=com" read by * none

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'olcDatabase={2}hdb,cn=config'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcSuffix: dc=abc,dc=def,dc=com
olcRootDN: cn=Manager,dc=abc,dc=def,dc=com
olcRootPW: {SSHA}G+ZkXh6X/sf0K7roTRVj1zZzyFqSuAa6

ldapsearchコマンドのオプションは以下の通り。
「-LLL」 : 検索結果の内容の指定。-Lの場合はコメント行が付加され、-LLの場合はLDIFバージョンが付加される。その両方を省略するのが-LLL。
「-Y EXTERNAL」 : SASL認証を使用。
「-H」 : ldapサーバの指定。「ldapi:///」はローカルとなる。
「-b」 : 検索対象とするDNやolcDatabaseを指定する。後述のobjectClassや属性も指定できる。bはbindのb。

ldapsearchコマンドの結果で、ベースDNや管理者DNの箇所がldifファイルで記述した内容と同じになっていることが分かる。

これで管理者DNとベースDNの設定は完了!

3.OpenLDAPサーバの構築③ -ベースDN(dc)/管理者DN(cn)の設定」への1件のフィードバック

  1. こあら

    コマンドオプションまで解説してあり、大変参考になりました。ありがとうございます。

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA