Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

6.3. ナレッジ参照について

複数のデータベースにデータを分散させた後、ナレッジ参照、さまざまなデータベースに保持されているディレクトリー情報へのポインターを使用して、分散データ間の関係を定義します。Directory Server には、分散データを 1 つのディレクトリーツリーにリンクできるように、以下のタイプのナレッジ参照を提供します。
  • 参照: サーバーは、クライアントアプリケーションが要求を満たすために別のサーバーに問い合わせる必要があることを示す情報をクライアントアプリケーションに返します。
  • チェーン: サーバーは、クライアントアプリケーションの代わりに他のサーバーに問い合わせ、操作の完了時にクライアントアプリケーションに結果をまとめて返します。
以下のセクションでは、これら 2 種類のナレッジ参照を詳細に説明し、比較します。

6.3.1. 参照の使用

参照 とは、サーバーから返される情報のことで、クライアントアプリケーションに対して、操作リクエストを続行するにはどのサーバーに問い合わせればよいかを知らせるものです。このリダイレクトメカニズムは、クライアントアプリケーションがローカルサーバーに存在しないディレクトリーエントリーを要求すると発生します。
Directory Server は、2 種類の参照をサポートします。
  • デフォルトの参照: サーバーが一致する接尾辞を持たない DN をクライアントのアプリケーションが提示した場合、ディレクトリーはデフォルトの参照を返します。デフォルトの参照は、サーバーの設定ファイルに保存されます。Directory Server にはデフォルトの参照 1 つを設定し、各データベースには個別のデフォルト参照を設定できます。
    各データベースのデフォルトの参照は、接尾辞の設定情報により行われます。データベースの接尾辞が無効になっている場合は、その接尾辞に対して行われたクライアントの要求に対してデフォルトの参照を返すようにディレクトリーサービスを設定します。
    接尾辞の詳細は、「接尾辞について」 を参照してください。接尾辞の設定に関する詳細は、『『Red Hat Directory Server Administration Guide』』を参照してください。
  • スマート参照: スマート参照は、ディレクトリーサービス自体のエントリーに保存されます。スマート参照は、スマート参照を含むエントリーの DN に一致する DN を持つサブツリーの知識を有する Directory Server を指します。
すべての参照は、LDAP URL (LDAP Uniform Resource Locator) の形式で返されます。以下のセクションでは、LDAP 参照の構造の説明後、Directory Server でサポートされる 2 つの参照タイプを説明します。

6.3.1.1. LDAP 参照の構造

LDAP 参照には LDAP URL 形式の情報が含まれます。LDAP URL には以下の情報が含まれています。
  • 問い合わせるサーバーのホスト名。
  • LDAP 要求をリッスンするように設定されたサーバーのポート番号。
  • ベース DN (検索操作用) またはターゲット DN (操作の追加、削除、および変更用)。
たとえば、クライアントアプリケーションは、surname の値が Jensen のエントリーを dc=example,dc=com で検索します。参照は、以下の LDAP URL をクライアントアプリケーションに返します。
ldap://europe.example.com:389/ou=people, l=europe,dc=example,dc=com
この参照は、クライアントアプリケーションがポート 389 でホスト europe.example.com にコンタクトするように指示し、root 接尾辞 ou=people, l=europe,dc=example,dc=com を使用して検索を送信します。
LDAP クライアントアプリケーションは、参照を処理する方法を決定します。クライアントアプリケーションの中には、参照されたサーバーで、操作を自動的に再試行するものがあります。他のクライアントアプリケーションは、参照情報をユーザーに返します。Red Hat Directory Server が提供するほとんどの LDAP クライアントアプリケーション (コマンドラインユーティリティーなど) は、自動的に参照に従います。最初のディレクトリー要求で提供されたのと同じバインド認証情報が、サーバーへのアクセスに使用されます。
ほとんどのクライアントアプリケーションは、限られた数の参照 (hops) に従います。従う参照数を制限することで、クライアントアプリケーションがディレクトリールックアップ要求を完了しようとして費やす時間を短縮し、循環参照パターンによるハングプロセスを排除することができます。

6.3.1.2. デフォルトの参照について

問い合わせたサーバーまたはデータベースにリクエストされたデータが含まれていない場合、デフォルトの参照はクライアントに返されます。
Directory Server は、リクエストされたディレクトリーオブジェクトの DN を、ローカルサーバーがサポートするディレクトリー接尾辞と比較することで、デフォルトの参照を返すかどうかを決定します。DN がサポートされる接尾辞と一致しない場合には、Directory Server はデフォルトの参照を返します。
たとえば、ディレクトリークライアントは、以下のディレクトリーエントリーをリクエストします: uid=bjensen,ou=people,dc=example,dc=com
ただし、サーバーは dc=europe,dc=example,dc=com 接尾辞に保存されているエントリーのみを管理します。ディレクトリーは、dc=example,dc=com 接尾辞に保存されているエントリーについて、どのサーバーに問い合わせるべきかを示すクライアントに参照を返します。その後、クライアントは該当するサーバーに問い合わせ、元のリクエストを再提出します。
デフォルトの参照が、ディレクトリーサービスのディストリビューションに関する詳細情報を持つ Directory Server を参照するように設定します。サーバーのデフォルトの参照は、nsslapd-referral 属性で設定します。ディレクトリーインストールの各データベースのデフォルトの参照は、設定のデータベースエントリーの nsslapd-referral 属性で設定されます。これらの属性値は、dse.ldif ファイルに保存されます。
デフォルトの参照の設定に関する詳細は、『『Red Hat Directory Server Administration Guide』』を参照してください。

