Deno Sandbox 공개
(deno.com)- 신뢰할 수 없는 코드를 안전하게 실행하기 위한 보안 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
- 문서: docs.deno.com/sandbox
- JavaScript SDK: jsr.io/@deno/sandbox 또는 npm
- Python SDK: pypi.org/project/deno-sandbox
- Deno 팀은 사용자 및 AI 에이전트가 Deno Sandbox로 어떤 프로젝트를 구축할지 기대하고 있음
Hacker News 의견들
-
Deno나 JavaScript를 전혀 쓰지 않아도 된다는 점이 흥미로움
Python용 SDK인 deno-sandbox를 통해 샌드박스를 만들고 명령 실행, 파일 입출력 등을 할 수 있음
API 프로토콜은 WebSocket 기반으로 동작함을 확인했음- 샌드박스가 로컬이 아닌 클라우드에서 실행된다는 점이 처음엔 명확하지 않았음
-
Deno Sandbox의 시크릿 처리 방식이 인상적임
코드 내부에서는 실제 키 대신 플레이스홀더만 보이고, 승인된 호스트로 나가는 요청 시에만 진짜 키가 주입됨
악성 코드가 이 플레이스홀더를 외부로 유출하려 해도 쓸모없음- 하지만 프록시가 단순히 문자열 치환만 한다면, 공격자가 승인된 호스트 중 하나에서 키를 에코백하도록 유도할 수도 있지 않을까 하는 의문이 있음
프록시가 응답 방향에서도 키를 다시 치환한다면 어렵겠지만, 여전히 완벽한 방어는 아닐 듯함
맥락을 아는 프록시 기반 시크릿 주입이 더 안전할 수도 있음 - Fly의 Tokenizer를 떠올리게 함
애플리케이션이 직접 키를 다루지 않고, 프록시가 대신 API 키를 추가해주는 구조로 보안 노출 위험을 줄임 - Deno의 공식 블로그에서도 이 아이디어를 소개함
Secrets that can’t 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 직접 접근을 시도하는 것인지, 아니면 다른 용도인지 궁금함