Blog'a dönMühendislik

Production'a dokunmadan production benzeri veriyi nasıl sandbox'lıyoruz

Kurucu Ortak & CTO3 dakikalık okuma

Kurumsal alıcılardan duyduğumuz en büyük tek itiraz şu sorunun bir versiyonudur: 'bu bizim production veritabanımıza dokunuyor mu?' Cevap açık bir şekilde hayır olmalı ve mimari bunu sadece vaat etmek değil, kanıtlamak zorunda.

Her Monstral sandbox'ı, production kimlik bilgilerine ağ erişimi olmayan geçici bir Tier-3 microVM içinde çalışır. Bir alıcı oturum başlattığında, anonimleştirilmiş şemalardan üretilen binlerce gerçekçi görünümlü kaydı içeren sentetik bir tohum veri kümesini, oturum süresince yaşayan ve sonrasında yok edilen taze bir konteynere kopyalarız.

O tohum veri kümesini üretmek, dışarıdan basit görünen ama öyle olmayan kısım. Gerçek müşteri satırlarını kopyalayıp temizlemiyoruz — maskeleme her zaman bir şeyi sızdırır: bir isim formatını, bir yönlendirme desenini ya da gerçek kullanımı ele veren sayısal bir dağılımı. Bunun yerine bir şemanın biçimini modelliyoruz — alan tipleri, yabancı anahtar ilişkileri, gerçekçi değer aralıkları — ve bu modelden yepyeni sentetik kayıtlar üretiyoruz. Sonuç gerçek bir hesap gibi görünür, çünkü gizlenmiş bir kopya olduğu için değil, gerçek bir hesabın izleyeceği aynı yapısal kurallara uyduğu için.

Oturum sonlandırma, uygulama katmanında değil altyapı katmanında uygulanır. Bir sandbox oturumu sona erdiğinde — alıcı sekmeyi kapatsın, oturum zaman aşımına uğrasın ya da rehberli turu bitirsin — microVM sonlandırılır ve depolama birimi sıfırlanmaz ya da arşivlenmez, doğrudan atılır. Verisi bozulmadan devam ettirilebilecek bir "yumuşak silme" adımı yoktur. Bu sınırın öncesinde bir şey ters giderse, sonrasında açığa çıkacak hiçbir şey kalmaz.

Bu bize aynı anda iki şey kazandırır: gerçekçilik, çünkü veri gerçek uç durumlara sahip gerçek bir hesap gibi görünür ve davranır; ve güvenlik, çünkü sandbox'ın kendi bellek alanı dışında herhangi bir şeyi okumasına veya yazmasına izin veren bir kod yolu yoktur.

Neden bunun yerine paylaşımlı bir staging ortamı kurmadığımız soruluyor. Dürüst cevap şu: paylaşımlı staging, tam olarak kaçınmaya çalıştığımız hata modu — birçok potansiyel müşteri arasında yeniden kullanılan tek bir ortam, zamanla gerçek görünen bir durum biriktirir ve er ya da geç biri hangi kısımların sahte olması gerektiğini unutur. Oturum başına, kiracı başına izolasyon daha fazla altyapı çalıştırmak demek, ama bu sayede bir hatanın yayılabileceği "paylaşımlı" hiçbir şey olmuyor.

Her sandbox eylemi, sandbox'ın kendisinden ayrı, ekleme-yapılabilir (append-only) bir denetim günlüğüne yazılır — böylece sandbox'ın kendi depolaması oturum sonunda yok olsa bile, ekranda hangi sentetik verinin olduğunu hiç saklamadan oturum sırasında ne olduğunun (hangi ekranların görüntülendiği, hangi özelliklerin test edildiği) kaydını tutarız. Ayrı olarak yazdığımız alıcı-niyeti analizini gerçekte besleyen de bu günlüktür.

Güven merkezimizde daha derinlemesine bir güvenlik incelemesi yayımladık, ancak kısa özeti şu: sandbox, erişim yetkisi hiç verilmemiş bir şeyi sızdıramaz.