SharepointをデータソースとしたKendraでユーザーアクセス権限に基づいて検索してみた

2024.01.27

こんにちは、つくぼしです!

先日KendraのデータソースとしてSharepointを使用する方法について、以下のブログで紹介しました。

さらにKendraでは、ユーザーのドキュメントアクセス権限に基づいて検索結果を制御するための機能として、ユーザーコンテキストフィルタリング機能が提供されています。

今回はSharepointをデータソースとしたKendraでユーザーコンテキストフィルタリングを用いて、特定のユーザー情報を用いて制限されたSharepointページにアクセスできるか試してみたいと思います!

前提条件

今回の前提条件は以下のブログと同じなので、こちらをご参照ください。

今回のユーザーコンテキストフィルタリング機能は、ACL及びIDクローラーを有効化する事で使用できるようになります。

構築手順

Sharepoint サイトの準備

データソースとなるSharepointサイトが存在しない場合、事前に作成しておきます。

以下を参考に、Microsoft 365よりSharepoint Onlineにアクセスしてください。

次に、以下を参考にSharepoint上でサイト及びページを作成してください。

今回は作成したサイト配下に、以下のような共有ページと、制限ページという名前のページを作成します。

ユーザーの準備

Entra IDユーザーも事前に作成しておきます。

以下を参考に、Microsoft Entra管理センターにて、Entra IDユーザーを作成してください。

以下のようなユーザーが作成できればOKです。

今回は各々のユーザーの役割を以下とします。

  • テストユーザー:サイトの所有者ユーザー
  • テストユーザー2:共有ページ及び制限ページの閲覧権限のみを持つユーザー
  • テストユーザー3:共有ページの閲覧権限のみを持つユーザー

各々のユーザーが作成できましたら事前にログインし、初期パスワードの変更を変更しておいてください。

ユーザーのログイン確認が取れましたら、以下を参考にSharepoint管理センターにて、テストユーザーをサイトの所有者として指定します。

以下のように所有者として指定されている事が確認できればOKです。

さらに、テストユーザー2とテストユーザー3をサイトのメンバーとして指定します。

Sharepointサイトのページにて、対象ページを選択し・・・をクリックします。

表示されるオプションよりアクセス許可の管理をクリックします。

このウィンドウでは、対象ページに対するアクセス許可を制御する事ができます。

アクセス権限を付与するには、ウィンドウの中にある共有をクリックします。

共有したいユーザーを選択し、送信をクリックする事で、ユーザーにページへのアクセス権限を付与できます。

共有ページでは、テストユーザー2及びテストユーザー3にアクセス権限を与えます。

一方で制限ページでは、テストユーザー2のみにアクセス権限を与えます。

なおウィンドウの共有停止を押す事で、現状ユーザーまたはグループに付与されているアクセス権限をリセットできます。

エンタープライスアプリケーション/インデックス/データソースの作成

以降の構築手順は以下のブログと同じなので、こちらをご参照ください。

検索テスト

最後にKendraのデータを同期し、想定通りユーザーコンテキストフィルタリングを用いて、ユーザー毎のアクセス権限に基づいてSharepointのサイトを検索できるか確認します。

まずSync nowボタンをクリックし、データソースの同期を実行します。

下記の通りデータ同期が成功し、Addedに同期されたデータの数が表示されていればOKです。

もし同期に失敗した場合や、同期されたデータの数が想定と異なる場合は、CloudWatch Logsの/aws/kendra/<KendraデータソースID>ロググループに出力されているエラーログを確認してください。

同期が完了したら、Search indexed contentより検索を実行します。

検索言語はJapaneseを選択します。

続いてApply tokenをクリックします。

UsernameにユーザーのEメールアドレスを入力し、Applyをクリックします。

初めにテストユーザー2で検索すると、共有ページ及び制限ページの両方が表示される事が分かります。

続いてテストユーザー3で検索すると、共有ページのみ表示されるので、ユーザーのアクセス権限に基づいたドキュメント検索が実現できている事が分かりました!

(2024/2/12追記)もしコンソールではなくAPIを用いてユーザーコンテキストフィルタリング機能を確認したい場合は、以下の公式ドキュメントをご参照下さい。

最後に

今回はSharepointをデータソースとしたKendraでユーザーコンテキストフィルタリングを用いて、特定のユーザー情報を用いて制限されたページにアクセスしてみました。

今回のユーザーコンテキストフィルタリングを用いると、ユーザーまたはグループ情報を用いて柔軟な検索が実現可能です。

Sharepointでユーザー毎にドキュメントのアクセス権限を設定されている方は、ぜひ試してみてはいかがでしょうか。

以上、つくぼし(tsukuboshi0755)でした!