AWS Certified Generative AI Developer - Professional 資格対策コース

プロンプトインジェクション・ジェイルブレイク検出

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで学ぶこと 対応試験ドメイン 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 WAFGuardrails(中身は見るが量的攻撃は守備範囲外)
入力の分類・言語検出による前処理選別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)