0Pricing
AI Agents · Ders

Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı

Aracılar için gVisor, Firecracker microVMs ve donanım düzeyinde yalıtım.

Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Docker'ın Ötesi: Daha Güçlü Yalıtım

Standart Docker kapsayıcıları ana makinenin çekirdeğini paylaşır. Kapsayıcının içindeki bir çekirdek açığından yararlanılarak ana makineye çıkılabilir. Yüksek güvenlik gerektiren kod yürütme işlemleri için daha güçlü yalıtım katmanları gerekir.

İki temel yaklaşım vardır: gVisor (kullanıcı alanı çekirdek vekili) ve Firecracker (hafif MicroVMs).

gVisor Nasıl Çalışır

gVisor, kapsayıcı ile ana makine çekirdeği arasına Sentry adlı bir kullanıcı alanı bileşeni yerleştirir. Kapsayıcının sistem çağrıları, gerçek çekirdeğe değil, Go ile güvenli bir alt kümeyi yeniden uygulayan Sentry'ye gider.

Çalışma zamanının adı runsc şeklindedir (korumalı alanda çalıştırılan kapsayıcı).

# Configure Docker to use gVisor runtime (runsc)
# /etc/docker/daemon.json:
# {
#   "runtimes": {
#     "runsc": { "path": "/usr/local/bin/runsc" }
#   }
# }

import docker
client = docker.from_env()

output = client.containers.run(
    'python:3.12-slim',
    'python -c "print(\"hello from gVisor\")"',
    runtime='runsc',          # use gVisor
    network_disabled=True,
    auto_remove=True
)
print(output.decode())

gVisor Sistem Çağrılarını Araya Girerek Denetleme

Kapsayıcının içindeki kod open(), read() veya socket() işlevini çağırdığında gVisor sistem çağrısını yakalar ve izin verip vermeyeceğine, benzetim yapıp yapmayacağına veya reddedip reddetmeyeceğine karar verir.

ptrace gibi hassas sistem çağrıları veya ham soket oluşturma varsayılan olarak engellenir ve yaygın istismar yolları kapatılır.

# gVisor blocks dangerous syscalls like ptrace.
# This code would fail inside a gVisor container:
#
# import ctypes
# libc = ctypes.CDLL(None)
# libc.ptrace(...)   # EPERM: Operation not permitted
#
# Normal Python I/O and computation works fine:
# open(), read(), write(), socket() (if network enabled)
# are all emulated safely by Sentry.
print('gVisor intercepts syscalls before they reach the host kernel')

gVisor Performans Ödünleşimi

Her sistem çağrısı doğrudan çekirdeğe gitmek yerine Sentry üzerinden geçer. Bu, G/Ç ağırlıklı iş yüklerinde yaklaşık %10-30 ek yük oluşturur. CPU ağırlıklı hesaplamalarda ek yük çok daha küçüktür.

Başlatma süresi normal Docker ile benzerdir; milisaniyeler düzeyindedir.

import time
import docker

client = docker.from_env()

start = time.time()
client.containers.run('python:3.12-slim', 'python -c "pass"',
                      runtime='runsc', auto_remove=True)
print(f'gVisor startup: {time.time()-start:.2f}s')   # ~0.3-0.8s

start = time.time()
client.containers.run('python:3.12-slim', 'python -c "pass"',
                      auto_remove=True)
print(f'Docker startup: {time.time()-start:.2f}s')   # ~0.1-0.3s

Firecracker MicroVMs

Firecracker tamamen farklı bir yaklaşım benimser: her iş yükünü kendi çekirdeğine sahip tam bir sanal makinede çalıştırır. VM yaklaşık 50 ms içinde başlar ve yalnızca yaklaşık 5 MB ek bellek kullanır.

VM'lerin tamamen ayrı bir çekirdeği olduğundan paylaşılan bir çekirdek saldırı yüzeyi yoktur.

# Firecracker is controlled via a REST API on a Unix socket.
# Python SDK example (firecracker-python-sdk or direct HTTP):

import requests_unixsocket

