- Güvenilmeyen kodu güvenli şekilde çalıştırmak için güvenli bir Linux microVM ortamı sunuyor
- Kod çalıştırılırken gizli anahtar koruması ve ağ erişim kontrolü ile LLM tarafından üretilen kodun veya kullanıcı kodunun veri sızdırma riskini engelliyor
sandbox.deploy() komutuyla geliştirme ortamından doğrudan Deno Deploy’a dağıtım yapılabiliyor; ek derleme veya kimlik doğrulama süreci gerekmiyor
- Volume ve snapshot özellikleri ile önbellek, veritabanı ve geliştirme ortamları hızla yeniden üretilebiliyor
- Yapay zeka ajanları, eklenti sistemleri, CI runner’ları gibi güvenlik gerektiren kod çalıştırma ortamları için uygun
Deno Sandbox’a genel bakış
- Deno Sandbox, Deno Deploy bulutu üzerindeki hafif Linux microVM’lerde güvenilmeyen kodu çalıştırma imkanı sunuyor
- JavaScript veya Python SDK ile oluşturulabiliyor ve açılış süresi 1 saniyenin altında
- SSH, HTTP ve VS Code üzerinden doğrudan etkileşim kurulabiliyor
- LLM’in ürettiği kodun veya kullanıcı tarafından sağlanan kodun API anahtarları içeren harici çağrılar yapması sırasında ortaya çıkan güvenlik sorunlarını çözmeyi amaçlıyor
- Sandbox içinde çalışan kod, sistem izolasyonu ve çok katmanlı savunma (defense-in-depth) yapısıyla korunuyor
Çalınamayan Secrets
- Sandbox ortamında gizli anahtarlar gerçek ortam değişkenleri olarak açığa çıkmıyor
- Kodun içinden yalnızca placeholder string’lere erişilebiliyor
- Gerçek anahtarlar yalnızca izin verilen host’lara yapılan giden istekler sırasında enjekte ediliyor
- Örneğin
OPENAI_API_KEY, sadece api.openai.com adresine istek gönderildiğinde etkinleşiyor; başka bir domaine sızdırılmaya çalışılırsa geçersiz hale geliyor
- Böylece prompt injection veya kötü amaçlı kodların anahtar çalma girişimleri engellenebiliyor
Ağ Çıkış Kontrolü
- Sandbox, izin verilen host listesi (
allowNet) dışındaki ağ isteklerini engelliyor
- Örnek:
["api.openai.com", "*.anthropic.com"]
- Tüm ağ trafiği VM sınırında engelleniyor ve
coder/httpjail benzeri bir çıkış proxy’si üzerinden politikalar uygulanıyor
- İleride giden bağlantı analizi ve istekleri incelemek/değiştirmek için programlanabilir hook’lar eklenmesi planlanıyor
- Deno’nun
--allow-net bayrağıyla birlikte kullanıldığında çift katmanlı ağ güvenliği sağlanabiliyor
Sandbox’tan Production’a
sandbox.deploy() komutuyla sandbox’tan doğrudan Deno Deploy’a dağıtım yapılabiliyor
- Ayrı bir CI build veya kimlik doğrulama süreci olmadan geliştirme ortamı anında serverless production’a dönüştürülebiliyor
- Örnek kodda
my-app, production: true seçeneğiyle dağıtılıyor ve ardından URL yazdırılıyor
- Böylece otomatik ölçeklenebilen serverless dağıtım tek bir çağrıyla gerçekleştirilebiliyor
Kalıcılık
- Sandbox varsayılan olarak ephemeral olsa da, durum saklamanın gerektiği durumlar için şu özellikler sunuluyor
- Volumes: önbellek, veritabanı ve kullanıcı verileri için okuma/yazma depolama
- Snapshots: araç zinciri veya temel volume’leri içeren salt okunur imajlar
apt-get install sonrasında snapshot oluşturulursa, sonraki tüm sandbox’lar önceden kurulmuş ortamla anında açılabiliyor
- Snapshot tabanlı volume’lerle yeni geliştirme ortamları birkaç saniye içinde oluşturulabiliyor
Teknik Ayrıntılar
- Bölge: Amsterdam, Chicago
- vCPU: 2
- Bellek: 768MB ~ 4GB
- Ömür: geçici (ephemeral) veya zaman aşımı temelli, gerekirse uzatılabiliyor
- Maksimum ömür: 30 dakika
- Açılış süresi: 1 saniyenin altında
- Uygun kullanım alanları: yapay zeka ajanı kod çalıştırma, güvenli eklenti sistemleri, geçici CI runner’ları, kullanıcı tarafından sağlanan kod çalıştırma ortamları
Fiyatlandırma
- Deno Deploy planlarına dahil ve kullanım bazlı ücretlendiriliyor
- CPU süresi: $0.05/saat (Pro planda 40 saat dahil)
- Bellek: $0.016/GB-saat (Pro planda 1000 GB-saat dahil)
- Volume depolama: $0.20/GiB-ay (Pro planda 5 GiB dahil)
- Enterprise planı için ayrıca iletişime geçilebiliyor
Başlangıç
- Deno Sandbox, beta sürümünde kullanıma sunuldu ve Deno Deploy’un genel kullanıma sunulması (GA) ile birlikte geliyor
- Başlıca kaynaklar
- Deno ekibi, kullanıcıların ve yapay zeka ajanlarının Deno Sandbox ile hangi projeleri geliştireceğini merakla bekliyor
1 yorum
Hacker News görüşleri
Deno ya da JavaScript hiç kullanmak zorunda olmamak ilginç görünüyor
Python için deno-sandbox SDK’sı üzerinden sandbox oluşturma, komut çalıştırma, dosya giriş/çıkışı gibi işlemler yapılabiliyor
API protokolünün WebSocket tabanlı çalıştığı görülüyor
Deno Sandbox’ın secret işleme biçimi etkileyici
Kodun içinde gerçek anahtar yerine yalnızca placeholder görünüyor ve gerçek anahtar sadece izinli hostlara giden isteklerde enjekte ediliyor
Kötü amaçlı kod bu placeholder’ı dışarı sızdırmaya çalışsa bile işe yaramaz
Proxy yanıt yönünde de anahtarı yeniden değiştiriyorsa bu zorlaşır ama yine de kusursuz bir savunma gibi görünmüyor
Bağlamı bilen proxy tabanlı secret enjeksiyonu daha güvenli olabilir
Uygulama anahtarı doğrudan ele almak yerine proxy API anahtarını onun adına ekliyor; böylece güvenlikte maruz kalma riski azalıyor
Secrets that can’t be stolen
Kötü amaçlı kod secret’ı kalıcı olarak çalamasa da, o anahtarı kullanarak kötü niyetli istekler gönderebilir
Bu, XSS’in httpOnly cookie’yi okuyamayıp yine de o cookie ile istek gönderebilmesine benzer bir fikir
Bu durumda certificate pinning gibi özellikler zorlaşabilir
Vault benzeri bir özellik eklenip eklenmeyeceği de sorulmak isteniyor
Deno ekibinin anlattığına göre son dönemde LLM’in ürettiği kodu doğrudan çalıştıran platform tipi servisler artıyor
Bu kodların dış API’leri çağırabilmesi için gerçek kimlik bilgileri ve ağ erişimi gerekiyor
Sadece sandboxing yetmiyor; ağ kontrolü ve secret koruması birlikte gerekiyor
Deno Sandbox ikisini de sağlıyor ve kod hazır olduğunda doğrudan Deno Deploy’a dağıtılabiliyor
Bizim ekip de benzer bir sandbox ortamını Firecracker + Go ile kendisi kurdu
Veri egemenliği nedeniyle yalnızca AB içinde hizmet vermek zorundayız; bu yüzden donanım sanallaştırmasını destekleyen her yere dağıtabiliyoruz
Kimlik bilgilerini LLM doğrudan kullanmasın diye, scope’u sınırlı bir CLI anlık olarak üretip veriyoruz
LLM bunu sadece bir bash komutu gibi çağırıyor
Güncel modeller coding assistant olarak eğitildiği için bu yaklaşım çok daha doğal ve verimli
Secret değiştirme yaklaşımı ilginç ama pratikte OAuth 1, JWT, HMAC gibi anahtar dönüşümü gereken durumlarda bozulabilir gibi görünüyor
Ayrıca anahtar payload’ın bir parçasıysa, bu değiştirme Content-Length uyumsuzluğu gibi HTTP sorunları da çıkarabilir
Üstelik bu yöntem SQL injection gibi başka saldırılara karşı da etkisiz
Sonuçta bu, tam bir savunmadan çok kısmi bir hafifletme gibi duruyor
Ücretsiz katman olduğu için Glitch gibi denemelik kullanma isteği uyandırıyor ama böyle ücretsiz servislerin yarıda kapandığını çok gördüğümden temkinliyim
Secret placeholder tasarımı iyi bir tercih gibi görünüyor
Ama artık çok fazla sandbox ürünü var — Modal, Daytona, Fly, Cloudflare, Deno vb.
İnsan gerçek üretim ortamında hangisinin kullanıldığını merak ediyor
Deno Sandbox’ın sunduğu hafif Linux microVM’lerin Deno Deploy bulutunda çalıştığı söyleniyor,
ama asıl soru bunun self-hosted Linux ortamında da çalıştırılıp çalıştırılamayacağı
Tamamen açık kaynak yaparlarsa AWS ya da GCP bunu kopyalayabilir
Sonuçta başkasının sandbox’ı içinde kale kuruyormuş hissi veriyor ama pratikte tek gelir modeli de bu gibi görünüyor
Claude Pro ya da Max planlarını böyle bir ortamda kullanınca her seferinde farklı bir IP’den bağlanılacağı için Anthropic’in bunu çok kullanıcılı erişim sanıp engelleyebileceğinden endişe ediliyor
Ayrıca oturumların neden 30 dakikayla sınırlı olduğu da merak ediliyor
Anthropic sanki sadece “gerçekten bir insan mı kullanıyor” sorusuna yönelik sezgisel yöntemler uyguluyor