6.3.1.3. スマート参照

Directory Server では、スマート参照 を使用することもできます。スマート参照は、ディレクトリーエントリーまたはディレクトリーツリーを特定の LDAP URL に関連付けます。つまり、リクエストは以下のいずれかに転送されます。
  • 別のサーバーに含まれる同じ namespace。
  • ローカルサーバー上の異なる namespace。
  • 同じサーバー上の異なる namespace。
デフォルトの参照とは異なり、スマート参照はディレクトリーサービス自体に保存されます。スマート参照の設定および管理の詳細は『『Red Hat Directory Server Administration Guide』』を参照してください。
たとえば、Example Corp. のアメリカのオフィス用のディレクトリーサービスには、ou=people,dc=example,dc=com ディレクトリーブランチポイントが含まれます。
ou=people エントリー自体のスマート参照を指定して、このブランチのすべての要求を、Example Corp. のヨーロッパのオフィスの ou=people ブランチにリダイレクトします。スマート参照は ldap://europe.example.com:389/ou=people,dc=example,dc=com です。
アメリカのディレクトリーサービスの people ブランチへのリクエストは、すべてヨーロッパのディレクトリーにリダイレクトされます。以下で説明します。

図6.7 スマート参照を使用したリクエストのリダイレクト

スマート参照を使用したリクエストのリダイレクト
同じメカニズムを使用して、別の namespace を使用する異なるサーバーにクエリーをリダイレクトすることができます。たとえば、Example Corp. のイタリアのオフィスで働く従業員が、Example Corp. のアメリカの従業員の電話番号をヨーロッパのディレクトリーサービスにリクエストするとします。ディレクトリーサービスは参照用に ldap://europe.example.com:389/ou=US employees,dc=example,dc=com を返します。

図6.8 異なるサーバーと namespace へのクエリーのリダイレクト

異なるサーバーと namespace へのクエリーのリダイレクト
最後に、複数の接尾辞が同じサーバーで提供される場合、クエリーをある namespace から同じマシンで提供される別の namespace にリダイレクトすることができます。たとえば、o=example,c=us のローカルマシンのすべてのクエリーを dc=example,dc=com にリダイレクトするには、スマート参照 ldap:///dc=example,dc=como=example,c=us エントリーに配置します。

図6.9 同一サーバー上のある namespace から別の namespace へのクエリーのリダイレクト

同一サーバー上のある namespace から別の namespace へのクエリーのリダイレクト
注記
この LDAP URL の 3 番目のスラッシュは、URL が同じ Directory Server を参照していることを示しています。
ある namespace から他の namespace への参照の作成は、検索がその識別名に基づくクライアントに対してのみ機能します。ou=people,o=example,c=US 以下の検索などのその他の種類の操作は、正しく実行されません。
LDAP URLS と Directory Server エントリーにスマート URL を追加する方法は、『『Red Hat Directory Server Administration Guide』』を参照してください。

6.3.1.4. スマート参照の設計に関するヒント

スマート参照の実装は簡単ではありますが、使用する前に以下の点を考慮してください。
  • 設計はシンプルにします。
    複雑な参照の Web を使用してディレクトリーサービスをデプロイすると、管理が困難になります。スマート参照を使いすぎると、循環参照パターンが発生する可能性もあります。たとえば、参照が LDAP URL を指し、その URL がまた別の LDAP URL を指し、といった具合に、チェーンのどこかの参照が元のサーバーを指すまで続きます。以下で説明します。

    図6.10 循環参照パターン

    循環参照パターン
  • メジャーなブランチポイントでリダイレクトします。
    ディレクトリーツリーの接尾辞レベルでリダイレクトを処理する参照の使用を制限します。スマート参照は、リーフ (ブランチ以外) エントリーに対するルックアップ要求を、異なるサーバおよび DN にリダイレクトします。その結果、スマート参照をエイリアスメカニズムとして使用したくなるため、ディレクトリー構造のセキュア化は複雑で困難な方法になります。ディレクトリーツリーの接尾辞またはメジャーブランチポイントに対する参照を制限すると、管理する必要のある参照数が制限され、その後ディレクトリーの管理オーバーヘッドが削減されます。
  • セキュリティーへの影響を考慮します。
    アクセス制御は参照の境界を越えません。リクエストを発信したサーバーがエントリーへのアクセスを許可していても、スマート参照が別のサーバーにクライアントリクエストを送信すると、クライアントアプリケーションのアクセスが許可されない場合があります。
    さらに、クライアントの認証が行われるためにクライアントが参照されるサーバー上でクライアントの認証情報が利用可能である必要があります。