Ana sayfa/Geliştiriciler/Güvenlik

Güvenlik mimarisi

Kaldera'nın tasarım varsayımı tek cümlede: host'a güvenilmez. Pazar yerinde makine sahibi bizim çalışanımız değil, karşı taraftır. Mimarinin tamamı bu varsayımın üstüne kuruldu.

Sertifika iddiamız yok. SOC 2 Type I bir süreç olarak planlı — alınmış değil.

Temel ilkeler

Güvenilmeyen makinede çalışan iş nasıl korunur?

Üç kural pazarlama cümlesi değil, mühendislik kısıtıdır: ihlal edilirse ürün derlenmez, akış çalışmaz.

Müşteri sırrı host diskine düşmez

Ortam değişkenleri, token'lar ve API anahtarları uygulama katmanında şifreli tutulur; makinenin diskinde düz metin bir sır bırakmayız. Host, konteynerinize enjekte edilen sırrı dosya sisteminden okuyamaz.

İmajlar imzalı cosign

Çalıştırılan imajların imzası doğrulanır; imzasız imaj isteği invalid_argument ile reddedilir. Amaç, host'un ya da yol üstündeki kimsenin çalıştırdığın imajı sessizce değiştirememesi.

Bağlantı daima dışa doğru Faz 1 · agent

Host agent'ı kontrol düzlemine kendisi bağlanır; host tarafında dinlenen bir port açılmaz, NAT arkasında da çalışır. Makine sahibinin evine gelen giriş yolu yoktur — trafik hep içeriden dışarı kurulur.

İş yükü ve veri

Konteynerin içi senin, dışı bizim sorumluluğumuz.

Konteyner izolasyonu

İş yükleri containerd üstünde, NVIDIA Container Toolkit ile ayrılmış GPU erişimiyle koşar. Host makinede k8s kurulmaz; yerleştirmeyi kendi zamanlayıcımız yapar, çünkü güvenilmeyen makineye küme yönetimi bırakılmaz.

Şifreli kalıcı volume

Kalıcı diskler şifreli tutulur ve pod'dan bağımsız yaşar: pod'u sonlandırdığında veri kalır, silmek istediğinde ?delete_volume=1 ile açıkça silinir. Silme isteği bir kez ve nettir; "belki lazım olur" diye saklamıyoruz.

Bölge sabiti sunucu tarafında zorunlu

Bölge kısıtı arayüz filtresi değildir. Sabitin dışındaki bir teklife pod yaratma isteği API katmanında 400 · region_pin_violation ile reddedilir. UI filtresi bir güvenlik sınırı sayılmaz — ayrıntısı Egemenlik sayfasında.

Log ve olaylarda PII maskeleme

Kişisel veri ve sır değerleri loglara maskelenerek yazılır. Yönetim panelindeki her değişiklik gerekçesiyle birlikte, sonradan değiştirilemeyen (append-only) bir denetim kaydına düşer; gerekçesiz değişiklik reddedilir.

API yüzeyi

Anahtar kadar yetki, istek kadar sınır.

API anahtarları kld_ ile başlar, sunucuda hash'li saklanır ve tam değeri yalnız yaratılışta bir kez gösterilir. Konsol ayrı yoldan, HttpOnly oturum çerezi ile konuşur.

KontrolKuralNeden
Anahtar kapsamlarıoffers:read · pods:write · billing:read · host:writeCI'daki anahtarın faturayı okuması gerekmiyorsa okumaz.
İdempotansIdempotency-Key · 24 saatAğ koptuğunda tekrar gönderilen istek ikinci pod'u ve ikinci ücreti doğurmaz.
Hız sınırıanonim 60/dk · kimlikli 600/dk · pod yaratma 10/dkKötüye kullanımı ve kaza sonucu döngüye giren betikleri frenler.
Rol matrisiowner · admin · member · billing · hostFaturayı gören ile terminal açan aynı kişi olmak zorunda değil.
Yetkisiz eylemgizlenmez, pasif gösterilirÜrünün ne yapabildiği herkese görünür kalır; kullanıcı yöneticisinden ister.
Denetim kaydıappend-only, gerekçe zorunluSonradan düzeltilebilen kayıt, kayıt değildir.

Bu tablo hedef sözleşmedir. Faz 0'da control plane yerel geliştirme için kimlik doğrulaması yapmaz; anahtar üretimi, kapsam denetimi ve hız sınırı ilk beta ile açılacak.

Terminal oturumu

