# Deno Sandbox 공개

> Clean Markdown view of GeekNews topic #26390. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26390](https://news.hada.io/topic?id=26390)
- GeekNews Markdown: [https://news.hada.io/topic/26390.md](https://news.hada.io/topic/26390.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-02-04T12:32:59+09:00
- Updated: 2026-02-04T12:32:59+09:00
- Original source: [deno.com](https://deno.com/blog/introducing-deno-sandbox)
- Points: 4
- Comments: 1

## Topic Body

- 신뢰할 수 없는 코드를 안전하게 실행하기 위한 **보안 Linux 마이크로VM 환경**을 제공  
- 코드 실행 중 **비밀키 보호**와 **네트워크 접근 제어**를 통해 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)** 구조로 보호됨  
  
### Secrets That Can’t Be Stolen  
- 샌드박스 환경에서는 **비밀키가 실제 환경 변수로 노출되지 않음**  
  - 코드 내부에서는 **플레이스홀더 문자열**만 접근 가능  
  - 승인된 호스트로의 **아웃바운드 요청 시에만 실제 키가 주입**  
- 예를 들어 `OPENAI_API_KEY`는 `api.openai.com`으로 요청할 때만 활성화되며, 다른 도메인으로 유출 시 무효화됨  
- 이를 통해 **프롬프트 인젝션이나 악성 코드의 키 탈취 시도 차단** 가능  
  
### Network Egress Control  
- 샌드박스는 **허용된 호스트 목록(allowNet)** 외의 네트워크 요청을 차단  
  - 예: `["api.openai.com", "*.anthropic.com"]`  
- 모든 네트워크 트래픽은 **VM 경계에서 차단**되며, `coder/httpjail`과 유사한 **아웃바운드 프록시**를 통해 정책 적용  
- 향후 **아웃바운드 연결 분석** 및 **요청 검사·수정용 프로그래밍 훅** 추가 예정  
- Deno의 `--allow-net` 플래그와 결합 시 **이중 네트워크 보안 계층** 구성 가능  
  
### Sandbox to Production  
- `sandbox.deploy()` 명령으로 **샌드박스에서 Deno Deploy로 직접 배포** 가능  
  - 별도의 CI 빌드나 인증 과정 없이 **개발 환경을 즉시 서버리스 프로덕션으로 전환**  
  - 예시 코드에서는 `my-app`을 `production: true` 옵션으로 배포 후 URL 출력  
- 이를 통해 **자동 확장 가능한 서버리스 배포**를 단일 호출로 수행 가능  
  
### Persistence  
- 기본적으로 샌드박스는 **휘발성(ephemeral)** 이지만, 상태 저장이 필요한 경우 다음 기능 제공  
  - **Volumes**: 캐시, 데이터베이스, 사용자 데이터용 읽기/쓰기 스토리지  
  - **Snapshots**: 도구 체인이나 기본 볼륨을 포함한 읽기 전용 이미지  
- `apt-get install` 후 스냅샷을 생성하면, 이후 모든 샌드박스가 **사전 설치된 환경으로 즉시 부팅** 가능  
- 스냅샷 기반 볼륨으로 **새 개발 환경을 몇 초 만에 생성** 가능  
  
### Technical Details  
- **리전**: Amsterdam, Chicago  
- **vCPU**: 2  
- **메모리**: 768MB ~ 4GB  
- **수명**: 일시적(ephemeral) 또는 타임아웃 기반, 필요 시 연장 가능  
- **최대 수명**: 30분  
- **부팅 시간**: 1초 미만  
- 적합한 사용 사례: **AI 에이전트 코드 실행**, **보안 플러그인 시스템**, **임시 CI 러너**, **사용자 제공 코드 실행 환경**  
  
### Pricing  
- Deno Deploy 요금제에 포함되며 **사용량 기반 과금**  
  - CPU 시간: **$0.05/h** (Pro 요금제에 40시간 포함)  
  - 메모리: **$0.016/GB-h** (Pro 요금제에 1000 GB-h 포함)  
  - 볼륨 스토리지: **$0.20/GiB-month** (Pro 요금제에 5 GiB 포함)  
- **엔터프라이즈 요금제**는 별도 문의 가능  
  
### Get Started  
- Deno Sandbox는 **베타 버전으로 공개**, Deno Deploy의 **일반 출시(GA)** 와 함께 제공  
- 주요 리소스  
  - 랜딩 페이지: [deno.com/sandbox](https://deno.com/sandbox)  
  - 문서: [docs.deno.com/sandbox](https://docs.deno.com/sandbox/)  
  - JavaScript SDK: [jsr.io/@deno/sandbox](https://jsr.io/@deno/sandbox) 또는 [npm](https://www.npmjs.com/package/@deno/sandbox)  
  - Python SDK: [pypi.org/project/deno-sandbox](https://pypi.org/project/deno-sandbox/)  
- Deno 팀은 **사용자 및 AI 에이전트가 Deno Sandbox로 어떤 프로젝트를 구축할지 기대**하고 있음

## Comments



### Comment 50597

- Author: neo
- Created: 2026-02-04T12:32:59+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46874097) 
- Deno나 JavaScript를 전혀 쓰지 않아도 된다는 점이 흥미로움  
  Python용 SDK인 [deno-sandbox](https://pypi.org/project/deno-sandbox/)를 통해 샌드박스를 만들고 명령 실행, 파일 입출력 등을 할 수 있음  
  API 프로토콜은 **WebSocket 기반**으로 동작함을 확인했음  
  - 샌드박스가 **로컬이 아닌 클라우드**에서 실행된다는 점이 처음엔 명확하지 않았음  

- Deno Sandbox의 시크릿 처리 방식이 인상적임  
  코드 내부에서는 실제 키 대신 **플레이스홀더**만 보이고, 승인된 호스트로 나가는 요청 시에만 진짜 키가 주입됨  
  악성 코드가 이 플레이스홀더를 외부로 유출하려 해도 쓸모없음  
  - 하지만 프록시가 단순히 문자열 치환만 한다면, 공격자가 승인된 호스트 중 하나에서 키를 **에코백**하도록 유도할 수도 있지 않을까 하는 의문이 있음  
    프록시가 응답 방향에서도 키를 다시 치환한다면 어렵겠지만, 여전히 완벽한 방어는 아닐 듯함  
    맥락을 아는 **프록시 기반 시크릿 주입**이 더 안전할 수도 있음  
  - Fly의 [Tokenizer](https://github.com/superfly/tokenizer)를 떠올리게 함  
    애플리케이션이 직접 키를 다루지 않고, 프록시가 대신 API 키를 추가해주는 구조로 **보안 노출 위험**을 줄임  
  - Deno의 공식 블로그에서도 이 아이디어를 소개함  
    [Secrets that can’t be stolen](https://deno.com/blog/introducing-deno-sandbox#secrets-that-cant-be-stolen)  
    악성 코드가 시크릿을 **영구적으로 탈취**하지는 못하지만, 여전히 그 키를 이용해 악의적 요청을 보낼 수는 있음  
    마치 XSS가 httpOnly 쿠키를 읽을 수는 없지만, 그 쿠키로 요청을 보낼 수 있는 것과 비슷한 개념임  
  - HTTPS 요청을 가로채는 **MITM 프록시** 방식일 가능성이 높음  
    이 경우 **인증서 핀닝** 같은 기능은 어려워질 수 있음  
  - TCP 기반 DB 연결처럼 헤더 치환이 불가능한 경우엔 어떻게 처리되는지 궁금함  
    Vault 같은 기능이 추가될지도 물어보고 싶음  

- Deno 팀이 밝히길, 최근에는 LLM이 생성한 코드를 바로 실행하는 **플랫폼형 서비스**가 늘고 있음  
  이런 코드가 외부 API를 호출하려면 **실제 자격 증명**과 네트워크 접근이 필요함  
  단순한 샌드박싱만으로는 부족하고, **네트워크 제어와 시크릿 보호**가 함께 필요함  
  Deno Sandbox는 이 두 가지를 모두 제공하며, 코드가 준비되면 Deno Deploy로 바로 배포할 수 있음  
  - “이건 단순한 플러그인 샌드박스가 아니라 AI 코드 실행 플랫폼”이라는 문구를 읽을 때마다, 본능적으로 “**이건 AI다**”라는 생각이 듦  

- 우리 팀도 비슷한 샌드박스 환경을 **Firecracker + Go**로 직접 구축했음  
  데이터 주권 문제 때문에 EU 내에서만 서비스해야 해서, 하드웨어 가상화가 가능한 곳이면 어디든 배포 가능함  
  자격 증명은 LLM이 직접 다루지 않도록, **스코프가 제한된 CLI**를 즉석에서 생성해 제공함  
  LLM은 단순히 bash 명령처럼 이를 호출함  
  최신 모델들이 **코딩 어시스턴트**로 학습되어 있어서 이런 접근이 훨씬 자연스럽고 효율적임  

- 시크릿 치환 방식이 흥미롭지만, 실제로 **OAuth 1, JWT, HMAC** 같은 키 변환이 필요한 경우엔 깨질 수도 있지 않을까 싶음  
  또한 키가 페이로드 일부일 경우, 치환으로 인해 **Content-Length 불일치** 같은 HTTP 문제도 생길 수 있음  
  게다가 이런 방식은 SQL 인젝션 같은 다른 공격에는 무력함  
  결국 이건 완전한 방어책이라기보다 **부분적 완화책** 정도로 보임  

- 무료 요금제가 있어서 **Glitch처럼 실험용으로 써보고 싶은 마음**이 들지만, 이런 무료 서비스는 늘 중간에 종료된 경험이 많아 조심스러움  

- 시크릿 플레이스홀더 설계는 좋은 선택으로 보임  
  하지만 요즘 샌드박스 제품이 너무 많음 — Modal, Daytona, Fly, Cloudflare, Deno 등  
  실제 프로덕션에서는 어떤 걸 쓰는지 궁금함  
  - 사실 이런 서비스들은 대부분 **VM 래퍼** 수준이라, EC2나 GCP SDK로 직접 구현도 가능함  
  - Factory, Nvidia, Perplexity, Manus 등은 **E2B**를 프로덕션에서 사용 중이며, 지금까지 2억 개 이상의 샌드박스를 실행했다고 함  

- Deno Sandbox가 제공하는 **경량 Linux microVM**이 Deno Deploy 클라우드에서 돌아간다고 하는데,  
  이걸 **자체 호스팅된 Linux 환경**에서도 돌릴 수 있는지가 핵심 궁금증임  
  - 하지만 대부분의 업체가 **락인 전략**을 택함  
    완전한 오픈소스로 풀면 AWS나 GCP가 복제해버리기 때문임  
    결국 다른 사람의 샌드박스 안에서 성을 쌓는 기분이지만, 현실적으로는 그게 유일한 수익 모델임  

- Claude Pro나 Max 플랜을 이런 환경에서 쓰면, 매번 다른 IP로 접속하게 되어 **Anthropic이 다중 사용자로 오인**해 차단할 수도 있지 않을까 걱정됨  
  또 세션이 30분으로 제한된 이유도 궁금함  
  - 곧 **세션 수명 연장**을 계획 중이라고 함. 내부 기술 조정이 필요해서 시간이 걸린다고 함  
  - 참고로 나는 약 50개의 IP에서 이런 식으로 사용 중인데 문제없었음  
    Anthropic은 단순히 “**사람이 직접 사용 중인지**”를 판단하는 휴리스틱을 쓰는 듯함  
  - 혹시 이런 방식의 사용 목적이 **월 구독 플랜으로 API 직접 접근**을 시도하는 것인지, 아니면 다른 용도인지 궁금함
