ある企業が、Amazon Bedrock Agents を使って自然言語から社内データベースへの SQL クエリを自動生成・実行する「Text-to-SQL」エージェントを構築した。本番環境でエージェントが DROP TABLE コマンドを生成・実行して重要データが削除されるインシデントが発生した。再発防止のための最も適切な設計変更はどれか。
- A. システムプロンプトに「絶対に DROP や DELETE などの破壊的コマンドを実行しないこと」という指示を追加するだけにする
- B. エージェントの生成速度を落とすことでオペレーターが確認する時間を確保し、手動承認なしに実行を継続させる
- C. Text-to-SQL 機能を廃止し、ユーザーが直接 SQL を入力する UI に戻す
- D. エージェントが実行できる SQL をホワイトリスト(SELECT のみ許可)に限定し、DML・DDL ステートメントはデータベースレベルの権限で拒否する
解答と解説を見る
正解: D
最小権限の原則(Principle of Least Privilege)に基づき、エージェントが接続する DB ユーザーに SELECT 権限のみを付与し、DROP/DELETE/UPDATE/INSERT を IAM・DB ロールレベルで禁止することが根本解である。プロンプト指示はバイパスされる可能性があるため技術的強制が不可欠。Aは誤り:システムプロンプト指示はソフトな制約であり、プロンプトインジェクションや LLM の誤解釈でバイパスされるリスクが残る。本番環境の安全性は技術的強制(DB権限)で担保すべき。Bは誤り:速度を落とすだけでは自動実行を継続しており根本的な防止にならない上、リアルタイム性が損なわれる。Cは誤り:機能廃止はビジネス価値を失い、技術的に解決できる問題への過剰な対応。