Docker Sandboxes で実現する、コーディングエージェントの安全な自律実行

はじめに
Docker でソリューションエンジニアをしている根本 征です。
本ブログでは Docker で新たにリリースされた、コーディングエージェントを隔離されたサンドボックス環境で実行することができる「Docker Sandboxes」を紹介します。
目次
コーディングエージェントをホストマシンで直接実行するリスク
Claude Code をはじめとしたコーディングエージェントはもはやソフトウェア開発に欠かせないものになりつつあり、非エンジニアの方でも積極的に利用する機会が増えてきました。
今やコードを変更するのみに止まらず、コマンドの実行、パッケージのインストール、テストの実行、そしてコンテナの操作など多様な作業を実行させることができます。
性能が飛躍的に向上し、多くのことを自律的にできるようになった一方で、ホストマシンを危険に晒してしまうセキュリティリスクも指摘されています。
axios におけるソフトウェアサプライチェーン侵害
特に最近、大きな脅威になっているのがソフトウェアサプライチェーン攻撃です。
Node.js の HTTP クライアントライブラリである axios では、悪意のあるバージョンにおいて npm install を実行するだけで、postinstall スクリプトが実行された段階で遠隔操作ができる状態になっていました。
マシン上のシークレット、例えば npm トークンや SSH キー、クラウドの認証情報、GitHub トークンなどが盗まれる対象となっており、コーディングエージェントが知らぬ間に対象のバージョンをインストールしてこの影響を受けていた可能性もありました。
コーディングエージェント自体に含まれた脆弱性
また、コーディングエージェント自体にも脆弱性が報告されており、以下のような影響がありました。
- YOLO モード(すべての操作が承認なしで実行可能な状態)に切り替えられていた
- 外部からリモートコードが実行できる
- ファイルやトークン、ネットワークへのアクセスが可能になっていた
ここで強調したいのは、このような事件があったから別のコーディングエージェントを使う、ということではありません。
どのエージェントも、ホストマシンにおいて非常に大きい権限を与えることになります。ユーザーの承認なしで実行させようとするならなおさらです。
仮に今後このようなリスクが起きた場合でも、影響範囲をなるべく小さくする、より多層防御していく、こういった考えが重要になります。
Docker Sandboxes の特徴とアーキテクチャー
Docker Sandboxes はコーディングエージェントをホスト上ではなく、隔離された環境で安全に実行できるソリューションです。
軽量な MicroVM ベースで隔離し、コーディングエージェントによるコード編集やパッケージのインストールなどを、ホストマシンを危険に晒すことなく実行させることができます。
Docker Sandboxes は、以下 4 つの仕組みによってこの安全性を実現しています。
1. ファイルシステムマネージャーによるディレクトリ隔離
Docker Sandboxes では専用のファイルシステムマネージャーを備えており、コーディングエージェントが対象のディレクトリ以外を操作することが不可能になっています。
これによって、意図しないディレクトリの削除や、対象外のディレクトリに含まれているシークレットが盗まれるリスクを抑えられます。
2. ネットワークプロキシによる通信制御
すべてのトラフィックは専用のネットワークプロキシを通しており、アクセスルールを設定することが可能です。
仮に悪意のあるパッケージがこの中にインストールされた場合にも、そのネットワーク通信をブロックすることで被害が大きくなることを防ぐことができます。
3. 認証情報のセキュアな取り扱い
コーディングエージェントを実行する際には認証情報が必要になることが多いですが、Docker Sandboxes ではネットワークプロキシにおいて認証情報のヘッダーを挿入して通信する方式を取っています。
これにより、サンドボックス環境内にシークレットが保存されることはありません。
4. 専用の Docker Daemon
各サンドボックス環境には専用の Docker Daemon が備わっています。
そのため、Docker-in-Docker などを懸念する必要なく、コーディングエージェントが安全にイメージのビルドとコンテナの実行・操作を行うことができます。

Docker Sandboxes のアーキテクチャー
Docker Sandboxes は以下の主要なコーディングエージェントをサポートしています。
- Claude Code
- Codex
- GitHub Copilot
- Cursor
- Gemini CLI
- Kiro
既存の開発体験をそのままにエージェントに安全に自律性を与えることができます。
Docker Sandboxes をはじめる
では実際に、Docker Sandboxes を使って Claude Code を動かしてみましょう。
もともと Docker Desktop の機能として提供されていましたが、現在は単体で実行することが可能です。
現在 macOS / Windows で提供されており、こちらにあるコマンドを実行するだけで簡単にインストールし、はじめることができます。
- macOS: `brew install docker/tap/sbx`
- Windows:`winget install Docker.sbx`
初回 Docker アカウントへのログインが必要になるので、`sbx login`コマンドを実行します。
ログイン後には、デフォルトのネットワークポリシーをどうするか問われます。
通常の開発の場合には Balanced を推奨しており、一般的な開発サービスへのトラフィックは許可されていますが、それ以外のトラフィックは全てブロックします。
次に `sbx secret` コマンドでシークレットを設定していきます。
$ sbx secret set -g anthropic
API キーを設定できる他、Codex などの一部コーディングエージェントでは OAuth 認証も可能です。
実行したい対象のディレクトリに移動したら、以下のコマンドを実行します。
$ sbx run claude
MicroVM が立ち上がり、中で Claude Code が起動します。

Docker Sandboxes で Claude Code を動かす
ここから通常通りコーディングエージェントを操作することができます。
また、引数なしで`sbx` コマンドを実行すると、以下のようなダッシュボードが出てきます。
Docker Sandboxes ダッシュボード
これまでに作成したサンドボックス環境を確認することができ、ここから起動・シェルでのアクセス・削除などが可能になっています。
また、右のネットワークログでどのアクセスが許可・ブロックされているのか確認することができます。
おわりに
今回は、Claude Code などのコーディングエージェントを隔離されたサンドボックス環境で実行することができる Docker Sandboxes を紹介しました。
コーディングエージェントを利用する人が急増しているのと同時に、今後この環境を狙った攻撃やリスクがより増えていくことが予想されます。
完璧な対策は存在しませんが、多層防御の一つとして、ぜひ Docker Sandboxes を活用してみてください。
また、今後は組織や企業で設定を強制することができるガバナンス機能も登場する予定ですので、是非期待していただければと思います。
関連リンク
https://www.docker.com/ja-jp/products/docker-sandboxes/
この記事の著者:根本 征 (Tadashi Nemoto)
Strategic Solutions Engineer
複数の日系企業でテスト自動化エンジニア・DevOpsエンジニアとして活動した後、プリセールスエンジニアとして DevOps、CI/CD、自動テストを中心にお客様の技術支援や技術発信を行ってきました。2024年日本拠点1人目のプリセールスエンジニアとして Docker に入社。
DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly