OpenLDAP

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
OpenLDAP
開発元 OpenLDAP Project
最新版 2.4.39 / 2014年01月26日(7か月前) (2014-01-26 [1]
プログラミング言語 C言語
対応OS Unix系を中心にMicrosoft WindowsMacOSなど
プラットフォーム クロスプラットフォーム
サポート状況 開発中
種別 LDAPディレクトリ・サービス
ライセンス OpenLDAP Public License
公式サイト www.openldap.org
テンプレートを表示

OpenLDAPは、Lightweight Directory Access Protocol (LDAP) のフリーかつオープンソースの実装であり、OpenLDAP Project が開発している。独自のBSD系ライセンスである OpenLDAP Public License でリリースされている[2]。いくつかのLinuxディストリビューションではOpenLDAPでLDAPをサポートしている。他にもBSD系、AIXHP-UXMac OS XSolarisMicrosoft Windows(NT系の2000、XP、Vistaなど)、z/OSで動作する。

プロジェクトの歴史と中核チーム[編集]

OpenLDAP Project[3] は1998年、Kurt Zeilenga[4] が創始した。LDAPプロトコルの開発と改良を長期プロジェクトとして行ってきたミシガン大学のLDAPリファレンス実装のクローンを出発点としてプロジェクトが始まった。

2006年4月時点で、OpenLDAP Project の中核チームは Howard Chu(チーフアーキテクト)[5]、Pierangelo Masarati[6]、Kurt Zeilenga の3人で構成されている。他にも活発に活動している重要なコントリビュータとして、Luke Howard、Hallvard Furuseth、Quanah Gibson-Mount、Gavin Henry らがいる。

コンポーネント[編集]

OpenLDAPは次の3つのコンポーネントから成る。

  • slapd (Standalone LDAP Daemon) - スタンドアロン型のLDAPデーモンと対応するオーバーレイやツール
  • LDAPプロトコルを実装しているライブラリ群
  • クライアントソフトウェア(ldapsearch、ldapadd、ldapdelete、その他)

さらに OpenLDAP Project ではいくつかのサブプロジェクトも運営している。

  • JLDAP - Java用のLDAPクラスライブラリ
  • JDBC-LDAP - Java JDBC - LDAP ブリッジドライバ
  • ldapc++ - C++用のLDAPクラスライブラリ

バックエンド[編集]

概要[編集]

OpenLDAPサーバ (slapd) は歴史的経緯から、ネットワーク処理とプロトコル処理を受け持つフロントエンドと、データストレージを扱うバックエンドに分かれている。モジュラー構造になっており、バックエンドとしては通常のデータベースだけでなく様々なテクノロジーとのインタフェースを提供する多様なものが存在する。

なお、古いリリース (1.x) では、「バックエンド」と「データベース」はほぼ同義に使われていた。正確には、「バックエンド」はストレージインタフェースのクラスであり、「データベース」はバックエンドのインスタンスの1つである。slapdサーバは同時に複数のバックエンドを使うことができ、同種のバックエンドの複数のインスタンス(例えば多数のデータベース)を同時に扱うこともできる。

利用可能なバックエンド[編集]

現在[いつ?]、OpenLDAPディストリビューションには16種類のバックエンドが含まれており、他にもサードパーティが独自のバックエンドを開発している。標準バックエンドは大まかに以下の3種類に分類できる。

  • データストレージ型バックエンド - 実際にデータを格納する。
    • back-bdb: OpenLDAP用の最初のトランザクション型バックエンド。Berkeley DB をベースにしている。
    • back-hdb: back-bdb からの派生。完全な階層型データモデルで、サブツリーの改名をサポートしている。
    • back-ldif: プレーンテキストファイルである LDIF (LDAP Data Interchange Format) をベースにしている。
    • back-ndb: MySQLのNDBクラスタエンジン上に構築したトランザクション型バックエンド。
  • プロキシ型バックエンド - 他のデータストレージシステムとのゲートウェイとして機能する。
    • back-ldap: 他のLDAPサーバへの単純なプロキシ
    • back-meta: メタディレクトリ機能を持つプロキシ
    • back-passwd: Unix系のパスワードおよびグループデータを使用。
    • back-relay: 別のslapdバックエンドへ内部的にリダイレクトする。
    • back-sql: 任意のSQLデータベースとやり取りする。
  • ダイナミック型バックエンド - 要求された時にデータを生成する。
    • back-config: LDAP経由でslapdの設定が可能。
    • back-dnssrv: DNS経由でLDAPサーバの位置を把握する。
    • back-monitor: LDAP経由でslapdの統計情報にアクセス。
    • back-null: 何もしない。Unix系の/dev/nullに相当。
    • back-perl: LDAP要求に対して任意のPerlモジュールを呼び出す。
    • back-shell: LDAP要求に対して任意のシェルスクリプトを呼び出す。
    • back-sock: LDAP要求をプロセス間通信経由で任意のデーモンに転送する。

古いバージョンのOpenLDAPには今は使われていないバックエンドもあった。例えば、back-ldbm は元になったミシガン大学のコードを受け継いだバックエンドである。また、back-tcl は back-perl や back-shell と同様にTclスクリプトを呼び出すバックエンドである。

実際、back-perl、back-shell、back-sock といったバックエンドは任意のプログラミング言語へのインタフェースとすることが可能で、拡張やカスタマイズが自由に行える。これを利用して、コンパクトでうまく定義されたAPIを持つRPCエンジンとしてslapdを使うことも可能である。

オーバーレイ[編集]

概要[編集]

通常、LDAP要求はフロントエンドが受信し、解読し、バックエンドに処理させる。バックエンドが要求の処理を完了すると、フロントエンドに結果を返し、そこからLDAPクライアントに結果を送信する。オーバーレイはフロントエンドとバックエンドの間に挿入できるコードの断片である。したがって、そこで要求をインターセプトしてバックエンドが処理する前に別の動作を起動したり、バックエンドが返す結果をインターセプトすることもできる。オーバーレイはslapdの内部APIに完全にアクセスできるため、フロントエンドやバックエンドの関数も呼び出すことが可能である。一度に複数のオーバーレイを使うこともでき、フロントエンドとバックエンドの間にモジュールのスタックを形成できる。

オーバーレイは、データベース機能の強化に対応する単純な手段として使うことができ、新たなバックエンドを作成する必要がない。新機能をコンパクトで保守が容易なモジュール形式で追加できる。OpenLDAP 2.2 でオーバーレイが導入されて以来、多数のオーバーレイがコミュニティから集まっている。

利用可能なオーバーレイ[編集]

OpenLDAPディストリビューションには20以上のオーバーレイが含まれている。さらに10個のオーバーレイが user-contributed code section にあり、他にも続々と集まっている。

  • 中核オーバーレイ
    • accesslog: 別のLDAPデータベースにサーバのログを採取する。
    • auditlog: テキストファイルにサーバのログを採取する。
    • chain: クエリをインターセプトし、まとめる。back-ldap の一部。
    • collect: X.500風のcollective属性の実装
    • constraint: 特定の属性について、受容可能な値を制限する。
    • dds: ダイナミック・データ・サービス - その時点で自動的に生成できるエントリ。
    • deref: 検索結果内で参照されたエントリに関する情報を返す。
    • dyngroup: 単純なダイナミックグループをサポート。
    • dynlist: より洗練されたダイナミックグループ。
    • memberof: memberOf などのバックリスト属性をサポート。
    • pcache: 検索結果のキャッシュ(性能強化用)
    • ppolicy: LDAPパスワードポリシー - パスワードの品質、期限切れなど。
    • refint: 参照完全性
    • retcode: 各種操作で返す値を事前設定する(クライアントのデバッグ用)
    • rwm: 書き換えモジュール。LDAPデータを様々に変更。
    • seqmod: 個々のエントリへの書き込みのシリアライズ。
    • sssvlv: サーバサイドでのソートと、仮想リストビュー(未リリース)
    • syncprov: Syncreplプロバイダ。レプリケーションのマスター側実装
    • translucent: 半透過型パススルー。プロキシ型サーバでのローカルなデータ補強。
    • unique: ツリー内での属性値の一意性の保証。
    • valsort: 属性値の様々なソート。
  • ユーザーコントリビューションのオーバーレイ
    • addpartial: 追加要求を受け取り、そのエントリが既に存在していたら更新要求に置き換える。
    • allop: 要求の仕方を知らないクライアントに対して、指定可能な属性値全てを返す。
    • autogroup: 統計量グループの動的管理
    • denyop: 恣意的な設定の要求を拒否する。
    • lastmod: ツリー内の最終更新日時を管理。
    • nops: 冗長な更新を除去。
    • nssov: NSS要求とPAM要求にslapd内で直接応答し、nss-ldap と pam-ldap を不要にする。
    • proxyOld: Sunなどが使っていた古い ProxyAuthz の符号化をサポート。
    • smbk5pwd: SambaKerberosのパスワードを管理。
    • trace: LDAP要求と応答のログ。
    • usn: シーケンス番号の更新(未リリース)

OpenLDAPは、サン・マイクロシステムズやNetscape/Fedora/Red Hatが使っているプラグインアーキテクチャ SLAPI[7]もサポートしている。最新版では、SLAPIフレームワークはslapdのオーバーレイ内で実装されている。Sun/Netscape/Fedora/Red Hat 向けに書かれたプラグインの多くはOpenLDAP互換だが、OpenLDAPコミュニティではSLAPIはほとんど使われていない。

リリース履歴[編集]

OpenLDAPのメジャーリリースの履歴を示す。

OpenLDAP Version 1
ミシガン大学の最終リリース(リリース3.3)に対応。
OpenLDAP Version 2.0(2000年8月)
LDAPバージョン3サポート、IPv6サポート、各種機能強化。
OpenLDAP Version 2.1(2002年6月)
Berkeley DB ベースのバックエンドなどいくつかのバックエンドを実装、Simple Authentication and Security Layer (SASL) サポート。
OpenLDAP Version 2.2(2003年12月)
レプリケーション機能サポート (syncrepl)、オーバーレイ・インタフェース、各種データベースやRFC関連の機能強化。
OpenLDAP Version 2.3(2005年6月)
back-config バックエンドなど各種強化。
OpenLDAP Version 2.4(2007年10月)[8]
N-ウェイマルチマスター型レプリケーションサポート。スキーマ要素の動作中の削除・更新などの機能強化[8]

脚注・出典[編集]

外部リンク[編集]