IT・ビッグデータ徒然ブログ

関西でインフラ、データ基盤系のエンジニアになるため、転職活動中。

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と呼ばれるフォーマットで設定する

とりあえずここまで。
次回くらいに簡単に構築したものを載せてみようかな。