LDAP基本の基本解説という名のメモ(初心者向け)
久しぶりに仕事でLDAPをいじろうと思ったら、すっかり言葉や仕組みを忘れてしまっていたので、再勉強のついでにLDAPのことをメモ代わりに書き残しておきます。
参考書はこちら
入門LDAP/OpenLDAP ディレクトリサービス導入・運用ガイド 第3版
What is LDAP
Lightweight directory access protocolの略称。
その名の通り、プロトコル。(FTPとかHTTPと同じ類)
もともとあったDAPというサービスを軽量化させて一般的に使えるようにしたもの。
ユーザーやパスワード等を管理するために使われる。(RDBではない)
用途
- 社内のITサービスにおけるユーザー管理
- ユーザーにまつわる認証、認可関連
LDAPにおけるデータ構造
エントリ
DBでいうところのテーブルのようなもの。
組織エントリとか、在庫エントリとか。
基本的にKey/Value形式のような形で、属性名/属性値を設定する。
属性名 | 属性値 |
---|---|
名前 | 山田一郎 |
住所 | 大阪府〇〇 |
電話番号 | △△△△ |
オブジェクトクラス
DBでいうカラムの定義。
各属性に対して、どんな情報を入れるのかを定義しておく。
例えば電話番号に文字列が入るとおかしいなどバリデーションができる。(属性構文)
これらをまとめたものをスキーマと呼ぶ。
DIT(ディレクトリインフォメーションツリー)
基本的にLDAPでは各ユーザーを階層構造で定義しておき、芋づる式でユーザーを検索する。
その階層を定義するのがDITとなる。
例:
◯◯会社の△△部□□課の山田さんというユーザーは、
+ 会社
+ 部
+ 課
という3つの階層が定義されており、その中で管理されている。
(ここでいう△△部とか□□課は他の部や課と区別するということでRDN(Relative Distinguished Name)と呼ばれる)
- DITでよく出る用語 |用語|概要| |----|----| |dn|識別名| |objectClass|そのまま| |dc|ドメインを構成する要素| |o|組織名| |ou|組織単位| |cn|名称|
さっきの例をDITの用語で表現すると、
DN: cn=山田さん,ou=□□課,ou=△△部,dc=◯◯会社
みたいになる(はず)
※上記参考書のp26の図がすごくイメージがしやすくなります。
LDAPを使ったアクセス認証
LDAP使用時におけるユーザーのアクセス認証については、
+ 各dnにたいしてパスワードを設定する
+ SASL等のSSOと連携
+ Linuxのユーザー権限と組み合わせ
が可能。
LDAPを使ったユーザー検索
ユーザー検索では、
+ どの階層に属しているユーザーを検索するか(base)
+ 指定した階層からどこまで掘り下げて検索するか(one,child)
を設定する。
またフィルタを設定することで検索から必要なユーザーだけ抽出も可能。
LDAP更新
LDAPでは追加、更新、削除ができるが、これらはLDIFと呼ばれるフォーマットで設定する
とりあえずここまで。
次回くらいに簡単に構築したものを載せてみようかな。