LDAPサーバを使ってディレクトリを検索する

このセクションでは、次の情報について説明します。


検索制限を設定する

次のLDAPサーバオブジェクトの属性により、LDAPサーバのディレクトリ検索方法を指定することができます。

次の図は、Novell iManagerにおけるこれらの属性を示します。


  1. Novell iManagerで、[役割およびタスク]ボタンRoles and Tasks buttonをクリックします。

  2. [LDAP]>[LDAPの概要]>[LDAPサーバの表示]の順にクリックします。

  3. [LDAPサーバオブジェクト]>[検索]の順にクリックします

  4. 制限セクションをスクロールして値を入力し、[OK]をクリックします。

クライアントも、検索要求に制限を設定することもできます(たとえば検索を2秒に制限するなど)。クライアントの制限がサーバの制限と競合する場合、LDAPサーバは値が小さい方の要求を採用します。

検索は、アクセス制御リスト(ACL)に基づいて実行されます。このため、匿名検索の場合は、ディレクトリに何千というエントリが存在していても、Public権で見ることのできるごく一部のエントリしか返されないことがあります。


参照を使用する

参照は、名前を解決するためのクライアント中心の方法です。LDAPクライアントがLDAPサーバにリクエストを送信すると、LDAPサーバはリクエスト操作のターゲットエントリをローカルに見つけようとします。LDAPサーバはターゲットエントリを見つけられないと、所有する知識参照を使用して、そのエントリについてのより多くの知識を持つ第2のLDAPサーバへの参照を生成します。第1のサーバは、参照情報をLDAPクライアントに送信します。

次に、LDAPクライアントは第2のLADPサーバへ接続し、操作を再実行します。第2のLDAPサーバが操作のターゲットエントリを保持している場合は、そのサーバが操作を実行します。エントリを保持していない場合は、第2のLADPサーバもまた参照をクライアントに送信します。この操作は、次のいずれかの状況になるまで続けられます。

LDAP for eDirectory 8.7で導入された機能により、参照の動作が以前のバージョンのeDirectoryおよびNDSから少し変更されました。これにより、LDAPサービスの環境設定方法も変更されました。


デフォルトの参照

通常、デフォルトの参照URLには、ツリーのルートを保持するサーバを指すLDAP URLが含まれています。LDAP URLの形式を次に示します。ldap://host:port

[デフォルト参照URL]フィールドに、デフォルトの参照を入力します。


これまで、eDirectory LDAPサーバは、多くのフェールオーバー時にデフォルトの参照を送信していました。これが、この動作を予期しないユーザを混乱させる結果になっています。そこで、LDAP Services for eDirectory 8.7.3では、サブオーディネート参照で、デフォルトの参照が送信される場合を指定できるようになりました。

この新しいオプションは、LDAPサーバおよびLDAPグループオブジェクトのldapDefaultReferralBehavior属性の値で指定します。値は次のビットのビットマスクである整数です。

ビット

0x00000001

ベースDNが見つかりません

0x00000002

ベースDNは、利用できないeDirectoryサーバ上にあります

0x00000004

検索スコープのエントリは、利用できないeDirectoryサーバ上にあります

LDAPサーバがその操作に対して「常に参照する」に設定されており、リストされたいずれかの条件と一致し、対応する値が設定されている場合、デフォルトの参照が返されます。


検索操作の参照を設定する

LDAP for eDirectory 8.7で導入された機能により、参照の動作が以前のバージョンのeDirectoryおよびNDSから少し変更されました。これにより、LDAPサービスの環境設定方法も変更されました。

eDirectoryツリー内の他のeDirectoryサーバに参照を返すようにeDirectory LDAPサーバを設定することができます。デフォルトでは、LDAPサーバはユーザに代わってすべての操作を他のeDirectoryサーバにチェーンし、参照は返しません。

eDirectory 8.7より以前は、参照オプションの設定はLDAPグループオブジェクトでだけしか使用できませんでした。eDirectory 8.7.3では、LDAPサーバオブジェクトにもこのオプションを設定することができるようになりました。LDAPサーバオブジェクトの設定により、LDAPグループオブジェクトの設定は上書きされます。

dapSearchReferralOption属性を操作することにより、参照オプションを設定することができます。LDAP Services for eDirectory 8.7より以前は、この属性を次のオプションに設定することができました。

これらの参照オプションは、eDirectoryツリー内の他のeDirectoryサーバの参照およびチェーンでだけ使用できます。この設定は、非委任パーティションからの参照は制御しません。そのため、[参照オプション]ドロップダウンリストでオプション([常にチェーンする]など)を選択しても、他のサーバの非委任パーティションからは参照が送信されます。

LDAP Services for eDirectory 8.7.aでは[常にチェーンする]オプションにより、eDirectory DSA以外の上方参照がサポートされています。常にチェーンするを参照してください。

次の図は、検索およびその他の操作に使用する[LDAP参照]ドロップダウンリストを示しています。


