コードエージェントのサンドボックス実行
モデルが生成したコードをホスト上で実行してはいけません。gVisor、Firecracker、E2Bのサンドボックスを使用します。
「コードエージェントのサンドボックス実行」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
なぜサンドボックスが必要ですか
コードエージェント(Devin、Claude Code、OpenDevin)は、モデルが生成したコードを実行します。そのコードをホスト上で実行すると、モデルは次のことができてしまいます。
- シークレットやAPIキーを読み取る
- ファイルを削除する
- 外部ネットワークへの接続を行う
- 暗号資産をマイニングする
サンドボックスとは、被害を限定する隔離環境です。
隔離レベル
| レベル | ツール | 用途 |
|---|---|---|
| プロセス | subprocess + chroot | セキュリティが低く、開発専用 |
| コンテナ | Docker | 十分なデフォルト |
| VM/microVM | Firecracker、gVisor | 強力な隔離 |
| ホスト型サンドボックス | E2B、Daytona | 本番環境で最も導入しやすい |
Docker Sandbox Basics
docker run \
--rm \
--network=none \
--memory=512m \
--cpus=0.5 \
--read-only \
--user=nobody \
-v /tmp/work:/work:rw \
python:3.11-slim \
python /work/script.pyネットワーク分離
--network=noneを指定すると、外部への通信が無効になります。一部のタスクでインターネットが必要な場合は、特定のホストだけを許可リストに登録するイグレスプロキシを使用してください。
リソース制限
上限を設定すると、CPUやメモリの暴走を防げます。
--memory— RAMの上限--cpus— CPUの割り当て--pids-limit— プロセス数--ulimit— ファイルディスクリプター
Firecracker/gVisor
Dockerより強力な隔離が必要な場合に使用します。
- Firecracker — AWSによるmicroVM。Lambdaで使用されています
- gVisor — Googleによるユーザー空間カーネル。Dockerの代わりにそのまま導入できます
- Kata Containers — VMによる隔離とDockerの操作性を両立
E2Bホスト型サンドボックス
E2B(e2b.dev)では、API経由でリモートサンドボックスを利用できます。
# pip install e2b
import e2b
sandbox = e2b.Sandbox(template='python', api_key='...')
result = sandbox.run_code('print(2 + 2)')
print(result.stdout) # '4'
sandbox.close()Daytona
Daytonaは同様のホスト型サンドボックス機能を、開発用ワークスペース向けに提供しています。
ファイルシステムサンドボックス
エージェントに必要なものだけを読み書き可能な状態でマウントし、それ以外は読み取り専用にするか、隠してください。
docker run -v ${PWD}/workdir:/workdir:rw \
-v ${PWD}/readonly:/readonly:ro ...時間制限
無限ループを防ぐため、実行時間の上限を設定します。
docker run --rm --stop-timeout 30 ... \
python -c 'import resource; resource.setrlimit(resource.RLIMIT_CPU, (30, 30)); exec(open("/work/script.py").read())'ログ記録
すべてのコマンド、すべての出力、すべてのファイル変更を記録します。影響の大きいエージェントでは、サンドボックスセッション全体を監査ログに記録してください。
マルチテナントサンドボックス
ユーザーごとにサンドボックスを分けることで、ユーザー同士が互いの状態を汚染するのを防ぎます。セッションごとに新しいサンドボックスを起動し、終了後に破棄してください。
コストとセキュリティ
隔離を強化すると、コストも増加します(VMごとのオーバーヘッド)。リスクに応じてレベルを選んでください。
- ユーザー向けのチュートリアル/サンドボックス機能:Dockerで十分です
- シークレットを扱う本番コード:Firecracker/E2B
ネットワーク封鎖
コードエージェントによる外向きのネットワーク呼び出しを完全に防ぐには、どうすればよいでしょうか?
要点の振り返り
モデルが生成したコードは、ホスト上で決して実行しないでください。リスクに応じて分離レベルを選択します。開発環境にはDocker、本番環境にはgVisor/Firecracker/E2Bを使用します。CPU、メモリ、実行時間、ネットワークに上限を設定します。
よくある質問
「コードエージェントのサンドボックス実行」レッスンは無料ですか?
はい。「コードエージェントのサンドボックス実行」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「コードエージェントのサンドボックス実行」で何を学びますか?
モデルが生成したコードをホスト上で実行してはいけません。gVisor、Firecracker、E2Bのサンドボックスを使用します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「コードエージェントのサンドボックス実行」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Prompt Injection対策
- 出力フィルタリング(Llama Guard、NeMo)
- コードエージェントのサンドボックス実行
- ツールのアクセス制御