session = requests_unixsocket.Session()
base = 'http+unix://%2Ftmp%2Ffirecracker.socket'

# Boot the microVM
session.put(f'{base}/boot-source', json={
    'kernel_image_path': '/opt/kernel/vmlinux',
    'boot_args': 'console=ttyS0 reboot=k panic=1 pci=off'
})
session.put(f'{base}/actions', json={'action_type': 'InstanceStart'})
print('MicroVM booted in ~50ms')

Firecracker Güvenlik Modeli

Firecracker VM'leri tasarım gereği asgari bir saldırı yüzeyine sahiptir. VMM yalnızca 5 aygıt türü sunar (virtio-net, virtio-block, seri bağlantı, RTC, klavye). USB yoktur, PCI veri yolu yoktur, BIOS yoktur.

Her VM hipervizör düzeyinde yalıtılmıştır; VM'nin içindeki bir çekirdek açığından yararlanılarak ana makineye erişilemez.

# Firecracker security properties:
# 1. Each microVM has its own Linux kernel instance
# 2. Guest-to-host attack surface is tiny (5 device types)
# 3. The VMM (Virtual Machine Monitor) runs unprivileged
# 4. No shared memory between VMs
# 5. Snapshot/restore: freeze a running VM, clone it for next request

# Used in production by:
# - AWS Lambda (each function invocation = Firecracker microVM)
# - Fly.io (each app container)
# - Replit (code execution)
print('Firecracker: full VM isolation at container startup speed')

Kata Containers: İki Yaklaşımı Birleştirme

Kata Containers hafif bir VM kullanır (Firecracker veya QEMU kullanılabilir), ancak standart OCI kapsayıcı arayüzünü sunar. Normal Docker komutlarını çalıştırırsınız; Kata, VM katmanını şeffaf biçimde yönetir.

import docker
client = docker.from_env()

# Kata Containers registered as 'kata-runtime' in daemon.json
output = client.containers.run(
    'python:3.12-slim',
    'python -c "import platform; print(platform.node())"',
    runtime='kata-runtime',   # each container = a VM
    mem_limit='256m',
    network_disabled=True,
    auto_remove=True
)
print(output.decode())  # unique VM hostname

Doğru Yalıtım Düzeyini Seçme

Doğru korumalı alan, tehdit modelinize ve gecikme bütçenize bağlıdır:

  • Docker (runc): hızlı, düşük ek yüklü, paylaşılan çekirdek — güvenilir veya hafifçe filtrelenmiş kod için uygundur
  • gVisor (runsc): sistem çağrısı filtreleme, aynı imaj biçimi, düşük ek yük — iyi bir denge sunar
  • Firecracker/Kata: tam VM yalıtımı, 50 ms başlatma — büyük ölçekte güvenilmeyen kullanıcı kodu için

Güvenlik ve Başlatma Gecikmesi Tablosu

Yalıtım derinliği ile başlatma hızı ters orantılıdır. Seçiminizi, ajanınızın kullanım senaryosu için kabul edilebilir gecikmeye göre yapın.

# Isolation vs Latency summary:
#
# Runtime          | Isolation     | Startup  | Overhead
# -----------------|---------------|----------|----------
# runc (Docker)    | Namespace      | ~100ms   | ~0%
# gVisor (runsc)   | Syscall filter | ~300ms   | ~15-30%
# Kata Containers  | Full VM        | ~500ms   | ~10%
# Firecracker      | Full VM        | ~50ms    | ~5%
# QEMU KVM         | Full VM        | ~1-2s    | ~5%
#
# For interactive agent tools: gVisor is usually the sweet spot.
# For high-throughput batch jobs: Firecracker snapshots.

ISOLATION_OPTIONS = {
    'runc (Docker)':   {'isolation': 'Namespace',      'startup': '~100ms', 'overhead': '~0%'},
    'gVisor (runsc)':  {'isolation': 'Syscall filter',  'startup': '~300ms', 'overhead': '~15-30%'},
    'Kata Containers': {'isolation': 'Full VM',         'startup': '~500ms', 'overhead': '~10%'},
    'Firecracker':     {'isolation': 'Full VM',         'startup': '~50ms',  'overhead': '~5%'},
    'QEMU KVM':         {'isolation': 'Full VM',        'startup': '~1-2s',  'overhead': '~5%'},
}

