AWS Certified Generative AI Developer - Professional 資格対策コース
プロンプトインジェクション・ジェイルブレイク検出
このレッスンで学ぶこと 対応試験ドメイン D3 タスク 3.1.4(プロンプトインジェクションの検出)と 3.1.5(ジェイルブレイクの検出)。Amazon Bedrock Guardrails のプロンプト攻撃フィルタ、Amazon Comprehend や AWS Lambda による前処理、AWS WAF を多層防御として組み合わせる設計判断を身につけます。
解説
プロンプトインジェクションは、ユーザー入力や取得文書に紛れた指示でモデルの本来の指示を上書き・無効化しようとする攻撃です。ジェイルブレイクは、安全ガードを回避させて禁止された出力を引き出す試みです。AWS では単一防御に頼らず、層で守ります。
各層の役割
| 層 | 担う AWS サービス | 役割 |
|---|---|---|
| リクエスト層 | AWS WAF | 大量リクエスト・既知の悪性パターン・ボットを HTTP レベルで遮断 |
| 前処理層 | AWS Lambda + Amazon Comprehend | 入力の言語検出・分類・カスタム分類で疑わしい入力を選別 |
| プロンプト攻撃層 | Amazon Bedrock Guardrails | プロンプトインジェクション・ジェイルブレイクを意味的に検出 |
| 設計層 | プロンプト構造 | システム指示とユーザー入力を明確に分離(区切り・タグ) |
中核は Guardrails のプロンプト攻撃フィルタ
意味的なインジェクション・ジェイルブレイクの検出の中核は Amazon Bedrock Guardrails のプロンプト攻撃フィルタ(prompt attack filter)です。「これまでの指示を無視して」のような攻撃を検出し、強度別に遮断します。Bedrock 外のモデルや独自パイプラインには ApplyGuardrail API で同じ検査を適用できます。
前処理で AWS Lambda + Amazon Comprehend
AWS Lambda で入力を受け、Amazon Comprehend で言語検出・カスタム分類を行い、ルールベースの選別(極端に長い入力、既知の攻撃フレーズ、想定外言語)を加えると、Guardrails の前段で軽量にふるい落とせます。Comprehend のカスタム分類は、過去の攻撃サンプルを学習させて「疑わしい/正常」を分類する用途に向きます。
Python
import boto3
guard = boto3.client("bedrock-runtime", region_name="us-east-1")
# 前処理を通過した入力を Guardrail のプロンプト攻撃フィルタで検査
resp = guard.apply_guardrail(
guardrailIdentifier="abcd1234",
guardrailVersion="1",
source="INPUT", # ユーザー入力側として検査
content=[{"text": {"text": user_input}}],
)
# action が GUARDRAIL_INTERVENED なら攻撃の疑いとして遮断・ログ記録設計でも守る
そもそもの設計として、システム指示とユーザー入力を構造的に分離し、取得文書(RAG のソース)を「データであり命令ではない」と扱うことが重要です。取得文書内に埋め込まれた間接インジェクションへの基本対策になります。
試験で問われるポイント
- 意味的なプロンプトインジェクション・ジェイルブレイク検出の中核は Bedrock Guardrails のプロンプト攻撃フィルタ。WAF だけで防ぐという選択肢はひっかけ
- AWS WAF と Amazon Bedrock Guardrails は層が違う。WAF は HTTP リクエスト層(レート・IP・既知シグネチャ)、Guardrails はプロンプトの意味内容を見る。攻撃の量的・ネットワーク的側面は WAF、内容的・意味的側面は Guardrails
- Amazon Comprehend は分類・検出(NLU)であって遮断の意思決定そのものではない。Comprehend で疑わしさを判定し、遮断は Guardrails やアプリ側ロジックで行う、という役割分担
- 間接プロンプトインジェクション(RAG ソースに埋め込まれた指示)対策として、取得文書をデータとして扱い、システム指示と分離する設計判断が問われる
- 試験で問われるのは AWS のどの機能でどの層を守るかであり、攻撃手法そのものの細部ではない
サービスの使い分け早見表
| やりたいこと | 使うもの | 混同しやすいもの |
|---|---|---|
| プロンプトの意味的な攻撃検出 | Bedrock Guardrails プロンプト攻撃フィルタ | AWS WAF(HTTP 層で意味は見ない) |
| リクエスト層のレート制限・ボット遮断 | AWS WAF | Guardrails(中身は見るが量的攻撃は守備範囲外) |
| 入力の分類・言語検出による前処理選別 | Amazon Comprehend(+ Lambda) | Guardrails 単体(前処理選別の汎用分類器ではない) |
まとめ
プロンプトインジェクション・ジェイルブレイク対策は多層防御です。AWS WAF でリクエスト層、AWS Lambda + Amazon Comprehend で前処理選別、Amazon Bedrock Guardrails のプロンプト攻撃フィルタで意味的検出を担い、設計でシステム指示とユーザー入力を分離します。WAF と Guardrails の層の違いが頻出論点です。
次のステップ
次のクイズレッスンで、本番形式のシナリオ問題に挑戦して脅威検出の判断力を確認しましょう。
関連レッスン
- Bedrock Guardrails で入出力を安全化(pro-guardrails-io)
- ハルシネーション低減と contextual grounding(pro-hallucination-guard)
- PII 保護とプライバシー(pro-pii-privacy)