テック技報最新号へ →
AIコーディング

Deno Sandbox: API キーはプレースホルダーで渡し、許可した宛先への通信のときだけ本物に差し替える

Deno Sandbox では秘密情報がサンドボックスの環境変数に入らない。中のコードに見えるのは DENO_SECRET_PLACEHOLDER_... という置き換え用の文字列で、指定したホストへ送るときだけ外側のプロキシが本物の値に差し替える。プロンプトインジェクションで鍵を外に送らせても、届くのは役に立たない文字列だけになる。

@techfeedapp · 投稿 2026-02-04
#ai-coding#sandbox#セキュリティ#APIキー#deno

どんな時に使う?

  • エージェントが書いたコードを、レビュー前にすぐ実行したい
  • サンドボックスの中で claude -p や OpenAI API を呼ばせたいが、鍵を読まれたくない

手順(TypeScript SDK @deno/sandbox)

ts
import { Sandbox } from "@deno/sandbox";

await using sandbox = await Sandbox.create({
  allowNet: ["api.anthropic.com"],
  secrets: {
    ANTHROPIC_API_KEY: {
      hosts: ["api.anthropic.com"],
      value: process.env.ANTHROPIC_API_KEY!,
    },
  },
});
await sandbox.sh`echo $ANTHROPIC_API_KEY`; // プレースホルダーが表示される
  • secrets の hosts が差し替え先。allowNet で通信先そのものも絞る
  • allowNet は example.com・example.com:443・*.example.com・IP アドレスを書ける
  • Python SDK(deno-sandbox)と REST API もある

注意点

  • allowNet を省くと外向き通信は全部許可になる。プレースホルダーは「許可したホストへなら送れる」ので、allowNet と組み合わせて初めて閉じる
  • Deno Deploy 上のクラウドサービス(利用には Deno Deploy のアカウントが要る)
  • 同じ考え方は手元でも真似できる。鍵をエージェントの環境に置かず、外側のプロキシで付け足す

出典

X の元の投稿を開く