Linux
LDAP
openldap

LDAPがなんだかよくわからない

More than 1 year has passed since last update.

LDAPがなんだかよくわからない自分のために

【LDAPとは】

Light weight(軽量)な Directory Access Protocolのこと

LDAPは、ユーザからの検索クエリに対して結果を返したり、システム管理者が内容を自由に追加、変更できるデータベースとして機能する、らしい

【RDB(リレーショナルデータベース)と何が違うのか?】

それだったらRDBでもいいと思う。RDBと何が違うのか?
→ RDBと違って、LDAPは「ディレクトリ」と呼ばれる階層構造(木構造)により構成されている

<データベースが木構造であるメリット>

  • ディレクトリ(階層)によるグルーピングにより、管理がしやすい(木構造だから、枝ごとに管理を委任できる)
  • 目的のユーザ情報がグルーピングされたディレクトリだけ検索すればよいので、検索のパフォーマンスがよい(木構造だから、全検索しなくても、その枝だけ検索すればよい)
  • 主にテキストベースの情報を扱うので処理の負荷が小さい
  • 検索のためのプロトコルとして属性が定義されている。LDAPスキーマとして自分で属性を加えることもできる

【LDAP管理上の単位】

LDAPは管理上の単位として、オブジェクトと、エントリを持つ

オブジェクト→管理者が実際に操作する対象(木構造の葉のこと)

LDAP項目 RDBで言うと
entry レコード
attribute カラム

オブジェクトが要素で、エントリが要素の集まった塊のこと。

データベースと同じように、エントリ(レコード)の追加、削除、編集などができるが、それらを行うまえに、バインドを行わなければならない。
バインドとは認証のこと(ログインみたいなもの)

【LDAPの木構造】

DIT(Directory Information Tree)というらしい。
TOPから順に、

DC(Domain Component)= ドメイン名
OU(Organizational Unit)= 組織単位
CN(Common Name)= 一般名

これらを下位からカンマでつなげると、
DN(Distinguished Name、識別名)になる。当たり前だけど、DNはそのドメインで一意でないといけない。

ちょっと例を見てみよう。
LDAPはデータベースなので、とりあえず登録するものは人でもモノでもなんでもいい。

例えば、日本の、hogehoge社にある、営業課のプリンタを登録してみる。

DC=hogehoge,DC=com ★
OU=Sales
CN=Canon01

★DCはドメインの構成要素のことなので、例えばgoogleだったら、www.google.comは
DC=www,DC=google,DC=comと、3つのDCを持つことになる。

DN:CN=Canon01,OU=Sales,DC=hogehoge,DC=com

こんな感じ。

【LDAP searchの意味がわからない】

ldapsearch -x -h localhost -p 9999 cn=hoge1 -b ds=aaaa, o=bbb, dc=ccc -s sub -a always

-x InfoDirectoryサーバ上で検索する
-h (ldap host) LDAPサーバが稼働しているホスト名またはIPアドレス
-p (ldap port) LDAPサーバに接続するためのポート名
-b (search base) 検索開始位置をデフォルトではなくsearch baseにする
-s (base|one|sub) 検索スコープ。base→ベースオブジェクト、one→1レベル検索、sub→サブツリー検索
-a (never|always|search|find) never→エイリアスを実名参照しない always→常に実名参照 search→検索で実名参照 find→ベースオブジェクトを探すときのみ実名参照