- 信頼できないコードを安全に実行するためのセキュアな Linux microVM 環境を提供
- コード実行中、シークレットキーの保護とネットワークアクセス制御により、LLM 生成コードやユーザーコードのデータ漏えいリスクを遮断
sandbox.deploy() コマンドで、開発環境からDeno Deploy へ直接デプロイ可能。別途ビルドや認証プロセスは不要
- ボリュームとスナップショット機能により、キャッシュ、データベース、開発環境を高速に再現可能
- AI エージェント、プラグインシステム、CI ランナーなど、セキュリティが必要なコード実行環境に適している
Deno Sandbox 概要
- Deno Sandbox は、Deno Deploy クラウド上の軽量 Linux microVM で信頼できないコードを実行する機能を提供
- JavaScript または Python SDK から作成でき、起動時間は1 秒未満
- SSH、HTTP、VS Code を通じて直接操作可能
- LLM が生成したコードやユーザー提供コードが、API キーを含む外部呼び出しを行う際のセキュリティ問題の解決を目指している
- サンドボックス内で実行されたコードは、システム分離と多層防御(Defense-in-depth) の構造で保護される
盗めないシークレット
- サンドボックス環境では、シークレットキーが実際の環境変数として露出しない
- コード内部からはプレースホルダー文字列にしかアクセスできない
- 承認されたホストへのアウトバウンドリクエスト時にのみ実際のキーが注入される
- たとえば
OPENAI_API_KEY は api.openai.com へのリクエスト時にのみ有効化され、他のドメインへ流出しても無効化される
- これにより、プロンプトインジェクションや悪意あるコードによるキー窃取の試みを防止できる
ネットワーク送信制御
- サンドボックスは、許可されたホスト一覧(allowNet) 以外へのネットワークリクエストを遮断
- 例:
["api.openai.com", "*.anthropic.com"]
- すべてのネットワークトラフィックはVM 境界で遮断され、
coder/httpjail に似たアウトバウンドプロキシを通じてポリシーが適用される
- 今後はアウトバウンド接続の分析およびリクエスト検査・変更のためのプログラマブルフックを追加予定
- Deno の
--allow-net フラグと組み合わせることで、二重のネットワークセキュリティ層を構成できる
Sandbox から本番へ
sandbox.deploy() コマンドにより、サンドボックスから Deno Deploy へ直接デプロイ可能
- 個別の CI ビルドや認証プロセスなしで、開発環境を即座にサーバーレス本番環境へ移行できる
- サンプルコードでは
my-app を production: true オプションでデプロイし、その後 URL を出力
- これにより、自動スケール可能なサーバーレスデプロイを単一呼び出しで実行できる
永続化
- サンドボックスは基本的に**揮発性(ephemeral)**だが、状態保存が必要な場合には次の機能を提供
- Volumes: キャッシュ、データベース、ユーザーデータ向けの読み書き可能なストレージ
- Snapshots: ツールチェーンやベースボリュームを含む読み取り専用イメージ
apt-get install 後にスナップショットを作成すれば、以後すべてのサンドボックスを事前インストール済み環境で即座に起動できる
- スナップショットベースのボリュームにより、新しい開発環境を数秒で作成できる
技術詳細
- リージョン: Amsterdam、Chicago
- vCPU: 2
- メモリ: 768MB ~ 4GB
- 寿命: 一時的(ephemeral)またはタイムアウトベース。必要に応じて延長可能
- 最大寿命: 30 分
- 起動時間: 1 秒未満
- 適したユースケース: AI エージェントのコード実行、セキュアなプラグインシステム、一時的な CI ランナー、ユーザー提供コードの実行環境
料金
- Deno Deploy の料金プランに含まれ、従量課金制
- CPU 時間: $0.05/h(Pro プランに 40 時間含む)
- メモリ: $0.016/GB-h(Pro プランに 1000 GB-h 含む)
- ボリュームストレージ: $0.20/GiB-month(Pro プランに 5 GiB 含む)
- エンタープライズプランは別途問い合わせ可能
はじめる
- Deno Sandbox はベータ版として公開され、Deno Deploy の**一般提供(GA)**とともに利用可能
- 主なリソース
- Deno チームは、ユーザーや AI エージェントが Deno Sandbox でどのようなプロジェクトを構築するのか期待している
1件のコメント
Hacker Newsの意見
DenoやJavaScriptをまったく使わなくてもよい点が興味深い
Python向けSDKのdeno-sandboxを通じてサンドボックスを作成し、コマンド実行、ファイル入出力などができる
APIプロトコルはWebSocketベースで動作していることを確認した
Deno Sandboxのシークレット処理方式が印象的
コード内部では実際のキーの代わりにプレースホルダーだけが見え、承認済みホストへ出ていくリクエスト時にのみ本物のキーが注入される
悪意あるコードがこのプレースホルダーを外部に流出させようとしても役に立たない
プロキシがレスポンス方向でもキーを再度置換するなら難しいだろうが、それでも完璧な防御ではなさそう
文脈を理解するプロキシベースのシークレット注入のほうがより安全かもしれない
アプリケーションが直接キーを扱わず、プロキシが代わりにAPIキーを追加する構造で、セキュリティ露出リスクを減らす
Secrets that can’t be stolen
悪意あるコードがシークレットを恒久的に窃取することはできないが、それでもそのキーを使って悪意あるリクエストを送ることはできる
ちょうどXSSがhttpOnlyクッキーを読めなくても、そのクッキーでリクエストを送れるのと似た概念
この場合、証明書ピンニングのような機能は難しくなるかもしれない
Vaultのような機能が追加されるのかも聞いてみたい
Denoチームによれば、最近はLLMが生成したコードをそのまま実行するプラットフォーム型サービスが増えている
こうしたコードが外部APIを呼び出すには、実際の認証情報とネットワークアクセスが必要になる
単純なサンドボックス化だけでは不十分で、ネットワーク制御とシークレット保護があわせて必要になる
Deno Sandboxはこの2つをどちらも提供し、コードの準備ができればDeno Deployへそのままデプロイできる
私たちのチームも似たようなサンドボックス環境をFirecracker + Goで自前構築した
データ主権の問題でEU内でのみ提供する必要があり、ハードウェア仮想化が可能な場所ならどこにでもデプロイできる
認証情報はLLMが直接扱わないよう、スコープ制限されたCLIをその場で生成して提供している
LLMはそれを単なるbashコマンドのように呼び出すだけ
最新モデルはコーディングアシスタントとして学習されているので、このアプローチのほうがはるかに自然で効率的
シークレット置換方式は興味深いが、実際にOAuth 1、JWT、HMACのようなキー変換が必要な場合には壊れるのではないかと思う
また、キーがペイロードの一部である場合、置換によってContent-Lengthの不一致のようなHTTP上の問題も起こり得る
さらに、この方式はSQLインジェクションのような別種の攻撃には無力
結局のところ、これは完全な防御策というより部分的な緩和策程度に見える
無料プランがあるのでGlitchのように実験用として使ってみたくなるが、こうした無料サービスはいつも途中で終了した経験が多く、慎重になってしまう
シークレットのプレースホルダー設計は良い選択に見える
ただ、最近はサンドボックス製品が多すぎる — Modal、Daytona、Fly、Cloudflare、Denoなど
実際のプロダクションで何が使われているのか気になる
Deno Sandboxが提供する軽量Linux microVMがDeno Deployクラウドで動くとされているが、
これをセルフホストされたLinux環境でも動かせるのかが最大の疑問
完全にオープンソース化するとAWSやGCPに複製されてしまうからだ
結局、他人のサンドボックスの中に城を築くような気分だが、現実的にはそれが唯一の収益モデルでもある
Claude ProやMaxプランをこうした環境で使うと、毎回違うIPから接続することになってAnthropicが多重ユーザーと誤認してブロックするのではないかと心配になる
また、セッションが30分に制限されている理由も気になる
Anthropicは単に「人が直接使っているか」を判断するヒューリスティックを使っているようだ