- มอบ สภาพแวดล้อม microVM Linux ที่ปลอดภัย สำหรับรันโค้ดที่ไม่น่าเชื่อถืออย่างปลอดภัย
- ป้องกัน ความเสี่ยงข้อมูลรั่วไหล จากโค้ดที่ LLM สร้างหรือโค้ดจากผู้ใช้ ด้วย การปกป้องคีย์ลับ และ การควบคุมการเข้าถึงเครือข่าย ระหว่างการรันโค้ด
- สามารถ ดีพลอยตรงไปยัง Deno Deploy จากสภาพแวดล้อมพัฒนาได้ด้วยคำสั่ง
sandbox.deploy() โดยไม่ต้องมีขั้นตอน build หรือยืนยันตัวตนเพิ่มเติม
- มี ฟีเจอร์ volume และ snapshot สำหรับสร้างแคช ฐานข้อมูล และสภาพแวดล้อมพัฒนาเดิมกลับมาใหม่ได้อย่างรวดเร็ว
- เหมาะกับ สภาพแวดล้อมรันโค้ดที่ต้องการความปลอดภัย เช่น AI agent, ระบบปลั๊กอิน, CI runner เป็นต้น
ภาพรวมของ Deno Sandbox
- Deno Sandbox มีความสามารถในการรันโค้ดที่ไม่น่าเชื่อถือบน lightweight Linux microVM บนคลาวด์ Deno Deploy
- สามารถสร้างได้ผ่าน JavaScript หรือ Python SDK และใช้เวลา boot น้อยกว่า 1 วินาที
- โต้ตอบได้โดยตรงผ่าน SSH, HTTP และ VS Code
- มีเป้าหมายเพื่อแก้ปัญหา ด้านความปลอดภัยเมื่อโค้ดที่ LLM สร้างหรือโค้ดจากผู้ใช้ทำ external call ที่มี API key รวมอยู่ด้วย
- โค้ดที่รันภายใน sandbox จะได้รับการปกป้องด้วยสถาปัตยกรรม system isolation และการป้องกันหลายชั้น (Defense-in-depth)
Secrets That Can’t Be Stolen
- ในสภาพแวดล้อม sandbox คีย์ลับจะไม่ถูกเปิดเผยออกมาเป็น environment variable จริง
- ภายในโค้ดจะเข้าถึงได้เพียง placeholder string เท่านั้น
- ระบบจะใส่คีย์จริงให้ เฉพาะตอนที่มี outbound request ไปยังโฮสต์ที่ได้รับอนุญาต
- ตัวอย่างเช่น
OPENAI_API_KEY จะทำงานเฉพาะเมื่อส่งคำขอไปยัง api.openai.com เท่านั้น และจะใช้ไม่ได้หากพยายามรั่วไหลไปยังโดเมนอื่น
- ช่วย ป้องกันความพยายามขโมยคีย์จาก prompt injection หรือโค้ดอันตราย ได้
Network Egress Control
- sandbox จะบล็อกคำขอเครือข่ายทั้งหมดที่อยู่นอก รายการโฮสต์ที่อนุญาต (allowNet)
- ตัวอย่าง:
["api.openai.com", "*.anthropic.com"]
- ทราฟฟิกเครือข่ายทั้งหมดจะถูก บล็อกที่ขอบเขต VM และใช้นโยบายผ่าน outbound proxy ที่คล้ายกับ
coder/httpjail
- ในอนาคตมีแผนเพิ่ม การวิเคราะห์การเชื่อมต่อขาออก และ programmable hook สำหรับตรวจสอบหรือแก้ไขคำขอ
- เมื่อนำไปใช้ร่วมกับแฟลก
--allow-net ของ Deno ก็สามารถสร้าง ชั้นความปลอดภัยเครือข่ายแบบสองชั้น ได้
Sandbox to Production
- สามารถใช้คำสั่ง
sandbox.deploy() เพื่อ ดีพลอยจาก sandbox ไปยัง Deno Deploy ได้โดยตรง
- เปลี่ยน สภาพแวดล้อมพัฒนาให้เป็น production แบบ serverless ได้ทันที โดยไม่ต้องมี CI build หรือขั้นตอนยืนยันตัวตนแยก
- ในโค้ดตัวอย่าง มีการดีพลอย
my-app พร้อมออปชัน production: true แล้วแสดง URL
- ทำให้สามารถ ดีพลอย serverless ที่ขยายอัตโนมัติได้ ด้วยการเรียกเพียงครั้งเดียว
Persistence
- โดยปกติ sandbox เป็นแบบ ephemeral แต่หากต้องการเก็บสถานะ จะมีฟีเจอร์ดังนี้
- Volumes: สตอเรจแบบอ่าน/เขียนสำหรับแคช ฐานข้อมูล และข้อมูลผู้ใช้
- Snapshots: อิมเมจแบบอ่านอย่างเดียวที่รวม toolchain หรือ base volume ไว้
- หากสร้าง snapshot หลังจาก
apt-get install แล้ว sandbox ถัดไปทั้งหมดจะ บูตขึ้นมาพร้อมสภาพแวดล้อมที่ติดตั้งล่วงหน้าได้ทันที
- สามารถใช้ volume ที่อิงจาก snapshot เพื่อ สร้างสภาพแวดล้อมพัฒนาใหม่ได้ภายในไม่กี่วินาที
Technical Details
- รีเจียน: Amsterdam, Chicago
- vCPU: 2
- หน่วยความจำ: 768MB ~ 4GB
- อายุการใช้งาน: แบบชั่วคราว (ephemeral) หรืออิงตาม timeout และสามารถขยายได้หากจำเป็น
- อายุสูงสุด: 30 นาที
- เวลา boot: น้อยกว่า 1 วินาที
- กรณีใช้งานที่เหมาะสม: การรันโค้ด AI agent, ระบบปลั๊กอินที่ต้องการความปลอดภัย, CI runner ชั่วคราว, สภาพแวดล้อมรันโค้ดจากผู้ใช้
Pricing
- รวมอยู่ในแพ็กเกจ Deno Deploy และ คิดค่าบริการตามการใช้งาน
- เวลา CPU: $0.05/h (รวม 40 ชั่วโมงในแพ็กเกจ Pro)
- หน่วยความจำ: $0.016/GB-h (รวม 1000 GB-h ในแพ็กเกจ Pro)
- พื้นที่เก็บข้อมูล volume: $0.20/GiB-month (รวม 5 GiB ในแพ็กเกจ Pro)
- แพ็กเกจ Enterprise สามารถติดต่อสอบถามแยกได้
Get Started
- Deno Sandbox เปิดตัวในเวอร์ชันเบตา และให้ใช้งานพร้อมกับการเปิดตัวทั่วไป (GA) ของ Deno Deploy
- แหล่งข้อมูลสำคัญ
- ทีม Deno กำลัง ตั้งตารอว่า ผู้ใช้และ AI agent จะสร้างโปรเจกต์อะไรได้บ้างด้วย Deno Sandbox
1 ความคิดเห็น
ความเห็นจาก Hacker News
น่าสนใจตรงที่ไม่จำเป็นต้องใช้ Deno หรือ JavaScript เลย
สามารถสร้างแซนด์บ็อกซ์ รันคำสั่ง และทำ I/O ไฟล์ได้ผ่าน deno-sandbox ซึ่งเป็น SDK สำหรับ Python
ยืนยันแล้วว่าโปรโตคอล API ทำงานบนพื้นฐานของ WebSocket
วิธีจัดการซีเคร็ตของ Deno Sandbox น่าประทับใจ
ภายในโค้ดจะเห็นเพียง placeholder แทนคีย์จริง และจะมีการใส่คีย์จริงให้เฉพาะตอนส่งคำขอไปยังโฮสต์ที่ได้รับอนุญาตเท่านั้น
ต่อให้โค้ดอันตรายพยายามดึง placeholder นี้ออกไปข้างนอก ก็ใช้งานอะไรไม่ได้
ถ้าพร็อกซีแทนที่คีย์กลับอีกครั้งในทิศทางของ response ก็คงทำได้ยากขึ้น แต่ก็ดูเหมือนจะยังไม่ใช่การป้องกันที่สมบูรณ์
การฉีดซีเคร็ตผ่านพร็อกซีที่เข้าใจบริบท อาจปลอดภัยกว่า
ตัวแอปไม่ต้องจัดการคีย์โดยตรง แต่ให้พร็อกซีเป็นคนเพิ่ม API key แทน ช่วยลด ความเสี่ยงจากการเปิดเผยข้อมูลด้านความปลอดภัย
Secrets that can’t be stolen
แม้โค้ดอันตรายจะ ขโมยซีเคร็ตไปถาวร ไม่ได้ แต่ก็ยังใช้คีย์นั้นส่งคำขอที่เป็นอันตรายได้อยู่ดี
คล้ายกับแนวคิดที่ XSS อ่านคุกกี้แบบ httpOnly ไม่ได้ แต่ยังส่งคำขอโดยใช้คุกกี้นั้นได้
ในกรณีนี้ฟีเจอร์อย่าง certificate pinning อาจทำได้ยาก
อยากถามด้วยว่าจะมีการเพิ่มฟีเจอร์แบบ Vault หรือไม่
ทีม Deno อธิบายว่า ช่วงหลังมีบริการแบบแพลตฟอร์มที่รัน โค้ดที่ LLM สร้างขึ้นทันที เพิ่มมากขึ้น
หากโค้ดเหล่านี้ต้องเรียกใช้ API ภายนอก ก็จำเป็นต้องมี credentials จริง และการเข้าถึงเครือข่าย
การทำแซนด์บ็อกซ์อย่างเดียวจึงไม่พอ และต้องมี การควบคุมเครือข่ายกับการปกป้องซีเคร็ต ไปพร้อมกัน
Deno Sandbox ให้ทั้งสองอย่างนี้ และเมื่อโค้ดพร้อมก็สามารถ deploy ต่อไปยัง Deno Deploy ได้ทันที
ทีมของเราก็เคยสร้างสภาพแวดล้อมแซนด์บ็อกซ์คล้ายกันขึ้นมาเองด้วย Firecracker + Go
เพราะข้อกำหนดเรื่อง data sovereignty ทำให้ต้องให้บริการอยู่ภายในสหภาพยุโรปเท่านั้น จึงต้อง deploy ได้ทุกที่ที่รองรับ hardware virtualization
เพื่อไม่ให้ LLM จัดการ credentials โดยตรง เราจึงสร้าง CLI ที่มีการจำกัด scope แบบเฉพาะกิจแล้วส่งให้ใช้งาน
LLM ก็แค่เรียกมันเหมือนคำสั่ง bash ทั่วไป
เนื่องจากโมเดลรุ่นใหม่ถูกฝึกมาเป็น coding assistant วิธีนี้จึงดูเป็นธรรมชาติและมีประสิทธิภาพกว่ามาก
แนวทางแทนที่ซีเคร็ตดูน่าสนใจ แต่ก็คิดว่าอาจพังได้ในกรณีที่ต้องมีการแปลงคีย์จริง เช่น OAuth 1, JWT, HMAC
อีกทั้งถ้าคีย์เป็นส่วนหนึ่งของ payload การแทนที่อาจทำให้เกิดปัญหา HTTP เช่น Content-Length ไม่ตรงกัน
และยิ่งไปกว่านั้น วิธีนี้ก็ช่วยอะไรไม่ได้กับการโจมตีแบบอื่น เช่น SQL injection
สุดท้ายจึงดูเหมือนเป็น มาตรการบรรเทาความเสี่ยงบางส่วน มากกว่าจะเป็นการป้องกันที่สมบูรณ์
มีแพ็กเกจฟรีให้ใช้ เลยรู้สึก อยากลองเล่นแบบ Glitch เพื่อทดลอง แต่ก็ระวังอยู่ เพราะบริการฟรีแนวนี้มักมีประวัติถูกปิดตัวกลางทาง
การออกแบบ placeholder สำหรับซีเคร็ตดูเป็นทางเลือกที่ดี
แต่ช่วงนี้มีผลิตภัณฑ์แซนด์บ็อกซ์เยอะมาก — Modal, Daytona, Fly, Cloudflare, Deno ฯลฯ
เลยอยากรู้ว่าในโปรดักชันจริงคนใช้ตัวไหนกัน
Deno Sandbox บอกว่าให้ Linux microVM แบบน้ำหนักเบา ที่ทำงานอยู่บนคลาวด์ Deno Deploy
แต่คำถามสำคัญคือมันจะรันบน สภาพแวดล้อม Linux ที่โฮสต์เอง ได้หรือไม่
เพราะถ้าเปิดเป็นโอเพนซอร์สทั้งหมด AWS หรือ GCP ก็อาจลอกไปได้
สุดท้ายก็ให้ความรู้สึกเหมือนสร้างปราสาทอยู่ในแซนด์บ็อกซ์ของคนอื่น แต่ในความเป็นจริงนั่นอาจเป็นโมเดลหารายได้แบบเดียวที่ใช้ได้
ถ้าใช้ Claude Pro หรือแพลน Max ในสภาพแวดล้อมแบบนี้ ก็แอบกังวลว่าอาจเชื่อมต่อด้วย IP คนละตัวทุกครั้งจน Anthropic เข้าใจผิดว่าเป็นผู้ใช้หลายคน แล้วบล็อกหรือไม่
อีกอย่างก็สงสัยว่าทำไมเซสชันถึงจำกัดไว้ที่ 30 นาที
ดูเหมือน Anthropic จะใช้ heuristic ง่าย ๆ เพื่อดูว่า “มีมนุษย์ใช้งานอยู่จริงหรือไม่”