LDAP とは
ディレクトリサービスは、ネットワーク上のリソースとその所在、属性、設定などの情報を記録し、検索できるようにしたサービスであり、LDAP (Lightweight Directory Access Protocol) は TCP/IP 上で実装されたディレクトリサービス用のプロトコルである。
LDAP サーバとは LDAP を用いてやりとりが可能であるディレクトリサービスを提供するサーバのことであり、平たく言うと、LDAP サーバに問い合わせることでネットワーク機器情報やユーザー情報などを取得することができる。
参考: LDAP サーバとは
LDAP で管理するもの
LDAP はもともと人名録や住所録という意味合いを持っているので、様々なデータを保管しておき、それを調べるために使うものである。そういう意味ではもちろんデータベースサービスの一種ではある。
但し、LDAP が管理する以下のオブジェクトは頻繁に更新されるものではなく、読み込み* 検索処理が速くなるように最適化が行われている。
- 住所録/人名録など、人というオブジェクトを管理
- プリンタなどのネットワークに接続された機器の管理
LDAP のデータ構造
LDAP では、様々なデータを統一的に扱えるようになっており、LDAP で情報を扱う基本単位をエントリと呼ぶ。
LDAP エントリは属性と呼ばれる情報単位の集合として構成され、さらに各属性は、属性の型 (属性タイプ) **と 1 つまたは複数の値 (属性値) **を持っている。
各エントリはユニークな名前の DN (Distinguishied Name) と呼ばれる属性を持ち、DN により一意に検索を行うことが可能である。
通常 DN はエントリの階層を表すために、上位のエントリ名を含んだ形式で表し、またエントリの検索を用意にするために、上位のエントリ名を含まない RDN (Relative Distinguished Name) も持つようにする。
LDAP エントリでは、そのエントリに設定する必要のある属性、または設定することのできる属性を objectClass という特別な属性を用いて定義することが可能であり、この定義をスキーマ定義と呼ぶ。
よく使用される属性タイプは以下のようなものがある。
属性タイプ | 説明 |
---|---|
dn | 識別名 (Distinguished Name) |
objectClass | オブジェクトクラス |
dc | ドメイン構成要素 |
o | 組織名 (Organization) |
ou | 組織単位 (Organization Unit) |
cn | 一般名称 (Common Name) |
複数の属性の集合であるエントリはツリー構造で構成され、例えば example.jp ドメインの組織は以下のように構成できる。
この例だと、uid=user01 のエントリの DN は uid=user01,ou=People,dc=example,dc=jp 、RDN は uid=user01 となる。
LDIF テキストフォーマット
LDAP データをインポート/エクスポートする際、一般的には LDIF テキストフォーマットを用いる。
LDIF はエントリの属性タイプと属性値を : で区切った形式で表す。
dn: uid=user01,ou=People,dc=example,dc=jp
uid: user01
cn: Test User 01
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: {CRYPT}/XZPJv4SKXvV.
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01