LDAPについて綴ってみる(その1)
ようやく、OpenSolarisのOpenLDAP連携が「とりあえず動く」状態に!!
とはいうものの、LDAPについて語るにはあまりにも知識不足。
LDAPという迷宮に迷い込んでしまったようです。
そこで、今回は「LDAP」とはなにか自分の知識をまとめるという意味で
綴ってみたいと思います。
※いろいろと勘違いがあるかと思いますので、ご指摘いただければ幸いです。
LDAPとは
LDAP(Lightweight Directory Access Protocol)とは、ディレクトリサービスに接続
するためのプロトコルのひとつです。
ディレクトリサービスというと、WindowsのActive DirecotryやSun Microsystemsの
Direcotry Serverなどが有名ですが、要はコンピュータネットワーク上のさまざまな
資源(ユーザアカウントやグループ、ホスト情報など)を一元管理するためのサービス
です。
RFC(LDAPv2) | RFC1777 Lightweight Directory Access Protocol |
---|---|
OSI参照モデル | プレゼンテーション層(第6層) |
トランスポート | TCP port289 |
取り扱うデータは?
LDAPを一言でいうならば、資源情報を管理するための「データベース」なのですが、
一般的なOracleやMySQL、PostgreSQLなどのRDBMSとはデータ構造が異なります。
LDAP | RDBMS | |
---|---|---|
用途 | 検索性能重視、頻繁な更新には向かない | 検索だけでなく頻繁な更新も重視 |
データ構造 | ツリー構造 | 表構造 |
スキーマ | 既存のスキーマ(objectClass) | 業務にあわせて個別に設計 |
操作 | LDAP(ネットワークプロトコル) | SQL(プログラマブル言語) |
検索 | 木の枝葉をたどるイメージ | 表の行を走査するイメージ |
枝葉(Entry)は一意の情報でなくてはなりません。
スキーマ
さて、データ構造について説明しましたが、どのようにデータを保持するのでしょうか。
RDBMSでは、「CREATE TABLE」文を使用してスキーマ(表)を作成します。
LDAPでは、「Attribute」と「objectClass」によって取り扱う情報を定義します。
Attribute(アトリビュート)とは、取り扱うデータの属性が定義されます。RDBMSでいう
ところのフィールドに該当します。
objectClassは、このAttributeをまとめ制約条件を記載したオブジェクトとなります。
一般的にはAttributeとobjectClassはRFCにて定義されているものを使用します。
たとえ話ですが、以下の3つの入力項目をもつアドレス帳があったとるすと、、、
項目名 | 入力規制(型) |
---|---|
氏名 | 文字列 |
電話番号 | 数字、ハイフン、#、* |
住所 | 文字列 |
備考 | 文字列 |
まとめるのがobjectClassになります。
そして、制約条件とは「氏名」は必須で、「電話番号」または「住所」を記載。「備考」は
任意でなどという情報の適正化を指定する機能となります。