ユーザーのアクセス権限を考慮した Vertex AI Search の検索最適化

2024年9月26日掲載

今回は、Vertex AI Search にてドキュメント単位でアクセスを制御する方法を紹介します。

Vertex AI Search を使用する中で「このドキュメントには特定のユーザーのみがアクセスできるようにしたい」というニーズが生じることがあるかと思います。

今から紹介する手順を実施することで、ドキュメント単位で権限のあるユーザーはドキュメントを参照した回答結果を得られ、権限のないユーザーは回答を取得できなくなります。ぜひ参考にしてみてください!

動作の例:

  • 同じ検索アプリを使用
  • ドキュメント(果物に関する資料)
  • ユーザー1(アクセス権あり)
  • ユーザー2(アクセス権なし)

目次

方法の紹介

それでは早速方法を紹介していきます!
今回紹介する方法は、Cloud StorageのACL を作成して、ドキュメント単位でアクセスを制御をするという方法です。

ACL とは、Access Control List(アクセス制御リスト)の略称であり、ネットワークやコンピューターシステムにおいて、リソースやデータへのアクセスを制御するための仕組みです。

手順1:バケットの作成

Cloud Storage にてバケットを作成し、ドキュメントをアップロードします。
今回アップロードする資料は以下の 2 つです。

手順2:ACL の作成

次に、ACL を作成していきます。

ACL は JSONL 形式で記述しますので、メモ帳などのテキストエディターを使用して作成してください。また、保存時には必ず .json の拡張子を指定してください。

今回はアカウントを2つ用意し、それぞれに異なるドキュメントへのアクセス権限を付与しました。

  • アカウント1 → ソフトバンク株式会社 2024 年 3 月期 決算説明会資料
  • アカウント2 → Looker サンプルダッシュボード の PDF

以下にサンプルコードを記載いたします。
1ドキュメント、1行づつコードを記載する必要があるためご注意ください。

サンプルコード(ユーザー単体に権限を付与したい場合):

{"id": "任意の値","jsonData": "{\"title\":\"対象のドキュメント名\"}","content": {"mimeType": "application/pdf","uri": "対象のドキュメントのURI"},"acl_info": {"readers": [{"principals": [{ "user_id": "ユーザーアドレス"}]}]}}

サンプルコード(グループアドレスで権限を付与したい場合):

{"id": "任意の値","jsonData": "{\"title\":\"対象のドキュメント名\"}","content": {"mimeType": "application/pdf","uri": "対象のドキュメントのURI"},"acl_info": {"readers": [{"principals": [{ "group_id": "グループアドレス"}]}]}}

サンプルコード(複数のユーザーに権限を付与したい場合):

{"id": "任意の値","jsonData": "{\"title\":\"対象のドキュメント名\"}","content": {"mimeType": "application/pdf","uri": "対象のドキュメントのURI"},"acl_info": {"readers": [{"principals": [{ "user_id": "ユーザーアドレス1"},{ "user_id": "ユーザーアドレス2"}]}]}}

サンプルコード(ユーザー、グループアドレスの両方に権限を付与したい場合):

{"id": "任意の値","jsonData": "{\"title\":\"対象のドキュメント名\"}","content": {"mimeType": "application/pdf","uri": "対象のドキュメントのURI"},"acl_info": {"readers": [{ "group_id": "グループアドレス1"},{ "user_id": "ユーザーアドレス1"}]}]}}


対象ドキュメントの URI は Cloud Storage のバケットから以下の方法で取得できます。

手順3:データストアの作成

作成した ACL を .json の拡張子で保存して手順1で作成したバケットにアップロードします。

次にデータストアを作成していきます。
Vertex AI Search のデータストア一覧から[データストアを作成]をクリックします。

データソースでは [Cloud Storage] を選択します。

以下画像のように設定をして [続行] をクリックします。

