LDAP ( 1 )

May 05, 2018

LDAP とは

ディレクトリサービスは、ネットワーク上のリソースとその所在、属性、設定などの情報を記録し、検索できるようにしたサービスであり、LDAP (Lightweight Directory Access Protocol) は TCP/IP 上で実装されたディレクトリサービス用のプロトコルである。
LDAP サーバとは LDAP を用いてやりとりが可能であるディレクトリサービスを提供するサーバのことであり、平たく言うと、LDAP サーバに問い合わせることでネットワーク機器情報やユーザー情報などを取得することができる。

参考: LDAP サーバとは

LDAP で管理するもの

LDAP はもともと人名録や住所録という意味合いを持っているので、様々なデータを保管しておき、それを調べるために使うものである。そういう意味ではもちろんデータベースサービスの一種ではある。
但し、LDAP が管理する以下のオブジェクトは頻繁に更新されるものではなく、読み込み* 検索処理が速くなるように最適化が行われている。

  • 住所録/人名録など、人というオブジェクトを管理
  • プリンタなどのネットワークに接続された機器の管理

LDAP のデータ構造

LDAP では、様々なデータを統一的に扱えるようになっており、LDAP で情報を扱う基本単位をエントリと呼ぶ。
LDAP エントリは属性と呼ばれる情報単位の集合として構成され、さらに各属性は、属性の型 (属性タイプ) **と 1 つまたは複数の値 (属性値) **を持っている。

f:id:shiro_kochi:2018××××××××:plain:w100:left

各エントリはユニークな名前の 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 ドメインの組織は以下のように構成できる。

f:id:shiro_kochi:2018××××××××:plain:w100:left

この例だと、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  

 © 2023, Dealing with Ambiguity