LDAPのデータ構造

ディレクトリ情報ツリー

LDAPの一つ一つのオブジェクトは、ツリーの形で配置する。

そのパスは「識別名」(DN; distinguished name) で指定する。下位ディレクトリが左側、一番右がルートノード。順序にも意味がある。

例::

dn: olcDatabase={0}config,cn=config
dn: mail=hhorikawa@nslabs.jp,ou=people,dc=pineapple,dc=localdomain

不味い例::

cn=Anne Smith,ou=Server Development,c=uk,o=acme

ネット上のページを見ると、DNの書き方が千差万別で、そのまま真似すると運用が難しくなりそうなものも多い。

組織では、次のように組み立てるのがよさそう。

  1. ルートから、ドメイン名を分解したものを置く(dc=). ローカルで立てる場合は, トップレベルドメインは local または localdomain.
  2. ou=people / cn=groups / ou=hosts などを置く
  3. ユーザアカウントは、ou=people の下に置き、階層化しない

基本となる考え方は、時間とともに変わってしまうようなものをDNの一部として使わないこと。ネット上の例だと, CN (表示名) や OUで部署名を使っているものが多くあるが、特に部署名の枝の下にユーザアカウントを置くのは非常にまずい。結婚や異動があったときに, エントリを作り直さなければならない。

draft-howard-rfc2307bis-02 - An Approach for Using LDAP as a Network Information Service

Naming context ObjectClass
ou=people,dc=... posixAccount
shadowAcount
ou=group,dc=... posixGroup 単数形?
ou=hosts,dc=... ipHost

エントリの構造

データ型

各エントリは, それぞれデータ型 (object class) を持つ。[RFC4519]

ユーザアカウントでよく使われる型は inetOrgPerson [RFC2798]. inetOrgPerson 型はorganizationalPerson 型から派生する。さらに、organizationalPerson はperson型から派生している。

'person'
sn Required
cn Required
userPassword
telephoneNumber
seeAlso
description
'organizationalPerson'
title
x121Address
registeredAddress
destinationIndicator
preferredDeliveryMethod
telexNumber
teletexTerminalIdentifier
telephoneNumber
internationalISDNNumber
facsimileTelephoneNumber
street
postOfficeBox
postalCode
postalAddress
physicalDeliveryOfficeName
ou
st
l
OpenLDAPの設計 (2/3) http://www.atmarkit.co.jp/ait/articles/0807/17/news132_2.html

属性

各エントリは、データ型にしたがって、属性ペアを持つ。

LDAP実装は, 少なくとも次の AttributeType をサポートしなければならない。 [RFC 4514]

String X.500 AttributeType
CN commonName (2.5.4.3)
L localityName (2.5.4.7)
ST stateOrProvinceName (2.5.4.8)
O organizationName (2.5.4.10)
OU organizationalUnitName (2.5.4.11)
C countryName (2.5.4.6)
STREET streetAddress (2.5.4.9)
DC domainComponent (0.9.2342.19200300.100.1.25)
UID userId (0.9.2342.19200300.100.1.1)

これ以外にも, 標準で多数の attribute type が用意されている。[RFC 4519]

attribute type(例)
String X.500
sn surname

LDAP仕様

RFC 4510 Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map