LDAPツリー設計
LDAP ツリーは、検索範囲、ACL、管理単位を考えて設計する。
ou=peopleやou=groupsは慣習的なコンテナであり、Linux ユーザーとして扱われる本質ではない。
よくある構成
Section titled “よくある構成”小規模な OpenLDAP の教材では、次のような DIT がよく使われる。
dc=example,dc=com ├─ ou=people │ └─ uid=ldapuser └─ ou=groups └─ cn=developersou=people にユーザーを置き、 ou=groups にグループを置く構成である。
ou=peopleとou=groupsは必須か
Section titled “ou=peopleとou=groupsは必須か”ou=people や ou=groups は必須ではない。
これらは LDAP ツリーを整理するための慣習的なコンテナである。
たとえばクライアントが次の範囲を検索するなら、その下にある posixAccount が対象になる。
base dc=example,dc=comfilter (objectClass=posixAccount)逆に、 ou=people にユーザーを置いても、クライアントが別の検索ベースだけを見ていれば見つからない。
organizationalUnit
Section titled “organizationalUnit”organizationalUnit は、 ou 属性を持つコンテナを作るための標準的な STRUCTURAL objectClass である。
dn: ou=people,dc=example,dc=comobjectClass: organizationalUnitou: peopleou=people という RDN を使うなら、通常はエントリ内にも ou: people を持たせる。そして ou 属性を許可する objectClass として organizationalUnit を使う。
ouではなくcnでもよいか
Section titled “ouではなくcnでもよいか”技術的には、 cn=people のような名前を使ってコンテナを作ることもできる。
dn: cn=people,dc=example,dc=comobjectClass: organizationalRolecn: peopleただし、ユーザーやグループの分類コンテナとしては ou=people、 ou=groups のほうが自然で読みやすい。特別な理由がなければ、標準的な organizationalUnit を使うほうがよい。
DNにouを使った場合の属性
Section titled “DNにouを使った場合の属性”次の DN では、RDN に ou=people を使っている。
dn: ou=people,dc=example,dc=comこの場合、エントリ内にも次の属性を書く。
ou: peopleこれは DN内の名前と属性値は役割が違う ためである。DN はエントリの名前であり、属性はエントリの中身である。
ツリーを分ける目的
Section titled “ツリーを分ける目的”ou=people や ou=groups のようなコンテナを作る理由は、見た目だけではない。
- ユーザー・グループ・ホスト・サービスアカウントを分類する
- NSS / nslcd / SSSD の検索範囲を絞る
- ACL をサブツリー単位で書く
- 管理権限を分割する
- バックアップや移行の対象を分けやすくする
- 人間が運用時に迷いにくくする
たとえば、ユーザー検索を ou=people に絞ると、不要なエントリを検索対象から外しやすい。
base passwd ou=people,dc=example,dc=combase group ou=groups,dc=example,dc=comdc は domainComponent の略で、DNS ドメイン名を LDAP ツリーの基底に変換するときによく使われる。
example.com -> dc=example,dc=comこれは慣習として非常に一般的だが、LDAP が DNS と同一の仕組みになるわけではない。LDAP のツリー設計と DNS のゾーン管理は別物である。
小規模な学習環境なら、次の程度で十分である。
dc=example,dc=com ├─ ou=people ├─ ou=groups └─ ou=services実運用では、次の観点も考える。
- 組織変更に強い配置か
- ユーザー検索・グループ検索のベースを分けるか
- 管理者権限をどの単位で分けるか
- サービスアカウントや機器アカウントをどこへ置くか
- ACL を複雑にしすぎないか
- RFC 4512 DIT、DN、RDN、属性、スキーマ。