Gemini Enterprise で Cloud Storage の非構造化データにアクセス制御を構成する
2026.3.17

概要
今回は、Google Cloud Storage (GCS) に保存されたテキストファイルの非構造化データに対し、Gemini Enterprise でユーザー単位のアクセス制御(ACL)を適用する方法を検証します。
検証シナリオ
今回は、以下の図のように、User A には「GCS に関するファイル」のみ、User B には「Gemini Enterprise に関するファイル」のみを参照できる権限を付与し、それぞれのチャット回答がどう変化するかを検証します。

実装手順
実装は以下の 3 つの順番で行います。
- テキストファイルと ACL メタデータファイルの作成
- Gemini Enterprise でデータストア設定
- Gemini Enterprise での動作確認
1. テキストファイルと ACL メタデータファイルの作成
まずは、Gemini Enterprise に読み込ませるテキストファイルと、そのアクセス権を定義するメタデータファイルを作成します。
検索対象のテキストファイル
以下の 2 つのテキストファイルを用意し、GCS バケットにアップロードします。
GE.txt: Gemini Enterprise の製品概要GCS.txt: Google Cloud Storage の技術解説
Gemini Enterprise のテキストファイル一部抜粋
Gemini Enterprise Gemini Enterpriseは、Googleが提供する企業向けの高度な生成AIエージェントプラットフォームです。 単なる対話型AIにとどまらず、組織全体の業務プロセスを自律的に実行・自動化する「AIエージェント」の構築・運用を中核としています。
GCS のテキストファイル一部抜粋
Google Cloud Storage (GCS) ☁️ Google Cloud Storage (GCS)は、Google Cloudが提供する堅牢かつスケーラブルなオブジェクトストレージサービスです。 画像、動画、ドキュメント、バックアップファイルなどのあらゆる非構造化データを「オブジェクト」という単位で、地理的な場所を指定した「バケット」内に安全に保存できます。

ACL メタデータファイルの作成
ファイル単位のアクセス制御を行うには、JSONL 形式のメタデータファイルが必要です。
各行にファイルの場所(URI)と、閲覧を許可するユーザー(readers)を記述します。
後ほどチャットで問い合わせる際にファイルを明示的に指定できるよう、doc-xxx-txt というドキュメント ID をそれぞれ設定します。
acl.jsonl
{"id":"doc-gcs-txt","jsonData":"{\"title\":\"Google Cloud Storage (GCS) 技術解説\"}","content":{"mimeType":"text/plain","uri":"gs://your-bucket/GE/GCS.txt"},"acl_info":{"readers":[{"principals":[{"user_id":"user-a@example.com"}]}]}}
{"id":"doc-ge-txt","jsonData":"{\"title\":\"Gemini Enterprise 製品概要\"}","content":{"mimeType":"text/plain","uri":"gs://your-bucket/GE/GE.txt"},"acl_info":{"readers":[{"principals":[{"user_id":"user-b@example.com"}]}]}}
アクセス制御に該当する記述は以下の通りです。
今回はuser_idで個別のユーザーを指定していますが、group_idを使って Google グループ単位で制御することも可能です。
"acl_info": {
"readers": [{ "principals": [{ "user_id": "user-a@example.com" }] }]
}
データソースのアクセス制御を設定する | Vertex AI Search | Google Cloud Documentation
このメタデータファイルを、先ほどのテキストファイルと同じ階層にアップロードします。

2. Gemini Enterprise でデータストア設定
次に、Gemini Enterprise のコンソール画面から、アクセス制御を有効にしたデータストアを作成します。

データソースは、「Cloud Storage」を選択します。

今回はメタデータ付きの非構造化データなので、「メタデータ付きドキュメント(RAG)」を選択します。

同期の頻度は「1 回限り」を選択します。

先ほどアップロードした acl.jsonl を選択します。

「このデータストアにはアクセス制御に関する情報が含まれています」のチェックボックスを必ずオンにします。

データストアが完成しました。

データストアの作成が完了すると、自動的にドキュメントのインポート処理が開始されます。

インポート処理が進むと、JSONL ファイルで定義したメタデータ構造が解析され、スキーマフィールドとして正しく反映されます。

インポートが完了すると、ドキュメント数が「2」となり、メタデータに基づいて正しく取り込まれたことが確認できます。

3. Gemini Enterprise での動作確認
アクセス制御が正しく反映されているか、実際に Gemini Enterprise のチャット画面で確認してみます。
すべてのコネクタを有効化しても問題ないですが、情報量が増えるのと検索時間がより多くなるため、コネクタを限定することを推奨します。

User A での確認(GCS ファイルの閲覧権限あり)
User A でログインし、GCS について質問すると正しく回答が返ってきます。

一方で、権限のない Gemini Enterprise について質問すると、「ファイルが見つかりませんでした」という結果になりました。

User B での確認(Gemini Enterprise ファイルの閲覧権限あり)
逆に User B でログインすると、Gemini Enterprise については回答が得られますが、GCS に関する質問には回答できません。


追加で、インポートしたファイル一覧を取得するよう指示してみましたが、アクセス権限があるファイルのみが表示されました。

まとめ
Gemini Enterprise と Cloud Storage を組み合わせることで、ファイル単位でのきめ細やかなアクセス制御が簡単に行えます。
「特定の部署のファイルは、その部署のメンバーにしか見せたくない」や「役職に応じて閲覧できる情報を制限したい」といったユースケースにはぜひご検討ください。
参考資料
カスタム データソースのアクセス制御を構成する | Gemini Enterprise | Google Cloud Documentation
データソースのアクセス制御を使用する | Vertex AI Search | Google Cloud Documentation
カスタム データソースのデータを準備する | Gemini Enterprise | Google Cloud Documentation
構造化データと非構造化データを更新する | Gemini Enterprise | Google Cloud Documentation
ユーザーの ID | Identity and Access Management (IAM) | Google Cloud Documentation
2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。
Recommends
こちらもおすすめ
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16