airagsecurityllm
RAGのデータ汚染(poisoning)対策チェックリスト|取り込み・検索・権限を監査する(2026)
|
5 min read
RAGのデータ汚染は「プロンプト」ではなく「取り込みパイプライン」で防ぐ。取り込み元、検証と隔離、doc_idの証跡、ツール権限を30分で点検する実務チェックリスト。
目次
RAGをデータ汚染(poisoning)から守るには?(開発を遅くしない実務手順)
結論(Conclusion)
RAGが事故るのは「信頼できないコンテンツ」が“信頼できる知識”として入ってしまうとき。 対策は3つの段階で考える。
- 取り込み(ingestion):何が知識ベースに入るか
- 検索(retrieval):何が引っ張られるか
- 応答(response):引っ張った内容で何をしてよいか
最小で効く30分チェックはこれ。
- 取り込み元と権限を絞る
- 最低限の検証と隔離(quarantine)を入れる
- doc_idと検索判断の証跡をログに残す
- 危険なツールはデフォルトでOFF
背景(Explanation)
RAGのデータ汚染とは、攻撃者(またはミス)が悪い情報をコーパスに混ぜ、検索で引っ張らせること。
起きる実害はだいたいこれ。
- 指示の上書き(「前のルールを無視しろ」)
- 偽の社内手順/ポリシーの注入
- 悪意リンクや資格情報の混入
- ツール悪用の誘導(export、API呼び出しなど)
重要なのは、
- 悪い知識はプロンプトでは直らない
- パイプラインと証跡で管理する
実務手順(Practical Guide)
手順1:取り込み元を分類する(10分)
1つのRAG機能について、文書の取り込み元を列挙する。
- ファイルアップロード
- ヘルプセンター/社内Wiki
- チケット/CRMノート
- Webクローラ
- 共有ドライブ
各ソースにラベルを付ける。
- trusted(社内、アクセス制御あり)
- semi-trusted(パートナー管理)
- untrusted(ユーザーアップロード、公開Web)
ルール:
- untrustedは隔離と強い検証が前提
手順2:誰が知識を書けるかを絞る(5分)
汚染の入口は「書き込み権限」。 最低限これ。
- read と write を分ける
- 新しいソース追加は明示承認
- 公開の書き込み経路はデフォルト無効
「誰がdocを追加できるか」が答えられないなら危ない。
手順3:検証と隔離(quarantine)を入れる(10分)
完璧なスキャンは要らない。 まずは標準化できるゲートを置く。
検証例:
- 拡張子allowlist
- サイズ/ページ数上限
- Active content(HTML/JS)の除去
- 露骨なインジェクション文言検知(ヒューリスティック)
隔離ルール:
- untrusted由来の新規/更新docはレビュー完了まで本番indexに入れない
手順4:あとで説明できる証跡を残す(5分)
RAG事故で最低限必要なログ。
- request_id / trace_id
- retrieved_doc_ids(本文ではなくID)
- chunk_ids(またはoffset)
- source type(trusted/untrusted)
- top-kのスコア
- 実行されたツール呼び出し(名前のみ)
「なぜそう答えた?」をdoc_idで説明できる状態にする。
落とし穴(Pitfalls)
- ユーザーがアップしたdocを即ライブindexに入れる
- クローラでドメイン制限なし
- 文書の来歴が追えない(doc_idやsourceメタ無し)
- retrievalをセキュリティ対象に入れていない
- retrieved contentの指示でツールが動く
チェックリスト(Checklist)
- [ ] このRAG機能の取り込み元をすべて列挙できる
- [ ] 各ソースを trusted/semi-trusted/untrusted に分類した
- [ ] untrustedは隔離してからindex投入する
- [ ] 取り込み時に拡張子/サイズ上限を検証している
- [ ] write権限はreadから分離されている
- [ ] 新規ソース追加は明示承認
- [ ] クローラはドメインallowlistを使う
- [ ] doc_idと来歴(provenance)メタデータがある
- [ ] retrievalログにdoc_idとスコアが残る(本文は残さない)
- [ ] 危険ツールはデフォルトOFF
- [ ] ツール権限はルート単位で制御されている
- [ ] 10分以内にdoc_idで説明できる
FAQ
1) 「悪意ある指示は無視しろ」とsystem promptに書けば十分?
役には立つが不十分。汚染された知識は“事実”として混ざる。パイプライン制御が本命。
2) untrusted取り込みは全部禁止すべき?
必ずしも禁止ではない。隔離と来歴管理があるなら扱える。
3) 最速の改善は?
untrusted docを隔離し、retrieved_doc_idsを全リクエストでログに残す。制御と証跡が揃う。
内部リンク(Internal links)
免責
一般的なセキュリティ注意喚起です。