- 評価は全て合格したが、低権限アカウントで権限外の文書が返る
- Azure AI SearchのACLトリミングは設定次第で無効になる
- エージェント攻撃の91%が検知されないデータ流出という調査結果もある
何が起きたか
イタリアのMicrosoftパートナーSynSphere ItaliaでCEOを務めるEgiziago Cioffi氏は、Azure OpenAIを使った顧客メールの自動返信アシスタントを構築していた。このアシスタントは受信メールの約60%を自動解決し、Cioffi氏のチームが実施した評価もすべて合格していたという。
しかし、Cioffi氏が低い権限のアカウントを使って同じ質問をしたところ、結果は高権限アカウントと一致しなかった。アシスタントは、そのユーザーがSharePoint上では開けない文書の内容を返した。ログは評価結果と異なる実態を示していた。
根本原因と標準機能の限界
原因は、RAGパイプラインの検索処理が要求者の権限ではなく、インデックス作成時のサービスアカウント権限で動いていたことにある。Cioffi氏の構成はAzure AI Searchを経由しないカスタムパイプラインで、クエリ時にアクセス権を確認する仕組みが無かった。
Azure AI SearchにはEntra IDトークンによる文書レベルのACLトリミングがプレビュー実装されている。ただし、SharePoint ACL同期を含むこの機能は、選択した経路や設定条件を満たす必要があり、すべてのエージェント展開をカバーするわけではない。Microsoftのドキュメントでも、Azure OpenAI On Your Dataでpermitted-groupsフィールドがマッピングされなければ文書レベルのアクセス制御は無効になるとされている。
広がる同種のリスク
この問題は単独のミスではない。セキュリティ企業Straikerの報告では、本番エージェントへの攻撃成功例1700件超のうち、91%がサイレントなデータ流出で終わった。ただしこれは権限チェックの欠如だけを指すものではなく、プロンプトインジェクションやツール悪用なども含む。
英国のAI Security Instituteは、制約の少ない評価環境でエージェントが意図しない行動を19件起こしたと報告している。これも実行時にエージェントの行動範囲を検証する仕組みの不在が背景にあるとみられる。
対策の方向性
原題が示す解決策は、権限で絞り込む「1つのフィルタ」と、アシスタントのアクセス範囲を狭めることにある。具体的には、検索結果を要求者のACLに基づいてフィルタし、アシスタントに見せてもよいデータの範囲を限定する実装が必要だ。
ただし、どのようなフィルタをどの層に置くかはシステム構成によって異なる。Cioffi氏の事例ではカスタムパイプライン側に権限チェックを追加する必要があり、既存の評価手順には低権限アカウントを使ったテストを含めるべきという教訓が残る。
| 比較軸 | Azure AI SearchのネイティブACLトリミング | カスタムRAGパイプライン |
|---|---|---|
| 権限チェックに使う情報 | Entra IDベースのトークンとSharePoint ACL | パイプライン用のサービスアカウント権限 |
| クエリ時の強制 | Entra裏付けのプリンシパルに対して文書単位で可能 | 独自実装が無ければ不可 |
| 設定の注意点 | permitted-groupsのマッピング等が必要 | 何も設定しなければ全データにアクセス |
| 現時点のカバー範囲 | プレビューAPI/SDKと一部の展開経路のみ | Azure AI Searchを経由しないパイプラインは対象外 |
The evaluation scores were clean, and the unit tests passed. None of them asked the question that mattered.
評価結果はきれいで、単体テストも合格した。しかしそのどれもが、肝心な質問をしていなかった。
今後の見通し
今回の事故は、エージェントの評価を実際の低権限ユーザーで実施しなければ権限違反を見逃すことを示している。今後、MicrosoftがAzure AI SearchのACLトリミングを正式版として全展開経路に拡張し、Azure OpenAI On Your Dataでもpermitted-groupsの自動マッピングを提供するかが焦点になる。また、エージェントが実行時に取得できるデータ範囲を制限する仕組みが標準化されるかも注視すべきだ。現時点では、カスタムRAGを使う企業はクエリ時の権限フィルタを自前で実装する必要があり、MicrosoftのドキュメントやSDKの更新によって判断材料がそろうとみられる。
日本の開発者・IT企業にとっての意味
日本のIT企業がRAGを使った社内検索や問い合わせ対応AIを構築する場合、Azure OpenAIとSharePointの組み合わせは一般的になりつつある。今回の事例は、インデクサーの権限が広いと、本来アクセスできない機密文書が回答に混ざるリスクを示している。情報漏えいが起きてからでは監査や顧客対応で大きなコストがかかるため、アシスタントに付与する権限を最小限にし、クエリのたびにユーザー単位・グループ単位のACLフィルタが働くかを確認する体制が重要になる。また、評価を高権限アカウントだけで行わず、実際の利用者権限でのテストも組み込むべきだ。
気になる点
- この問題はAzure OpenAI On Your Dataでも起きるのか?
- Microsoftのドキュメントによると、permitted-groupsフィールドがマッピングされていない場合、文書レベルのアクセス制御は無効になる。つまり、設定を誤ると同様に権限外の文書を返す可能性がある。
- どうすれば評価で検出できるのか?
- 管理者権限のアカウントと低権限アカウントで同じ質問を実行し、結果を比較する方法が有効。Cioffi氏の事例でも低権限アカウントでのテストによって不一致が判明した。
- カスタムRAGパイプラインに権限チェックを組み込むにはどうすればよいか?
- 原記事には具体的な実装手順は示されていない。現時点では、Azure AI Searchのセキュリティフィルタを利用するか、検索結果を要求者のグループ情報で絞り込む独自ロジックを実装する選択肢が考えられる。
用語解説
- ACL
- Access Control List。ファイルや文書へのアクセス権限の一覧で、ユーザーやグループごとに読み書きを制御する。
- Entra ID
- マイクロソフトのクラウドID認証サービス(旧Azure Active Directory)。ユーザーとグループの情報を管理する。
- RAG
- Retrieval-Augmented Generation。外部データを検索し、その結果をAIの回答に組み込む手法。
- Azure AI Search
- Azureで提供される検索サービス。文書のインデックス作成とクエリ検索を担い、ACLトリミングの一部をサポートする。
出典
Closing an Azure OpenAI assistant's retrieval gap didn't take a new identity platform. It took one filter and a narrower assistant.
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する