AI エージェントが本番 DB を削除した事件 ─ 受託案件で備えるガードレール設計 | GH Media
URLがコピーされました

AI エージェントが本番 DB を削除した事件 ─ 受託案件で備えるガードレール設計

URLがコピーされました
AI エージェントが本番 DB を削除した事件 ─ 受託案件で備えるガードレール設計

2026 年 4 月 26 日、Hacker News で「An AI agent deleted our production database. The agent’s confession is below.」という投稿が一気に拡散しました。詳細は伏せつつ要点だけまとめると、本番運用に組み込まれた AI エージェントが「データベースのリストア手順を学習する」名目で本番 DB を DROP DATABASE し、復旧に丸 1 日を要したという事故です。

受託開発の現場では、すでに「コーディングエージェントを CI に組み込む」「ジョブを AI エージェントに任せる」案件が増えています。他人事ではない。本記事では、事件の構造を分解しながら、受託案件で最初から組み込むべきガードレール設計を整理します。

事件の構造 ─ なぜエージェントは本番 DB を削除できたのか

公開されている情報を整理すると、3 つの設計欠陥が重なっていました。

欠陥内容
権限分離なし開発・ステージング・本番のクレデンシャルが同一プロファイル下にあった
承認ステップなし破壊的 SQL(DROP / TRUNCATE / DELETE WHERE 1=1)を即時実行できる構成
監査ログ後付けエージェントの操作ログが Slack 通知のみで、改ざん不能な保管がなかった

本質的には Cloudflare Sandboxes GA の記事 で書いた「エージェントを本番から物理的に隔離する」という発想が抜けていた、というのが私の評価です。

受託案件で最低限組み込むべき 4 層ガードレール

「とにかくサンドボックス、とにかく承認、とにかく監査」では運用が回りません。受託の現場で実装可能な、4 層構造のガードレールを提案します。

目的主な技術
第 1 層:権限分離物理的に破壊操作を不能化IAM / DB ロール
第 2 層:実行サンドボックス短命環境で隔離Cloudflare Sandboxes / Firecracker
第 3 層:HITL 承認人間の介在ポイントSlack / Teams
第 4 層:監査ログ改ざん不能な保管S3 Object Lock 等

第 1 層:権限分離(Least Privilege)

エージェント用の IAM ロール / DB ユーザーは、業務に必要な操作だけを許可します。

環境許可する操作の例禁止する操作の例
開発CRUD すべて、スキーマ変更DROP DATABASE / DROP USER
ステージングCRUD、限定的な DDLDROP DATABASE / DELETE WHERE なし
本番SELECT + 業務 SQL のみDDL すべて、DML の WHERE なし

PostgreSQL なら pg_hba.confGRANT で、MySQL なら CREATE USER ... REQUIRE でロールを物理的に分離します。「設定で制御」ではなく「DB レベルでそもそも実行不能」にするのがコツです。

第 2 層:実行サンドボックス

破壊的操作の可能性があるツールは、短命なサンドボックス内で実行します。

agent_tool: db_query
runtime:
  type: sandbox
  image: postgres-readonly:16
  ttl: 600s
  network: egress-deny
  fs_writable: /tmp
guardrail:
  block_keywords: ['DROP', 'TRUNCATE', 'ALTER USER', 'GRANT']
  max_rows_affected: 1000

block_keywords を設定しておくと、AI が誤って生成した DROP 文がそもそも到達しません。max_rows_affected は「1 万行を超える DELETE は拒否」など、業務に応じて閾値を決めます。

第 3 層:HITL 承認(Human-in-the-Loop)

業務影響が大きい操作は、人間の承認が入るまで止める設計を入れます。

操作カテゴリ承認要件
SELECT自動実行 OK
単一行の更新(UPDATE WHERE id = ?)自動実行 OK
複数行の更新・削除Slack 承認必須
スキーマ変更(DDL)PR レビュー + 2 名承認必須
本番 DB 接続全般チケット ID + マネージャー承認必須

マルチモーダル MCP × カスタマーサポートの記事 でも書きましたが、HITL は最初から入れるのが鉄則です。「あとで入れる」は実装されない代名詞です。

第 4 層:改ざん不能な監査ログ

エージェントの操作は WORM ストレージ(Write Once Read Many) に書き出します。

  • AWS なら S3 + Object Lock(Compliance Mode)
  • GCP なら Cloud Storage Bucket Lock
  • Azure なら Immutable Blob Storage

ログには「誰のセッション ID で」「どのプロンプトを受け」「どんなツールを呼び」「結果はどうだったか」を時系列で残します。事故が起きた後で「エージェントが何を考えていたか」を再構成できる粒度が必要です。

受託契約でも明記しておきたい 3 項目

技術設計だけでなく、契約書レベルでも責任分界を明確化しておくのが受託の流儀です。私たちが顧客提案時に必ず入れる 3 項目を共有します。

  1. 本番環境への AI エージェント書き込みは、別途書面合意が必要
    • 開発時は強い権限を付けがち。「合意なしには本番 DML を実行しない」を契約条文化
  2. インシデント発生時の復旧手順とコスト負担の前提
    • データ消失の復旧は、AI が原因でも人間が原因でも同じくらい時間がかかる前提を明記
  3. 第三者監査ログへのアクセス権
    • クライアント側でも独立に監査ログを参照できる権限を付与する

コスト感 ─ ガードレール導入の費用感

項目期間単価帯
既存システムへのガードレール後付け4〜6 週間300〜700 万円
新規 AI エージェント案件のセキュア基盤設計6〜10 週間600〜1,500 万円
インシデント対応・原因調査支援都度100〜300 万円
月次レビュー(運用伴走)月額30〜80 万円

ガードレールは 「事故が起きてから入れる」と 5〜10 倍高くつく ため、PoC 段階で先に実装するのが結果的に安上がりです。私たちが参画した案件でも、PoC で組んだガードレール構成をそのまま本番に流用するパターンがほとんどです。

まとめ ─ AI エージェントは「便利な新人」ではなく「強力な権限を持つ自動実行装置」

AI エージェントを「便利な新人」のメタファーで扱うと、人間の新人と同じ感覚で本番権限を渡してしまいがちです。実態は 「自動で SQL を打ち続ける装置」 であり、ミスの規模も速度も人間とは桁違いです。

権限分離・サンドボックス・HITL・改ざん不能な監査ログ。この 4 層を最初から組んでおけば、今回のような「丸ごと DROP」は物理的に起こせません。

弊社では、AI エージェントを安全に本番投入するためのガードレール設計・実装・監査支援を受託で行っています。「コーディングエージェントを CI に組み込みたい」「業務エージェントを本番に出したい」というご相談は、お問い合わせフォーム からお気軽にどうぞ。

Sources

URLがコピーされました

グリームハブ株式会社は、変化の激しい時代において、アイデアを形にし、人がもっと自由に、もっと創造的に生きられる世界を目指しています。

記事を書いた人

鈴木 翔

鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

関連記事