記事

ゼロトラスト・クラウドサンドボックス:エージェント実行マシンに機密を置かない安全設計

モデル生成コードを実行する環境はデータベースや暗号鍵から物理的に隔離されています。コンテナを脱出しても機密情報は一切存在しません。

コンテナから脱出したエージェントが盗むべき価値のあるものを一切見つけられないようにするため、実行環境からDB接続と復号キーを完全に排除しました。

A locked boundary. The database and the key stand on the control side; the sandbox holds only agents and a working tree.controlsandboxdatabasekeynever crosses/workspace
暗号復号可能な要素はすべて一箇所に集約され、実行側にはコードのみが存在します。

2つの役割による厳格な隔離

認証系は内部ネットワークでDBを管理し、実行系は隔離環境でモデルコードを動かします。

権限判定は I/O を行わない純粋関数として実装されています。

export function checkFrame(access: ConnectionAccess, frame: ClientMsg["type"]): AccessCheck

インターフェースでのデータ最小化

実行側に渡すデータは名前とメールのみに限定し、パスワードハッシュ等は一切渡しません。

Git トークンは必要な瞬間にのみ一時取得され、プッシュ完了後即座に破棄されます。

データの最小化こそが根本的なセキュリティ特性です。

単一バイナリでのロール設計

sandbox ロールはDBなしで動作し、直接の外部Web接続を拒否します。

export const ROLES = ["all", "control", "sandbox"] as const;

export function needsDatabase(role: Role): boolean {
  return role !== "sandbox";
}

export function servesBrowsers(role: Role): boolean {
  return role !== "sandbox";
}

これにより安全なマルチテナント運用を実現しています。

サンドボックスの隔離構造は AIエージェント向けクラウドサンドボックス、実測データは クラウドサンドボックス実測結果 をご覧ください。

率直な答え

GitHub 認証情報はどこに保存されますか?

制御プレーン側で暗号化保存されます。実行マシンにはデータベースも鍵もありません。

エージェントがコンテナを脱出した場合、何が見えますか?

プロジェクトディレクトリと許可された通信先のみです。アカウント情報等は見えません。

通常のコンテナ保護より安全ですか?

相互補完的です。コンテナで脱出を防ぎ、秘密を置かないことで脱出の価値を無効化します。