aisecurityllmrag
プロンプトインジェクション対策チェックリスト|AIアプリの入口と権限を監査する(2026)
|
6 min read
プロンプトインジェクションは“プロンプトの書き方”だけでは防げない。入力経路(入口)、ツール権限、アウトバウンド、ログを30分で点検する実務チェックリスト。
目次
AIアプリでプロンプトインジェクションのリスクを下げるには?(開発を遅くしない実務手順)
結論(Conclusion)
プロンプトインジェクションは「一回直して終わり」のバグではない。 XSSと同じで、入口と権限と到達範囲を管理して被害を小さくする。
最も効くのは、30分で回せるこの監査。
- 入力経路(input surfaces)を全部洗い出す
- 各入口に“最低1つ”の強制ゲートを付ける
- ツール権限とアウトバウンドをデフォルトで絞る
- 事故の再現ができる最低限のログを残す(秘密情報は残さない)
背景(Explanation)
プロンプトインジェクションは、外部から入ったテキスト(ユーザー入力、メール、Webhook、ドキュメント、URLなど)がモデルの文脈に混ざり、モデルの振る舞いを変える現象。
実害はだいたい次のどちらか。
- 本来呼べないツールを呼ぶ
- 本来見えないデータを漏らす
現実的な方針はこう。
- 侵入を前提にする
- 権限をデフォルトで弱くする
- 危険な操作は明示的にし、後から説明できるようにする
実務手順(Practical Guide)
手順1:入力経路(入口)を列挙する(10分)
まず1つのAI機能/自動化に絞って、入力経路を全部書き出す。
チェック用リスト:
- Webフォーム(問い合わせ/サポート)
- チャット(Slack/Discord)
- メール受信
- Webhook(Stripe/HubSpot/GitHub/独自)
- ファイルアップロード(PDF/CSV/画像)
- URL(貼り付けリンク、クローラ、fetchツール)
- CRM/チケットの自由記述欄
列挙できないなら、リスクも管理できない。
手順2:入口ごとに“最低1つ”ゲートを強制する(10分)
各入口に最低1つ、強制ゲートを付ける。 完璧を目指さず、標準化できる最小を置く。
ゲート例:
- 認証/起点検証(Webhook署名、allowlist)
- バリデーション/正規化(長さ上限、形式チェック)
- レート制限(高コスト呼び出しの前に)
- 隔離/レビュー(高リスク入力は手動確認)
ルール:
- 機械同士の入力は fail closed(検証できないなら拒否)
手順3:ツールの権限をデフォルトで絞る(5分)
事故は文章より権限で起きる。
実務パターン:
- “読む”と“実行する”を分ける
- reader:データ取得
- actor:作成/更新/削除
- 危険ツールは明示的にオンにする
- エクスポート、削除、管理者更新、決済
- アウトバウンドの到達先を絞る
- 可能ならドメインallowlist
手順4:最小の監査証跡を残す(5分)
大きい顧客に売るなら、最低これを説明できる必要がある。
- 何が入力されたか
- どのルートが処理したか
- どのツールを呼んだか
- 何のデータに触れたか
- 何を実行したか
最低限のログ項目:
- timestamp
- request/trace ID
- input source(form/email/webhook/upload)
- principal(user/service)
- tool calls(名前のみ、秘密は出さない)
- result
落とし穴(Pitfalls)
- プロンプトの書き方だけで解決しようとする
- ツールをグローバルに開放する
- Webhookを署名検証せず受ける(URLを知っていればOK状態)
- モデルに任意URLのfetchを許す
- 秘密情報や生の機密入力をログに残す
チェックリスト(Checklist)
- [ ] このAI機能/自動化の入力経路をすべて列挙できる
- [ ] 各入力経路にオーナーがいる
- [ ] 各入口に最低1つの強制ゲートがある(認証/検証/制限/隔離)
- [ ] Webhookは署名検証し、失敗時は拒否する
- [ ] 入力は長さ上限と最低限の正規化がある
- [ ] 高コスト呼び出しはレート制限がある
- [ ] アウトバウンド到達先は制限されている(可能ならallowlist)
- [ ] ツールはルート単位で権限制御されている
- [ ] 危険ツールはデフォルトOFF
- [ ] reader/actorで権限が分離されている
- [ ] 事故を再現できるログがある
- [ ] ログに秘密情報や生の機密入力を残していない
FAQ
1) プロンプトインジェクションは完全に防げる?
無理。だから入口と権限を絞って被害を抑える。
2) 一番効く“1つ”の改善は?
ツールとアウトバウンドの制限をデフォルトにし、Webhook署名検証を徹底する。
3) これを入れると開発が遅くならない?
標準化すれば遅くならない。入口ごとに1ゲートの方針は速くて効果が大きい。
内部リンク(Internal links)
- Hub: AI開発
- 関連記事:
免責
一般的なセキュリティの注意喚起です。