データストア名を入力、チェックボックスにチェックをしたら[作成]をクリックしてデータストアの作成は完了となります。
※チェックボックスにチェックを入れない場合、ACL のインポートでエラーが発生しますので、忘れずにチェックを入れてください。

アクセス制御用データストアの作成

検索アプリの作成方法、データストアとの接続方法は弊社記事
Vertex AI Search (旧称 Gen App Builder の Enterprise Search) の日本語版を試してみた
をご参照ください。
※本手順で作成したデータストアには.json 形式もしくは .jsonl 形式のドキュメントしかインポートできないため、ご注意ください。

動作確認

では、早速動作を確認してみましょう!

【アカウント1】
想定する動作:決算資料は参照され回答があり、Looker ダッシュボード PDF は参照されず回答もされない。

決算資料に関する質問:ソフトバンクの売上金額を教えてください。
レスポンス:

Looker ダッシュボードに関する質問:全店舗の注文数を教えてください。
レスポンス:

結果:決算資料は参照していますが、Looker ダッシュボード PDF は参照されませんでした。また、Looker ダッシュボードに関する質問は回答が得られなかったため、想定する挙動となりました。

 

【アカウント2】
想定する動作:
Looker ダッシュボード PDFは参照され回答があり、決算資料は参照されず回答もされない。

決算資料に関する質問:ソフトバンクの売上金額を教えてください。
レスポンス:

Looker ダッシュボードに関する質問:全店舗の注文数を教えてください。
レスポンス:

結果:Looker ダッシュボード PDF は参照していますが、決算資料は参照されませんでした。また、決算資料に関する質問は回答が得られなかったため、想定する挙動となりました。

これで、両アカウントでアクセス権が正常に付与できていることが確認できました!

注意事項(ACLのアクセス制御について)

  • 現状、ACL を用いたバケット、フォルダー単位のアクセス制御はできません。
  • ACL を使用することで  Vertex AI Search 上ではドキュメント単位でアクセス制御をすることが可能になります。しかし、GCP の IAM 権限によっては、ACLでアクセスを制限されていたとしても Google Cloud Storage 上でドキュメントを見ることができてしまうので、Google Cloud Storage 上でもアクセス制御をすることを推奨いたします。

まとめ

いかがでしたでしょうか。

ドキュメント単位でアクセスを制限することで、立場や部署が異なるユーザーでも同一の検索アプリを利用することが可能になります。

ただし、現状では ACL を作成する際には、1つのドキュメントごとに1行づつ JSONL 形式で記載する必要がありますので、アクセス制御をしたいドキュメントが多い場合は手間がかかるというデメリットがあります。

今後、ACL でバケット・フォルダ単位のアクセス制御ができるようになることに期待したいですね。

また、Google Cloud Storage の IAM 権限によるアクセス制御で Vertex AI Search の検索結果にも反映されれば、ACL を作成する必要もなくなるので、こちらも今後の実装を期待したいところです!

ぜひ今回紹介した方法を利用してアクセス制御をしてみてください!

Vertex AI DIYプランについて

Vertex AI Search を使って社内文書を検索する生成 AI を構築してみませんか?
ソフトバンクのエンジニアが構築をサポートします。

Vertex AI DIY プランでは、以下の3つのことをご体験いただけます。
詳細は、関連サービスにある「Vertex AI DIYプラン」をご確認ください。

SoftBank Vertex AI Search DIYプランのご紹介

関連サービス

Vertex AI Search を使って社内文書を検索する生成AIを構築してみませんか?
ソフトバンクのエンジニアが構築をサポートします。
Google の生成AIの導入を考えている方はもちろん、どのようなものか確認したいという方でもご活用いただけます。

Looker は定義から集計、可視化の一連のデータ分析プロセスをカバーする BI ツールを超えるデータプラットフォームです。ソフトバンクは、顧客のニーズに合わせて柔軟なサポートを提供し、Looker を活用したデータドリブンな企業変革を支援しています。

Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません