14.6. 永続検索の使用
永続的な検索は ldapsearch で、最初の検索結果が返されても開かれたままになります。
重要
Red Hat Enterprise Linux の OpenLDAP クライアントツールは、永続的な検索に対応していません。ただし、サーバー自体は機能します。その他の LDAP クライアントは、永続的な検索を実行するために使用する必要があります。
永続検索の目的は、ディレクトリーエントリーへの変更の継続的なリストと、ハイブリッド検索や changelog などの完全なエントリー自体を提供することです。そのため、検索コマンドでは、どのエントリーを返すか (検索パラメーター)、どのような変更によってエントリーが返されるか (エントリー変更パラメーター) を指定する必要があります。
永続的な検索は、Directory Server にアクセスするアプリケーションまたはクライアントで特に役立ち、2 つの重要な利点を提供します。
- 一貫性のあるローカルキャッシュと現在のローカルキャッシュを保持します。クライアントは、ディレクトリーに接続してクエリーを試行する前にローカルキャッシュをクエリーします。永続検索は、これらのクライアントのパフォーマンスを改善するのに必要なローカルキャッシュを提供します。
- ディレクトリーアクションを自動的に開始します。永続キャッシュはエントリーの変更時に自動的に更新され、永続検索結果ではエントリーに対して実行された変更の種類を表示できます。別のアプリケーションでは、その出力を利用してエントリーを自動的に更新することができます。たとえば、新しいユーザーのためにメールサーバーにメールアカウントを自動的に作成したり、固有のユーザー ID 番号を生成したりすることができます。
永続検索を実行する場合のパフォーマンスに関する考慮事項がいくつかあります。
- クライアントの接続解除時に ldapsearch は通知を送信せず、検索が切断されている間に変更についての通知が送信されません。これは、クライアントのキャッシュが切断されても更新されないことを意味し、切断中に変更した新しいエントリー、変更されたエントリー、または削除されたエントリーでキャッシュを更新する適切な方法はありません。
- 攻撃者は、サービス拒否攻撃を開始するために多数の永続検索を開くことができます。
- 永続的な検索では、Directory Server とクライアント間で TCP 接続を開放する必要があります。これは、サーバーが多くのクライアント接続を許可し、アイドル状態の接続を閉じる方法を持つ場合にのみ行う必要があります。
アクセスログでは、永続検索はタグ options=persistent で識別されます。
[12/Jan/2009:12:51:54.899423510 -0500] conn=19636710736396323 op=0 SRCH base="dc=example,dc=com" scope=2 filter="(objectClass=person)" attrs=ALL options=persistent