Tarayıcıdan kabuk, ama anahtarına dokunmadan.

Web terminali bir WebSocket ↔ SSH köprüsüdür. Köprü, kullanıcının kişisel SSH özel anahtarını asla görmez; pod yaratılırken pod'a özel bir anahtar çifti üretilir ve özel anahtar şifreli saklanır.

Token 60 saniye ömürlü ve tek kullanımlık; kullanıcıya, pod'a ve IP'ye bağlıdır.
Oturum içeriği kaydedilmez. Denetim kaydına yalnız meta veri yazılır: kim, hangi pod, ne zaman, ne kadar.
Boşta 15 dakikada kapanır; organizasyon başına eşzamanlı oturum limiti ve kanal başına hız sınırı vardır.
Rol kısıtı: terminal member ve üstü roldedir; billing rolü terminal açamaz.
terminal oturumu
# 1) Kısa ömürlü, tek kullanımlık oturum iste
POST /v1/pods/{id}/terminal/session

{ "ws_url": "wss://…/terminal",
  "token": "tek kullanımlık",
  "expires_at": "+60 sn" }

# 2) Token ile WebSocket'e yüksel
GET /v1/pods/{id}/terminal?token=…

# 3) Çerçeveler
istemci → sunucu  binary  = ham stdin
istemci → sunucu  text    = {"t":"resize"}
sunucu  → istemci binary  = ham stdout
sunucu  → istemci text    = {"t":"status"}

# Token bir kez kullanılır; log'a düşse bile
# ikinci kez açılmaz.

Uyum durumu

Neyin alındığını değil, neyin planlandığını yazıyoruz.

Şirket henüz kurulmadı, ürün Faz 0'da. Bu yüzden aşağıdaki satırların hiçbirinde "sertifikalıyız" yazmıyor.

Sır izolasyonu ve şifreli sır saklamatasarım sabit · uygulama sürüyor
İmza doğrulaması (cosign)tasarım sabit · imaj hattı kuruluyor
Bölge sabitinin sunucu tarafı kontrolüsözleşmede tanımlı · uygulama sürüyor
API anahtarı, kapsam ve hız sınırıilk beta
Denetim kaydı (append-only) ve yönetim paneliFaz 0 teslim dilimi 6
Web terminali ve tek kullanımlık tokenFaz 0 sonu
KVKK / GDPR / AI Act uyum paketiFaz 3
SOC 2 Type Isüreç olarak planlı · alınmadı
Verified katman ve yerinde denetimFaz 3
KVKKGDPREU AI ActBölge sabitlemeSOC 2 Type I — süreçte

Bir denetim firması, sertifika numarası veya rozet göremezsin; olmayan bir belgeyi ima etmenin en zararsız hâli bile yalandır. Süreç başladığında hangi kapsamda ve hangi firmayla olduğu burada yazacak.

Açık bildirimi

Bir açık bulduysan, önce bize söyle.

Sorumlu açıklama (responsible disclosure) ilkesine göre çalışıyoruz. Bildirimini merhaba@kaldera.ai adresine yolla — ayrı bir güvenlik adresi ve PGP anahtarı ilk beta ile yayımlanacak, o güne kadar bu adres yer tutucudur ve yanıt süresi taahhüdü vermiyoruz.

Bildirimde olması gerekenler

  • Etkilenen uç, ekran ya da bileşen; mümkünse istek ve yanıt örneği.
  • Yeniden üretme adımları — düzeltebilmemizin en kısa yolu budur.
  • Etki değerlendirmen: hangi veriye, hangi yetkiyle erişilebiliyor.

Senden ricamız

  • Başkasının verisine erişme; kavram kanıtı için kendi hesabını kullan.
  • Hizmeti bozan test yapma: yük testi, veri silme, kalıcı değişiklik yok.
  • Düzeltme yayımlanana kadar açığı kamuya açma; makul bir süre üzerinde birlikte anlaşalım.

Bizden sözümüz

  • İyi niyetli araştırmaya hukuki yol aramayız.
  • Düzeltmeyi yayımladığımızda, istersen katkını adınla yazarız.
  • Ödül programımız yok ve varmış gibi de yapmıyoruz; kurulursa kuralları burada yayımlanır.

Devamı

Güvenlik ile egemenlik aynı kararın iki yüzü.

Verinin nerede duracağını sen seçersin, biz sunucu tarafında zorlarız. Söz aynı: çalışmayan saniyeye para yok, sert bütçe tavanı, saniye bazlı fatura.