[ウォークスルー] ビジネス データ カタログのセキュリティ トリマを使用して検索結果をトリミングする
Microsoft Office SharePoint Server 2007 でのエンタープライズ検索 は、クロール時に取得されたセキュリティ情報を使用して検索結果のクエリ時セキュリティ トリミングを実行します。ただし、このトリミングでは十分でない可能性があるシナリオがある場合があります。たとえば、バックエンド アプリケーションがクロール時にセキュリティ情報を提供できない場合や、最新のセキュリティ情報が必要なときにトリミングする前に再度クロールすることが実際的でない場合などです。このようなシナリオに対処するために、エンタープライズ検索のクエリ処理エンジンでは、動的なクエリ時セキュリティ トリミング モジュールに適用するフレームワークを提供して、1 つのユーザー クエリの結果ごとに、検索結果に表示する前にセキュリティ トリミングできるようにしています。
ビジネス データ カタログでは、CheckAccess メソッドを実装して、エンティティ インスタンスごとのセキュリティ トリミングのサポートを組み込んで、エンティティ インスタンス レベルでのセキュリティを保証できます。
ビジネス データ カタログのセキュリティ トリマでは、ビジネス データ カタログでインデックス処理されたエンティティ インスタンス (検索ドキュメント) を、ユーザーに返す前にカスタム セキュリティ トリミングできます。ユーザーのアクセス許可を判断するバックエンド アプリケーションのロジックを使用して、バックエンド データに対する現在のユーザーのアクセス許可に基づいて実行時の結果セット (エンティティ インスタンスを含む) をトリミングします。ビジネス データ カタログのセキュリティ トリマでは、実際のバックエンド アプリケーションが 1 つ以上のエンティティ インスタンスに対する現在のユーザーのアクセス許可をチェックするパブリック メソッドを提供することを前提としています。そのメソッドの入力パラメータはチェックする EntityInstance オブジェクトの ID を受け入れる必要があり、出力パラメータは現在のユーザーのアクセス権限を、対応する long 整数の配列 (または long 整数に変換可能ないくつかの値) として返す必要があります。
そのような API が使用可能な場合、ビジネス データ カタログのメタデータの作成者は、アプリケーション定義ファイルで AccessChecker という MethodInstanceType を定義し、Finder、SpecificFinder などの場合とほとんど同じ方法でバックエンド API にマップできます。AccessChecker メソッド インスタンスが使用可能になったら、ビジネス データ カタログのセキュリティ トリマはそれを使用して、CheckAccess メソッドを介してユーザーのアクセス許可を判断できます。
ビジネス データ カタログのセキュリティ トリマは、関連付けられているクロール ルールに一致する検索結果をクエリ エンジンが返すたびに CheckAccess メソッドを実行します。Entity.CheckAccess メソッドが呼び出されると、ビジネス データ カタログは、そのエンティティ用に登録された AccessChecker メソッド インスタンスに記述されているバックエンド API を実行します。バックエンド API は、現在のユーザーがそのエンティティ インスタンスに対して持っている権限を返します。この情報が Entity.CheckAccess メソッドに返され、最後にセキュリティ トリマに返されます。セキュリティ トリマはこの情報を使用して、トリミングしてから結果をユーザーに表示します。
このウォークスルーでは、AccessChecker メソッド インスタンスを AdventureWorksDW SQL Server 2005 のサンプル に追加する手順、ビジネス データ カタログのセキュリティ トリマを登録する手順、およびクロール ルールとコンテンツのソースをセキュリティ トリミングされる基幹業務 (LOB) データに追加するステップについて説明します。