6.3. ナレッジ参照について
- 参照: サーバーは、クライアントアプリケーションが要求を満たすために別のサーバーに問い合わせる必要があることを示す情報をクライアントアプリケーションに返します。
- チェーン: サーバーは、クライアントアプリケーションの代わりに他のサーバーに問い合わせ、操作の完了時にクライアントアプリケーションに結果をまとめて返します。
6.3.1. 参照の使用 リンクのコピーリンクがクリップボードにコピーされました!
- デフォルトの参照: サーバーが一致する接尾辞を持たない DN をクライアントのアプリケーションが提示した場合、ディレクトリーはデフォルトの参照を返します。デフォルトの参照は、サーバーの設定ファイルに保存されます。Directory Server にはデフォルトの参照 1 つを設定し、各データベースには個別のデフォルト参照を設定できます。各データベースのデフォルトの参照は、接尾辞の設定情報により行われます。データベースの接尾辞が無効になっている場合は、その接尾辞に対して行われたクライアントの要求に対してデフォルトの参照を返すようにディレクトリーサービスを設定します。接尾辞の詳細は、「接尾辞について」 を参照してください。接尾辞の設定に関する詳細は、『Red Hat Directory Server Administration Guide』を参照してください。
- スマート参照: スマート参照は、ディレクトリーサービス自体のエントリーに保存されます。スマート参照は、スマート参照を含むエントリーの DN に一致する DN を持つサブツリーの知識を有する Directory Server を指します。
6.3.1.1. LDAP 参照の構造 リンクのコピーリンクがクリップボードにコピーされました!
- 問い合わせるサーバーのホスト名。
- LDAP 要求をリッスンするように設定されたサーバーのポート番号。
- ベース DN (検索操作用) またはターゲット DN (操作の追加、削除、および変更用)。
ldap://europe.example.com:389/ou=people, l=europe,dc=example,dc=com
ldap://europe.example.com:389/ou=people, l=europe,dc=example,dc=com
6.3.1.2. デフォルトの参照について リンクのコピーリンクがクリップボードにコピーされました!
uid=bjensen,ou=people,dc=example,dc=com
nsslapd-referral 属性で設定します。ディレクトリーインストールの各データベースのデフォルトの参照は、設定のデータベースエントリーの nsslapd-referral 属性で設定されます。これらの属性値は、dse.ldif ファイルに保存されます。
6.3.1.3. スマート参照 リンクのコピーリンクがクリップボードにコピーされました!
- 別のサーバーに含まれる同じ namespace。
- ローカルサーバー上の異なる namespace。
- 同じサーバー上の異なる namespace。
図6.7 スマート参照を使用したリクエストのリダイレクト
図6.8 異なるサーバーと namespace へのクエリーのリダイレクト
図6.9 同一サーバー上のある namespace から別の namespace へのクエリーのリダイレクト
6.3.1.4. スマート参照の設計に関するヒント リンクのコピーリンクがクリップボードにコピーされました!
- 設計はシンプルにします。複雑な参照の Web を使用してディレクトリーサービスをデプロイすると、管理が困難になります。スマート参照を使いすぎると、循環参照パターンが発生する可能性もあります。たとえば、参照が LDAP URL を指し、その URL がまた別の LDAP URL を指し、といった具合に、チェーンのどこかの参照が元のサーバーを指すまで続きます。以下で説明します。
図6.10 循環参照パターン
- メジャーなブランチポイントでリダイレクトします。ディレクトリーツリーの接尾辞レベルでリダイレクトを処理する参照の使用を制限します。スマート参照は、リーフ (ブランチ以外) エントリーに対するルックアップ要求を、異なるサーバーおよび DN にリダイレクトします。その結果、スマート参照をエイリアスメカニズムとして使用したくなるため、ディレクトリー構造のセキュア化は複雑で困難な方法になります。ディレクトリーツリーの接尾辞またはメジャーブランチポイントに対する参照を制限すると、管理する必要のある参照数が制限され、その後ディレクトリーの管理オーバーヘッドが削減されます。
- セキュリティーへの影響を考慮します。アクセス制御は参照の境界を越えません。リクエストを発信したサーバーがエントリーへのアクセスを許可していても、スマート参照が別のサーバーにクライアントリクエストを送信すると、クライアントアプリケーションのアクセスが許可されない場合があります。さらに、クライアントの認証が行われるためにクライアントが参照されるサーバー上でクライアントの認証情報が利用可能である必要があります。
6.3.2. チェーンの使用 リンクのコピーリンクがクリップボードにコピーされました!
- リモートデータへの非表示のアクセス。データベースリンクはクライアントのリクエストを解決するため、データ配布はクライアントから完全に非表示になります。
- 動的管理。システム全体をクライアントアプリケーションで利用できる状態で、ディレクトリーサービスの一部をシステムに追加したり、システムから削除したりできます。データベースリンクは、ディレクトリーサービス全体にエントリーが再分散されるまで、アプリケーションに参照を一時的に返すことができます。これは、クライアントアプリケーションをデータベースに転送するのではなく、参照を返すことができる接尾辞自体で実施することも可能です。
- アクセス制御。データベースリンクは、クライアントアプリケーションになりすまし、適切な認証 ID をリモートサーバーに提供します。アクセス制御の評価が必要ない場合は、リモートサーバーでユーザーのなりすましを無効にすることができます。データベースリンクの設定に関する詳細は、『Red Hat Directory Server Administration Guide』を参照してください。
6.3.3. 参照とチェーンのどちらかを選択する リンクのコピーリンクがクリップボードにコピーされました!
6.3.3.1. 使用に関する相違点 リンクのコピーリンクがクリップボードにコピーされました!
6.3.3.2. アクセス制御の評価 リンクのコピーリンクがクリップボードにコピーされました!
参照を使用した検索リクエストの実行
以下の図は、参照を使用したクライアントからサーバーへの要求を示しています。
図6.11 参照を使用したクライアント要求のサーバーへの送信
- クライアントアプリケーションは、最初にサーバー A にバインドします。
- サーバー A にはユーザー名とパスワードを提供するクライアントのエントリーが含まれるため、バインドの受け入れメッセージを返します。参照を機能させるためには、クライアントエントリーがサーバー A に存在する必要があります。
- クライアントアプリケーションは操作リクエストをサーバー A に送信します。
- ただし、サーバー A には要求された情報が含まれていません。代わりに、サーバー A は、サーバー B に連絡するよう指示するクライアントアプリケーションへの参照を返します。
- その後、クライアントアプリケーションはサーバー B にバインドリクエストを送信します。正常にバインドするには、サーバー B にクライアントアプリケーションのエントリーも含まれている必要があります。
- バインドに成功し、クライアントアプリケーションは検索操作をサーバー B に再送信できるようになりました。
チェーンを使用した検索リクエストの実行
サーバー間でクライアントエントリーを複製する問題は、チェーンを使用して解決されます。チェーンシステムでは、検索リクエストは応答があるまで複数回転送されます。
図6.12 チェーンを使用したクライアント要求のサーバーへの送信
- クライアントアプリケーションがサーバー A にバインドすると、サーバー A はユーザー名とパスワードが正しいかどうかを確認しようとします。
- サーバー A にはクライアントアプリケーションに対応するエントリーが含まれません。代わりに、クライアントの実際のエントリーが含まれるサーバー B へのデータベースリンクが含まれます。サーバー A はバインドリクエストをサーバー B に送信します。
- サーバー B はサーバー A に受け入れ応答を送信します。
- 次に、サーバー A はクライアントアプリケーションのリクエストをデータベースリンクを使用して処理します。データベースリンクは、サーバー B にあるリモートデータストアに問い合わせ、検索操作を処理します。
図6.13 異なるサーバーを使用したクライアントの認証およびデータの取得
- クライアントアプリケーションがサーバー A にバインドすると、サーバー A はユーザー名とパスワードが正しいかどうかを確認しようとします。
- サーバー A にはクライアントアプリケーションに対応するエントリーが含まれません。代わりに、クライアントの実際のエントリーが含まれるサーバー B へのデータベースリンクが含まれます。サーバー A はバインドリクエストをサーバー B に送信します。
- サーバー B はサーバー A に受け入れ応答を送信します。
- サーバー A は次に別のデータベースリンクを使用して、クライアントアプリケーションのリクエストを処理します。データベースリンクは、サーバー C にあるリモートデータストアに問い合わせ、検索操作を処理します。
サポートされないアクセス制御
データベースリンクは、以下のアクセス制御をサポートしません。
- ユーザーエントリーが別のサーバーにある場合、ユーザーエントリーのコンテンツにアクセスする必要のあるコントロールはサポートされません。これには、グループ、フィルター、およびロールに基づくアクセス制御が含まれます。
- クライアント IP アドレスまたは DNS ドメインに基づいた制御は拒否される可能性があります。これは、データベースリンクがリモートサーバーに問い合わせする際に、クライアントになりすますためです。リモートデータベースに IP ベースのアクセス制御が含まれている場合は、元のクライアントドメインではなく、データベースリンクのドメインを使用して評価されます。