OpenLDAP
| 開発元 | OpenLDAP Project |
|---|---|
| 最新版 | 2.4.35 / 2013年3月31日 [1] |
| プログラミング言語 | C言語 |
| 対応OS | 各種 |
| プラットフォーム | クロスプラットフォーム |
| 種別 | LDAPディレクトリ・サービス |
| ライセンス | OpenLDAP Public License |
| 公式サイト | www.openldap.org |
OpenLDAPは、Lightweight Directory Access Protocol (LDAP) のフリーかつオープンソースの実装であり、OpenLDAP Project が開発している。独自のBSD系ライセンスである OpenLDAP Public License でリリースされている[2]。LDAPはプラットフォームとは独立したプロトコルである。いくつかのLinuxディストリビューションではOpenLDAPでLDAPをサポートしている。他にもBSD系、AIX、HP-UX、Mac OS X、Solaris、Microsoft 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 ではいくつかのサブプロジェクトも運営している。
バックエンド[編集]
概要[編集]
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クラスタエンジン上に構築したトランザクション型バックエンド。
- プロキシ型バックエンド - 他のデータストレージシステムとのゲートウェイとして機能する。
- ダイナミック型バックエンド - 要求された時にデータを生成する。
古いバージョンの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: SambaとKerberosのパスワードを管理。
- 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]。
脚注・出典[編集]
- ^ “OpenLDAP 2.4.35 Release Changes” (2013年3月31日). 2013年6月4日閲覧。
- ^ The OpenLDAP Public License OpenLDAP Project
- ^ The OpenLDAP Project Overview OpenLDAP Project
- ^ Kurt D. Zeilenga OpenLDAP Project
- ^ Howard's Miscellaneous Page
- ^ Pierangelo Masarati's Home Page
- ^ Writing SLAPI plugins
- ^ a b OpenLDAP 2.4 Announcement
外部リンク[編集]
- OpenLDAP公式サイト
- Using libldap, OpenLDAPクライアントAPIについてのチュートリアル
- An OpenLDAP Update by Marty Heyman 09/13/2007
- OpenLDAPの設計 @IT