eDirectory操作にはこの他に、「追加」、「削除」、「編集」、「バインド」の各操作の参照があります。


常にチェーンする

[常にチェーンする]オプションは、「まったく参照しない」ように設定するオプションです。このオプションを選択すると、eDirectory LDAPサーバは、eDirectoryツリー内にある他のeDirectoryサーバに参照を返しません。LDAPサーバは、要求を出したクライアントに代わって他のLDAPサーバをチェックし、クライアントに参照を返します。

[常にチェーンする]オプションは、eDirectoryをグローバル連結ツリーの従属サーバとして使用している場合に適しています。

この参照オプションは、eDirectoryツリー内の参照の処理設定にのみ使用します。このオプションがeDirectoryサーバ以外のサーバの参照の動作に影響することはありません。

他のeDirectoryサーバへの参照をブロックすることにあまり意味はありませんが、これが重要になる場合もあります。eDirectory 8.7以降のサーバ上の非委任データを古いバージョンのeDirectoryサーバ上で複製すると、古いサーバを参照したときにクライアントアプリケーションのグローバルツリーが歪んで表示されることがあります。

たとえば、LDAPクライアントはLDAPサーバの参照をキャッシュし、最後に通信したサーバに要求を送信するとします。クライアントが上方参照をサポートするeDirectoryサーバに要求を送信するよう設定されている場合、クライアントのグローバルツリーは正常に表示されます。

しかし、eDirectory8.7以前のLDAPサーバは、非委任領域と上方参照を認識しません。このため、クライアントがeDirectoryツリー内の以前のバージョンのeDirectoryサーバの参照に従い、要求をそのサーバに送信し続けると、以前のバージョンのLDAPサーバにより、非委任データが実際のディレクトリツリーデータであるかのように表示されてしまいます。

ただし、クライアントによっては、RootDSEのsupportedFeatures属性をチェックし、サーバが上方参照をサポートしているか確認できるものもあります。


チェーンを優先する

[チェーンを優先する]オプションを選択すると、通常、検索操作で参照は返されません。LDAPサーバはその代わり、すべてのeDirectory DSAに対する検索操作を実行します。

ただし、持続的検索制御を設定して検索を実行する場合は例外となります。Novellの実装する持続的検索ではチェーンがサポートされていないため、検索スコープがローカルに限定されていない場合に参照が送信されます。

LDAPサーバが検索操作を受信します。ツリーのエントリがローカルに格納されていない場合、サーバは自動的に他のサーバにチェーンします。エントリの検出後、LDAPサーバはLDAPクライアントのプロキシとして機能します。LDAPサーバはLDAPクライアントにバインドされたものと同じ識別情報を使用してリモートサーバの認証を受け、そこで検索操作を続行します。

最初に要求を受信したLDAPサーバが、LDAPクライアントにすべての検索エントリと検索結果を送信します。このLDAPサーバが要求をすべて処理するため、LDAPクライアントからは他のサーバが関与していることはわかりません。

eDirectoryでチェーンを使用すると、あるLDAPサーバに多くのデータがない場合でも、そのサーバがツリー全体のデータを保持しているかのように見えます。

[チェーンを優先する]は、パーティションに深くかかわるオプションです。

シナリオ: 他のパーティションで情報を探す --- Digital Airlines社で、ユーザがLDAPサーバDAir43に[チェーンを優先する]オプションを選択しました。DAir43はパーティションAにあります。パーティションBはAのサブパーティションで、LDAPサーバDAir44はこのパーティションにあります。

あるLDAPクライアントが検索を要求します。DAir43は、エントリをローカルで検索しますが、データは一部しか見つかりません。DAir43は、要求されたエントリを持つDigitalAir44に自動的にチェーンします。DAir44は、DAir43にデータを送信し、DAir43は、LDAPクライアントにエントリを送信します。

[チェーンを優先する]オプションを使用すると、操作が持続的検索である場合を除き、LDLAPサーバは必要に応じて検索要求を他のサーバにチェーンします。持続的検索の詳細については、持続的検索:eDirectoryイベントの設定を参照してください。


参照を優先する

[参照を優先する]オプションを選択すると、必要に応じ、参照の検索結果がeDirectoryツリー内の他のeDirectoryサーバに返されます。この参照は、データを持つサーバが動作可能であり、LDAPサービスが稼動していることをローカルサーバが確認した場合のみ送信されます。それ以外の場合、操作は他のサーバにチェーンされるか、他のサーバが動作していない場合は処理に失敗します。

パーティションが2つあり、サブツリー検索を実行するとします。ローカルサーバから検索エントリがすべて検出されるまで検索が実行されます。次に、他のサーバの検索が実行されます。データのレプリカ(そのパーティション)を持つサーバがnldap.nlmも実行している場合、LDAPサーバはLDAP参照を作成し、それをLDAPクライアントに返します。

レプリカのあるサーバがnldap.nlmを実行していない場合、LDAPサーバは要求を他のサーバにチェーンし、そこで検索を完了します。

