収集できる文書と回答に使える文書

検索拡張生成(RAG)は質問に関連する資料を検索し、回答生成に使います。索引に含めることと、質問者に読ませることは別の判断です。収集用のサービスアカウントで共有ドライブを読み取り、利用者の質問には本人の権限を適用します。収集アカウントに許可された範囲が、そのまま利用者全員に付与されてはいけません。

文書のアクセス制御リスト(ACL)は、誰やどのグループが文書を読めるかを表します。分割した各チャンクを原文書IDと権限の版に結びつけ、タイトル、プレビュー、添付も同じ境界で扱います。ファイル名だけで採用計画や契約相手が分かることがあります。公開文書と制限文書の記載が似ている場合も、実際に使った文書と公開できる根拠を残します。

検索サーバーは信頼する認証・権限サービスから所属を確認し、検索側のフィルターなどで許可された文書集合を適用します。上位フォルダーやグループからの権限継承、個別例外、権限を読み取れない文書の扱いを決めます。質問文に部署や文書IDがあっても、その記述で権限を変更しません。必要に応じてモデル入力や出典リンクの生成前にも再検証します。

Microsoftの公式文書はAzure AI Searchについて、利用者・グループ文字列による一般提供のフィルターと、アクセス権情報を取り込むプレビュー機能を区別しています。ADLS Gen2とSharePointはデータソースや同期方式が異なります。使用するAPI、対応範囲と遅延、再度リンクを開く際の認証を環境ごとに確認します。 Microsoft Learn — Document-level access control in Azure AI Search[1]

利用者と文書分類の権限表を作る

架空の組織で、社内共通の手順書、営業見積もり、人事評価、二部署の共同プロジェクト資料を登録するとします。本番と同じ構造でテスト用グループを作り、資料には架空の固有文字列を入れます。

質問者・アカウント共通手順書営業見積もり人事評価制限付き共同プロジェクト
在籍中の一般社員許可拒否拒否拒否
プロジェクトに参加していない営業担当許可許可拒否拒否
評価とプロジェクトを担当する人事社員許可拒否割り当ての範囲で許可招待範囲で許可
営業から人事へ異動した評価担当外の社員許可拒否拒否新たな割り当てまで拒否
退職処理済みのテストアカウント拒否拒否拒否拒否
インデックス収集用アカウント設定済みの資料源から収集承認済み資料源から収集承認済み資料源から収集承認済み資料源から収集

最終行は収集の権限であり、会話で使用する権限とは別です。人事所属でもすべての評価資料を読む必要はありません。部署やプロジェクト、文書ごとの付与を組み合わせます。ゲスト、有効期限付きアカウント、入れ子のグループ、一時昇格、複数テナントを扱う場合は、それぞれの許可と拒否を試します。 NIST SP 800-207 — Zero Trust Architecture[2]

複数の役割を持つ人には、異動後もプロジェクト権限が残ることがあります。営業資料を一括で遮断すると、有効な共同プロジェクトまで利用できなくなりかねません。また、フォルダー間で移動した文書に以前の権限が残る問題は、利用者の異動試験だけでは見つかりません。利用者権限と原文書のACLを別々に変更して試します。対象と操作の組み合わせは、マルチテナントの権限検証も参考になります。

サービスの仕組み

キャンペーンに必要なデータから接続 — 施策から逆算してイベントと属性を定義し、識別子、送信時点、測定ツールの役割を整えます。

作成済みの回答が戻る経路を調べる

回答キャッシュ、過去の会話、会話要約、ファイルの中継サービスは検索を経由しないことがあります。質問だけでキャッシュのキーを作ると、前の人の回答が別の人に表示されかねません。利用者やグループをキーに加えても、権限が変わると古い回答が残ります。機密性が高い回答はキャッシュせず、または使用した各文書を記録して再利用時に権限を確認します。グループの版で分ける場合も、個別ACLや文書移動を考慮します。

会話の過去ログや要約は、再検索せずに次のモデル入力になることがあります。文書IDと版を使って現在の権限を確認し、権限が外れた資料を再表示と入力の両方で除外します。出典を特定できない要約は再利用範囲を絞り、新しい会話を案内する方法があります。画面から隠しても、サーバーがモデルに送れば回答として再現されかねません。権限があった時点で作られた別のコピーは組織の記録・事故対応方針で扱い、試験ではシステムが再提供しないことを確かめます。 OWASP — AI Agent Security Cheat Sheet[3]

出典を表示できるかと、リンク先を開けるかはそれぞれ確認します。即時のアクセス取り消しが必要なら、短期間しか有効でない署名URLでも期限前に遮断できるか試します。中継サービスではアクセス時に再確認し、過去のURLがいつまで使えるかを記録します。補完候補、一覧、リンクカード、ファイル名、ダウンロードもそれぞれ確認します。

異動の前後で新しい会話と既存の会話を試す

架空の営業担当ミンジが人事に異動するとします。以前「ドーン社」の見積もりを出典とする回答を得ており、その文書には試験用文字列「青いボルト73」があります。異動後も共通手順書は読めますが、人事評価は追加の承認まで読めません。文書IDを使った質問と、表現を変えてIDを使わない質問の両方を用意します。架空の固有文字列を使うと資料の混入経路を特定しやすくなります。

試験経路異動前異動後の期待確認記録
新規会話の同一質問見積もりと出典を表示制限文書、タイトル、試験用文字列を表示しない候補ID、版、モデル入力の権限判定
開いたままの会話で再質問以前の根拠を使用できる要約から見積もりが再投入されない権限の再判定時刻、除外した会話の資料
回答キャッシュ作成後に質問許可された回答をキャッシュ可能現在禁止の回答を出さない再利用の有無と権限の版
過去の出典を別タブで開く現在の権限で閲覧可内容、プレビュー、タイトルを方針どおり遮断URL方式、サーバー側ファイル判定
変更前に開始したリクエスト実行中、または応答待ち変更後の配信には新しい権限を適用開始・変更・応答の時刻、再判定結果
共通資料と人事評価の再確認共通は許可、評価は拒否共通は許可、追加付与前の評価は拒否許可例と拒否例の照合

実行中の処理も試します。検索後で送信前の取り消しを検出した場合には、停止やマスキングが必要なことがあります。ストリーミングでは一部が到達している場合もあるため、送信前の判定と途中で止められる範囲を決めます。適用時刻と対象は業務責任者と検証者が合意します。検索をMCPで提供する場合は、MCP本番運用のセキュリティチェックリストのツール権限や接続の取り消しも確認します。

変更記録と拒否の証拠から反映時間を判定する

人事システム、IDプロバイダー、インデックス、アプリケーションで変更時刻は異なり得ます。どのイベントを取り消しの起点にするか決め、最後の許可と最初の拒否を記録します。仮に20秒でまだ許可され、30秒で拒否された場合は、その間に切り替わったことが分かります。正確な時刻や全インスタンスの同時反映は、この結果のみでは確定できません。

繁忙時やインデクサーの停止時も試します。権限の現在版を確認できない場合に、機密資料を遮断して共通案内だけを提供する方法があります。すべて停止できなければ、新しい索引ができるまで制限文書だけ検索対象から外す選択もあります。元の役割に戻った場合は新しい付与で判定し、古いキャッシュを権限の証拠にしません。

文書本文を監視システムに複製せず、試験用の参照ID、承認済みの固有文字列、権限の版、候補と判定、キャッシュの状態、処理IDを記録できます。試験範囲と観測期間を残し、運用上の目標と照合します。制限資料が出た場合は対象の資料源や機能を保留し、修正後に許可例と拒否例を繰り返します。 NIST AI 600-1[4]