CentOS 8 は既に通常の CentOS Linux としてはサポートが終了しています。このページは新規構築を推奨するものではなく、過去環境の保守、移行前調査、設定の読み解きに使うためのレガシー Linux 手順です。新規構築では、現在サポートされているディストリビューションを利用してください。
CentOS 8 の 389 Directory Server で、アプリケーション用の BIND ユーザーとアクセス制御を確認する手順です。LDAP を使うアプリケーションは、Directory Manager ではなく、参照用途に限定した BIND DN で接続させるのが基本です。
BIND DN は、単に接続できればよいものではありません。どの subtree を読めるか、どの属性を読めるか、更新権限を持つのかを明確にし、SSSD、Samba、Postfix など用途ごとに分けるかを判断します。
Directory Manager を使い回さない
Directory Manager は強い管理権限を持つため、アプリケーション接続用として使い回すべきではありません。漏えいや誤設定が起きた場合の影響範囲が大きくなります。既存環境を確認するときは、まずアプリケーション設定に Directory Manager が入っていないかを見ます。
- アプリケーションごとに専用 BIND DN を用意する。
- 読み取り専用で足りる用途に更新権限を与えない。
- 検索対象の base DN を必要な subtree に限定する。
- パスワードの保管先とファイル権限を確認する。
BIND ユーザー用 OU を用意する
dn: ou=Services,dc=example,dc=local
objectClass: organizationalUnit
ou: ServicesBIND ユーザーを登録する
dn: uid=ldap-reader,ou=Services,dc=example,dc=local
objectClass: inetOrgPerson
objectClass: simpleSecurityObject
uid: ldap-reader
cn: LDAP Reader
sn: Reader
userPassword: change_this_passwordldapadd -x -D "cn=Directory Manager" -W -f ldap-reader.ldifBIND できるか確認する
作成した DN で認証できることを確認します。ここでは接続できることだけを確認し、次の段階で検索範囲と属性を確認します。
ldapwhoami -x -D "uid=ldap-reader,ou=Services,dc=example,dc=local" -W検索できる範囲を確認する
BIND できても、必要な範囲を読めない、または読ませすぎている場合があります。アプリケーションが実際に使う base DN と filter に近い条件で確認します。
ldapsearch -x -D "uid=ldap-reader,ou=Services,dc=example,dc=local" -W -b dc=example,dc=local "(uid=user01)"
ldapsearch -x -D "uid=ldap-reader,ou=Services,dc=example,dc=local" -W -b ou=People,dc=example,dc=local "(objectClass=posixAccount)" uid uidNumber gidNumberアクセス制御の考え方
389 Directory Server のアクセス制御は、運用上かなり重要です。アプリケーション連携用 BIND ユーザーには、必要な subtree と属性だけを読ませ、管理操作やパスワード属性の扱いは慎重に分けます。
| 対象 | 考え方 |
| Directory Manager | 緊急時や管理操作用。アプリケーションには使わせない。 |
| BIND ユーザー | アプリケーションの検索用。権限を限定する。 |
| 一般ユーザー | 認証対象。必要に応じて自分の属性だけ変更できるようにする。 |
用途ごとに分けて確認する
- SSSD 用 DN は、Linux 認証に必要なユーザーとグループ属性を読めるか。
- Samba 用 DN は、Samba 関連属性や SID を必要な範囲で読めるか。
- Postfix 用 DN は、メールアドレスや alias の検索に必要な属性だけを読めるか。
- 管理操作が必要な処理と、参照だけで足りる処理を分けているか。
確認するポイント
- アプリケーションが Directory Manager で接続していないか。
- BIND ユーザーのパスワード管理が明確か。
- 読ませる subtree と属性が過剰でないか。
- 用途ごとに BIND DN を分ける必要があるか。
- 移行時に BIND DN、base DN、filter、取得属性を再現できるか。
まとめ
LDAP 連携では、接続できることより、どの DN で接続し、どの範囲を読めるかが重要です。CentOS 8 の 389 Directory Server では、Directory Manager、BIND ユーザー、一般ユーザーの責務を分けることで、後続の認証連携やアプリケーション連携を安全に扱えます。既存環境を確認する場合は、用途ごとの BIND DN と検索条件を追える状態にしておきます。
関連する記事
参考書籍
書籍
LDAP / OpenLDAP の設定、管理、連携を確認したい場合の参考書籍です。古い書籍のため、価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