nldap.nlmが起動されると、LDAPサーバはそのLDAPサーバが参照先になっているeDirecotryと通信します。クライアントが参照を受信したが、その参照が停止した場合は、LDAPサーバが実行されていません。


常に参照する

[常に参照する]オプションは、デフォルト参照がさまざまなフェールオーバー(たとえば、オブジェクトが見つからなかったり、サーバがダウンしているなど)の状況で送信される場合を除き、[参照を優先する]と同じロジックに従います。

残りのデータを保持している他のサーバでLDAPサービスが実行されていない場合、最初のLDAPサーバは要求を第2のサーバへチェーンしません。

[常に参照する]オプションを設定している場合には、デフォルト参照を指定することができます。[デフォルトの照会先]フィールドで2つの異なるベンダのLDAPサーバを結合し、独自のディレクトリツリーを構築することができます。

シナリオ: デフォルトサーバを使用する --- 1つのLDAPツリーがあるとします。ツリーの一部にはeDirectoryのサービスが適用されています。従属パーティションにはiPlanetのサービスが実行されています。[デフォルトの照会先]フィールドに、iPlanetサーバのURLを入力します。あるLDAPクライアントが検索を要求します。

ベースDNを解決できないため、LDAPサーバは[デフォルトの照会先]フィールドに入力された文字列をクライントに送ります。LDAPクライアントはこの参照のURLで指定された場所を参照してiPlanetサーバに接続し、ここで検索は完了します。

デフォルト参照が設定されており、ベースDNが見つからない場合、サーバはクライアントにデフォルト参照を返します。

参照の形式は、LDAP URLです(例: LDAP://123.23.45.6:389)。

LDAPサーバは、デフォルト参照をクライアントに送信する際(ベースDNが利用できない場合)、スラッシュ(/)とクライアントが検索中のDNを追加します。デフォルト参照と追加された情報がクライアントに送信されます。クライアントはデフォルト参照で指定したサーバに検索要求を送信します。

LDAPグループオブジェクトには、デフォルト参照の文字列フィールドがあります。LDAPサーバは、そのデータを文字列として扱います。このとき、確認は行われません。入力された文字列が、参照の先頭に追加されます。また、なんらかのデータが参照に追加されます。LDAPサーバが受け入れる文字列は、URLのような形式になります。

LDAPが実行されている他のeDirectoryサーバの参照がクライアントに返されるとき、クライアントは1つのサーバにつき2つの参照を受信します。

2つの参照を区別するために、クリアテキスト参照にはldap://、セキュアポート参照にはldaps://が付きます。

サーバからの参照の場合は、ポート番号を追加します。


他の操作の参照を設定する

履歴参照オプション設定は、検索操作にのみ使用します。他の処理に比較オプションを適用する場合は、ldapOtherReferralOption属性が使用されます。この属性により、同じ値を使って検索以外の操作の動作を制御できます(参照を送信しないバインドは除きます)。


ManageDsalTの非サポート

LDAP Services for eDirectory 8.7.3では、eDirectoryツリー内のeDirectoryサーバの分散関係は、ManageDsaIT制御以外の方法で管理されます。LDAPクライアントは、ManageDsalT制御を使ってeDirectory従属または相互参照の問い合わせや更新を実行することはできません。


サポートされていない機能

LDAP Services for eDirectory 8.7.3では、サブオーディネートリファレンスはサポートされていません。委任パーティションの従属パーティションとして非委任パーティションを作成したり、そのパーティションから参照を送信させると失敗する場合があります。これを行う場合、参照は操作のベースDNを解決するときのみ送信されます。SearchResultReferencesは送信されません。

非委任領域のデータの分散更新はサポートされていません。ルートサーバで名前の変更があった場合、非委任領域で同じデータを持ったeDirectoryサーバに名前の変更をコピーするようなメカニズムは組み込まれていません。


フィルタ済みレプリカを検索する

フィルタはレプリカが持つデータ量を制限します。そのため、フィルタ済みのレプリカには、ディレクトリが保持する実データが完全には表示されません。次はレプリカに適用されたフィルタの例です。

フィルタ済みレプリカのデータは不完全なため、LDAP検索の結果も制限されます。そのため、デフォルトでは、LDAP検索要求はフィルタ済みレプリカを調べません。

次のような場合は、フィルタ済みレプリカ検索を実行しても、レプリカフィルタから何も検索結果が返されないことがあります。

ただし、フィルタ済みレプリカに必要なデータがあることがわかっている場合は、LDAPサーバがフィルタ済みレプリカを検索するように設定することができます。

  1. Novell iManagerで、[役割およびタスク]ボタンRoles and Tasks buttonをクリックします。

  2. [LDAP]>[LDAPの概要]の順にクリックします。

  3. [LDAPサーバの表示]をクリックし、LDAPサーバの名前をクリックします。

  4. [検索]をクリックします。

  5. [検索にフィルタ済みレプリカに含める]を選択し、[適用]をクリックします。