for runtime, info in ISOLATION_OPTIONS.items():
    print(f"{runtime:<17} | {info['isolation']:<14} | startup {info['startup']:<7} | overhead {info['overhead']}")

Korumalı Alanları Önceden Isıtma

Her ajan isteği için bir VM'yi soğuk başlatmak gecikme ekler. Üretim sistemleri boşta bekleyen korumalı alanlardan oluşan bir havuzu önceden hazırlar. Bir istek geldiğinde hazır bir korumalı alan ayrılır, kullanılır ve ardından yok edilir; kesinlikle yeniden kullanılmaz.

import queue, threading

SANDBOX_POOL_SIZE = 5
pool = queue.Queue()

def pre_warm():
    'Start a sandbox and put it in the pool.'
    container = client.containers.create(
        'python:3.12-slim',
        'tail -f /dev/null',
        runtime='runsc',
        mem_limit='256m',
        network_disabled=True
    )
    container.start()
    pool.put(container)

# Pre-warm the pool at startup
for _ in range(SANDBOX_POOL_SIZE):
    threading.Thread(target=pre_warm, daemon=True).start()

def claim_sandbox():
    return pool.get(timeout=5)  # blocks until one is ready

Ölçekleme için Anlık Görüntü Alma ve Geri Yükleme

Firecracker, çalışan bir VM'nin anlık görüntüsünü diske alma özelliğini destekler. Anlık görüntü; bellek durumunu, aygıt durumunu ve CPU kayıtlarını içerir. Anlık görüntüden geri yükleme yaklaşık 10 ms sürer; bu, soğuk başlatmadan çok daha hızlıdır.

Bu yöntem, bir Python yorumlayıcısını bir kez önceden başlatmanıza, anlık görüntüsünü almanıza ve her istek için geri yüklemenize olanak tanır.

# Firecracker snapshot workflow:
# 1. Boot microVM, run Python interpreter, wait for REPL ready
# 2. Pause VM
# 3. Create snapshot
#    PUT /snapshot/create { snapshot_path, mem_file_path }
# 4. For each request:
#    PUT /snapshot/load { snapshot_path, mem_file_path }
#    # VM resumes from paused state with Python already loaded
#    # Send code via stdin/virtio-serial, read output
# 5. Discard VM after request (never reuse)

print('Snapshot restore: ~10ms vs 50ms cold boot for Firecracker')

gVisor, Kapsayıcı ile Ana Makine Çekirdeği Arasına Hangi Bileşeni Ekler?

gVisor'un yalıtım modeli, sistem çağrılarını yakalayan belirli bir bileşene dayanır. Bu mimariyi anlamak, gVisor'un güvenlik garantilerini değerlendirmek için önemlidir.

VM Yalıtımı Özeti

Yüksek güvenlik gerektiren ajan kodu yürütme işlemleri için standart Docker'ın ötesine geçerek gVisor'u (sistem çağrısı yakalama, düşük ek yük) veya Firecracker'ı (tam VM, 50 ms başlatma, yaklaşık 5 MB ek yük) kullanın.

Ödünleşim her zaman yalıtım derinliği ile başlatma gecikmesi arasındadır. Önceden ısıtılan havuzlar ve VM anlık görüntüleri, üretimde gecikme maliyetinin büyük bölümünü telafi edebilir.

Sıkça Sorulan Sorular

“Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı” dersi ücretsiz mi?

Evet — “Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı” dersinde ne öğreneceğim?

Aracılar için gVisor, Firecracker microVMs ve donanım düzeyinde yalıtım. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Docker Tabanlı Aracı Korumalı Alanları
  2. Yüksek Güvenlikli Kod Aracıları İçin VM Yalıtımı
  3. E2B ve Bulut Korumalı Alan Hizmetleri
  4. Kod Çalıştırma İçin Güvenlik İlkeleri
← AI Agents Sayfasına Dön