Veri Bölgesi ve Tenant İzolasyonu
Veri %100 Türkiye sınırlarında
PratikYedek tüm altyapısı Türkiye'de:
- App sunucuları — İstanbul VDS (sahip: PratikYedek, kontrol bizde)
- Object storage — Aynı VDS LUKS dm-crypt şifreli diskler
- Database (Postgres) — Aynı VDS, WAL+PITR aktif
- Backup replikasyonu — Faz 4 sonrası coğrafi (Ankara/İzmir; TR içi)
- CDN edge — Cloudflare TR PoP'ları (kullanıcı assets'i)
KVKK § 9 yurt dışı transfer
PratikYedek hiçbir koşulda veriyi Türkiye dışına çıkarmaz. Yurt dışı transfer için açık rıza veya KVK Kurulu izni gerekirdi — bunu hiç gündeme getirmiyoruz çünkü teknik olarak da imkansız (altyapı yurt içi).
İstisna: Kullanıcı BYOS (Google Drive/OneDrive) seçerse veri kendi Google/Microsoft hesabına gider — orası kendi sorumluluğunuzdadır (Google EU/US datacenter). KVKK § 9 sözleşme yükümlülüğü kullanıcıya geçer.
Tenant izolasyonu (RLS)
PratikYedek Postgres Row-Level Security kullanır:
- Her tablo
account_idkolonu içerir - Postgres RLS policy:
account_id = current_setting('app.account_id') - API her istek başında
SET app.account_id = Xyapar - Yanlış account_id'ye sorgu 0 satır döner (sızıntı imkansız)
Test: Vitest account_isolation.test.ts her PR'da CI'da çalışır; iki tenant arasında veri sızıntısı olmadığı doğrulanır.
Object storage izolasyonu
- Her account için ayrı klasör prefix (
/buckets/account-{uuid}/) - Path traversal saldırılarına karşı sanitize (
..,/,\reddedilir) - Pre-signed URL account-bound + 1 saat TTL
- Chunk content-addressed (SHA-256) → aynı chunk birden fazla account'ta deduplike değil (sızıntı riski)
Audit log izolasyonu
Her olay (login, restore, delete, share) audit_log tablosuna:
account_id(RLS)actor_user_id(kim yaptı)action_type(ENUM)target_resource(hangi snapshot/dosya)ip_address(KVKK § 12 delil)user_agent(browser/desktop/mobile)created_at(UTC)hash(rolling SHA-256 — prev_hash + row → integrity chain)
Hash chain sayesinde audit log tampering tespit edilir (admin bile geriye dönük değiştiremez).
Network izolasyonu
- App tier ↔ DB tier: internal subnet, public network'e açık değil
- Object storage: aynı subnet
- External access: sadece TLS 1.3 nginx reverse proxy üzerinden
- SSH: keypair-only, root login disabled, fail2ban aktif
Yedeklerin yedeği (DR — disaster recovery)
- WAL+PITR — Postgres write-ahead log → 5 dk RPO
- Daily snapshot — Object storage çapraz kopya (TR farklı şehir, Faz 4 sonrası)
- Restore drill — 14 günlük otomatik test (rastgele snapshot restore + integrity check)
IP whitelist (Kurumsal paket)
Kurumsal paket kullanıcıları için:
- Hesap düzeyinde IP CIDR whitelist tanımlanır
- Whitelist dışı IP'den login: 403 Forbidden + audit log
- Mobile uygulama için geofence opsiyonu (Türkiye sınırı)
Sıkça sorulanlar
Cloudflare CDN US sunucudan mı geliyor? Hayır. PratikYedek Cloudflare TR PoP zorunlu yapılandırması var; tüm trafik İstanbul/Ankara üzerinden. Veri değil, sadece statik asset (logo, font, CSS) CDN'den; kişisel veri CDN'e hiç düşmez.
Veri başka bir KOBİ'nin verisi ile karışabilir mi? Hayır. RLS + content-addressed dedup + path izolasyonu üçü birden çalışır. CI test sızıntı olmadığını doğrular.
Şirketimi sattım, başka şirkete aktarabilir miyim? Evet. Hesap devri modülü mevcut (mali müşavir paketinde mukellef devri ile aynı altyapı). Yeni hesap sahibi master parolayı bilmediği sürece eski verilere erişemez — devir paketi içinde yeni master parola seçilir.
Hükümet talebi gelirse veri verir misiniz? Mahkeme kararı + KVKK § 28 (savunma) çerçevesinde sadece şifrelenmiş chunk'lar sunulabilir — içeriği biz de okuyamayız (zero-knowledge). Talep gerçekleşirse şeffaflık raporunda anonim sayım yayınlanır.

