目次
概要
LDAP (Lightweight Directory Access Protocol)は、情報ディレクトリへのアクセスと管理を行うために設計されたプロトコルセットです。LDAPは、ユーザおよびグループ管理、システム構成の管理、アドレス管理など、さまざまな目的に使用できます。この章では、OpenLDAPの動作原理とYaSTを使用したLDAPデータの管理方法の基本事項について説明します。LDAPプロトコルには複数の実装方法がありますが、この章ではもっぱらOpenLDAPの実装を中心に説明します。
ネットワーク環境では、重要な情報をすぐに利用できるように整理しておくことは不可欠です。そのため、一般的に使用されているイエローページのようなディレクトリサービスを使用して、情報を整理し、すぐに検索できる形式にしておくことができます。
理想的なケースは、一元的なサーバでデータをディレクトリに保持し、特定のプロトコルを使用してそれをすべてのクライアントに配布するという形態です。データはさまざまなアプリケーションがアクセスできる方法で整理されます。この方法では、個々のカレンダツールや電子メールクライアントが独自のデータベースを持つ必要はありません。一元的なリポジトリにアクセスすればよいためです。これにより、情報管理のための負荷も大幅に軽減されます。LDAP (lightweight directory access protocol)のようなオープンで標準化されたプロトコルを使用すれば、可能な限り多くの異なるクライアントアプリケーションが、このような情報にアクセスできるようになります。
この文脈でのディレクトリとは、高速かつ効果的に読み込みと検索ができるように最適化された一種のデータベースです。
膨大な同時読み込みアクセスを可能にするため、書き込みアクセスは、管理者による少量の更新作業に限られます。従来のデータベースは、できる限り大量のデータを短時間に受け付けられるように最適化されます。
書き込みアクセスは制約された形でのみ可能なため、ディレクトリサービスは、ほとんどが変更のない静的情報の管理に使用されます。一般に、非常に頻繁に変更されるデータ(動的データ)は、従来のデータベースに保存されます。たとえば、企業ディレクトリにある電話番号は、経理で管理する数字ほど頻繁に変更されません。
静的デー^を管理する場合、既存のデータセットの更新は非常にまれです。動的データ、特に銀行口座や経理のデータセットが関与する場合、データの一貫性が最重要課題となります。たとえばある項目から差し引かれた金額を他の項目に加算する場合、データストックで残高を正しく維持するためには、1回のトランザクション内で両方の操作が同時に行われる必要があります。データベースはこのようなトランザクションをサポートしますが、ディレクトリではサポートされません。ディレクトリでは、短期的にデータの一貫性が崩れても大きな問題にはなりません。
LDAPなどのディレクトリサービスの設計には、複雑な更新やクエリメカニズムのサポートは含まれません。このサーrスにアクセスするすべてのアプリケーションが、すばやく簡単にアクセスできることが主な課題です。
Unix系システムの管理者は、従来から、ネットワーク内の名前の解決やデータ配信にNISサービスを使用しています。設定データは/etc内のファイルに保存され、group、hosts、mail、netgroup、networks、passwd、printcap、protocols、rpc、およびservicesの各ディレクトリは、ネットワーク内の複数のクライアントに分散されています。これらのファイルはシンプルテキストファイルのため、保守にそれほどの手間はかかりません。しかし、構造化されていないため、大量のデータを処理することがますます困難になっています。NISはUnix系プラットフォーム専用に設計されています。このため、異種ネットワークでの一元的データ管理には採用できません。
LDAPサービスはNISと異なり、純粋なUnix系ネットワークに制限されていません。Windowsサーバ(2000以降)は、LDAPをディレクトリサービスとしてサポートします。前述のアプリケーションタスクは、Unix系以外のシステムでもサポートされます。
LDAPの原則は、一元管理が必要なあらゆるデータ構造に適用可能です。いくつかの例を次に示します。
NISサービスの代替としての採用
メールルーティング(postfix、sendmail)
Mozilla、Evolution、およびOutlookなどのメールクライアント用アドレス帳
BIND9ネームサーバのゾーン記述の管理
異種ネットワークでのSambaのユーザ認証
LDAPはNISと異なり拡張できるため、これら以外にも広範な用途が考えられます。データが明確に定義された階層構造になっているため、検索が容易であり、大量データの管理が簡単になります。