Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Yurt Dışına Aktarım ve Veri İhlali Hazırlığı: Cloud Region, LLM Sağlayıcıları, Standart Sözleşme ve 72 Saatlik Bildirim
Yurt dışına aktarım yalnız sunucunun yeri değildir; log, backup, e-posta, analytics ve LLM prompt'ları da aktarımdır ve 2024'ten beri yeterlilik kararı, standart sözleşme gibi uygun güvenceler ya da arızi hâllerden birine dayanmalıdır. Bookstore'da alt işleyen envanterini kodda tutuyor, standart sözleşmenin beş iş günlük bildirimini başlangıçta kontrol ediyor, erişim kaydıyla bir ihlalin kapsamını ve 72 saatlik bildirimin son anını ilk saatte çıkarıyoruz.
Aydınlatma, Açık Rıza ve Çerezler: Consent Kaydı, Çerez Banner'ı, Consent Mode ve Ticari İleti İzinleri (İYS)
Aydınlatma her veri işlemede yapılır, açık rıza ise yalnız rızaya dayanan işlemede ve ayrıca alınır; rıza da ispat edilebilir, sürümlü ve geri alınabilir olmalıdır. Bookstore'da append-only ConsentRecord'u, Kurum'un çerez rehberine göre eşit butonlu bir Angular banner'ını, varsayılanı denied olan Google Consent Mode'u, bunları doğrulayan Playwright testlerini ve ticari e-posta izinlerinin üç iş günü içinde İYS'ye bildirilmesini kuruyoruz.
Log, Telemetry ve Analytics'te Kişisel Veri: URL'ler, Exception Mesajları, IP Adresi, Session Replay ve Hata Raporlama Araçları
Kişisel veri log'a çoğu zaman bir LogInformation satırıyla değil; URL'deki e-postayla, log'a verilen bir record'la, exception mesajıyla, span tag'iyle ve metric label'ıyla girer. Bookstore'un checkout akışında bu sızıntıları gerçek çıktılarla gösteriyor, canary değerleri arayan bir testle kilitliyor, tarayıcı hata raporlarını temizleyip IP adresini kısaltıyor ve telemetry'yi envantere ekliyoruz.
Saklama Süresi, Silme ve Anonimleştirme: "Hesabımı Sil", Soft Delete, Backup'lar, Cache'ler ve Periyodik İmha Job'ı
"Hesabımı sil" talebi tek bir DELETE değil, verinin her parçası için ayrı bir karardır: profil silinir, siparişler yasal süre boyunca kişiden koparılıp saklanır, süre dolunca anonimleşir. Bookstore'da foreign key tuzağını, soft delete'in neden yetmediğini, kopyaların silme yollarını, periyodik imha job'ını, imha kaydını ve backup'tan geri yüklemede silinen müşterinin geri gelmesini erasure ledger ile çözmeyi gerçek çıktılarla gösteriyoruz.
Kişisel Veriyi Korumak: Always Encrypted, Uygulama Seviyesinde Şifreleme, Pseudonymization, Maskeleme ve Test Verisi
Hassas bir kişisel veri alanını korumanın yolu, tehdide göre katman seçmektir: TDE diski, Always Encrypted DBA'yı, uygulama seviyesinde AES-GCM backup ve replica'yı korur, maskeleme ise yalnız ekranı. Bookstore'da fatura kimlik numarasını purpose'a bağlı AES-GCM ile şifreliyor, HMAC blind index ile arıyor, destek ekibine maskeli gösteriyor ve test ortamını Bogus ile sahte kontrol haneli sentetik veriye taşıyoruz.
Kişisel Veri Envanteri ve Privacy by Design: Veriyi Sınıflandırmak, Kodda İşaretlemek ve Minimizasyon
Kişisel veri envanterinin teknik yarısı koddan üretilebilir: entity'leri Microsoft.Extensions.Compliance attribute'larıyla sınıflandırıp EF Core modelinden tablo, sütun, amaç, saklama süresi ve kopyalar listesini çıkarıyoruz. Sınıflandırılmamış alanı yakalayan test, SQL Server sensitivity label script'i, doğum tarihi yerine yaş onayı gibi minimizasyon kararları, PCI DSS ve LINDDUN ile Bookstore üzerinde gerçek çıktılarla.
Geliştirici için KVKK ve GDPR: Kişisel Veri, Özel Nitelikli Veri, Veri Sorumlusu/Veri İşleyen ve Kodu Etkileyen İlkeler
Kişisel veri, başka bir kayıtla kişiye bağlanabilen her bilgidir; bu yüzden hash'lenmiş e-posta, IP adresi ve cihaz kimliği de kişisel veridir. 6698 sayılı Kanun ve GDPR'ın tanımlarını, veri sorumlusu ile veri işleyen ayrımını, ilgili kişi haklarının endpoint karşılıklarını, 7499 ile 2024'te değişenleri ve KVKK–GDPR farklarını Bookstore üzerinde, çalıştırılmış kod ve birincil kaynaklarla anlatıyoruz; hukuki tavsiye değildir.