KVKK & GDPR Uyumu ve Veri Yaşam Döngüsü Mühendisliği
Başlangıç fiyatı: 350.000 ₺
(5 değerlendirme) 1111 görüntülenme
Uyumu doküman katmanından çıkarıp kodun içine yerleştiriyorum: saklama süresi bir prosedür metninde değil sınıfın üzerinde sabit duruyor ve her gün çalışan bir iş onu uyguluyor. Maskeleme kuralı asgari özet uzunluğuna kadar tanımlanıyor, silme talebi çalışan bir fonksiyona bağlanıyor, uyum metinleri tarihlenip denetleniyor.
HİZMET 5: KVKK & GDPR Uyumu ve Veri Yaşam Döngüsü Mühendisliği
Uyum çoğu yerde bir metin işi sanılır: aydınlatma metni yazılır, VERBİS kaydı yapılır, klasöre kaldırılır. Oysa denetimde sorulan soru metnin ne yazdığı değil, sistemin gerçekten ne yaptığıdır. Aydınlatma metni 90 gün saklandığını söylüyorsa, 91. günde o kaydın silinmiş olması gerekir — ve bunu bir prosedür değil, çalışan bir kod garanti etmelidir. Ben uyumu doküman katmanından çıkarıp kodun içine yerleştiriyorum; her vaadin karşılığında çalışan bir mekanizma oluyor.
Buradaki iş şablon doldurmak değil. Hangi verinin neden toplandığını, ne kadar süre tutulduğunu, kimin eriştiğini, nasıl maskelendiğini ve silme talebi geldiğinde neyin gerçekten silindiğini teker teker karşılığı olan bir yapıya bağlamaktır. Aşağıdaki sayıların hepsi kendi sistemlerimde çalışan koddan ölçüldü.
Veri Yaşam Döngüsü – Yüksek Seviye Akış
| Toplama Amaç sınırlaması, asgari veri, açık rıza |
İşleme Maskeleme, özetleme, erişim sınırı |
Saklama Süre kodda sabit, otomatik süpürme |
Talep Erişim, düzeltme, silme; 30 gün yanıt |
Kanıt Denetim izi, tarihli gözden geçirme |
Neden Bu Hizmet?
Uyum çalışmalarının çoğu bir denetim gününe hazırlanmak için yapılır, sistemin kendisi için değil. Sonuç tanıdıktır: dokümanlar hazırdır ama kod onları bilmez. Aradaki boşluk fark edildiğinde ya bir veri sızıntısı yaşanmıştır ya da denetçi soruyu sormuştur.
| Geleneksel Yaklaşım | Benim Yaklaşımım |
|---|---|
| Saklama süresi bir prosedür metninde yazar | Süre kodda sabittir ve her gün çalışan bir iş onu uygular |
| Kişisel veri "loglara yazılmasın" denerek korunur | Maskeleme kuralı özet uzunluğuna kadar tanımlanır ve denetlenir |
| Silme talebi elle, e-posta üzerinden yürütülür | Silme çalışan bir fonksiyondur; hangi veri sınıfını sildiği sayılabilir |
| Uyum metni bir kez yazılır ve unutulur | Gözden geçirme sıklığı politikaya bağlanır; süresi geçen kalem denetimde düşer |
| Anonimleştirme "kısaltarak" yapılır | Kısaltma çarpışma riskiyle birlikte hesaplanır; asgari özet uzunluğu şart koşulur |
| Uyum ile ürün ayrı ekiplerin işidir | Kural, kod incelemesinin parçasıdır; ihlal derleme aşamasında görünür |
Mimari Yaklaşımım
1) Saklama Süresini Koda Gömmek
Bir aydınlatma metninde "90 gün" yazmak kolaydır; 91. günde kaydın gerçekten gitmiş olmasını sağlamak ayrı bir iştir. Saklama süresi sınıfın üzerinde sabit olarak durur ve arka planda günde bir kez çalışan bir iş, süresi geçen kayıtları toplu silme ile temizler.
Toplu silme parça parça yapılır; tek bir dev DELETE tablo kilidi üretip canlı trafiği durdurabilir. İlk tarama uygulama açılışından bir süre sonra başlar, böylece dağıtım anındaki yoğunlukla çakışmaz.
2) Maskelemeyi Tahmine Bırakmamak
"Kimlik numarasını loglama" demek yetmez; loglanması gerektiğinde nasıl yazılacağı tanımlı olmalıdır. Maskeleme kuralı HMAC-SHA256 ve asgari 128 bit çıktı şart koşar.
Kısaltma neden yasak? 48 bitlik bir özet, milyonlarca kayıtlık bir kümede doğum günü paradoksu nedeniyle çarpışma üretir — yani iki farklı kişi aynı maskeye düşer. Bu, anonimleştirmeyi bozmakla kalmaz, yanlış kişinin kaydını birleştirir. Kural bu yüzden bir tercih değil, eşik olarak yazılır.
3) Silmeyi Çalışan Bir Fonksiyon Yapmak
Veri sahibi silme talebi gönderdiğinde cevabın "talebiniz alındı" olması yetmez; hangi veri sınıflarının gittiğinin sayılabilir olması gerekir. Silme tek bir fonksiyonda toplanır ve kullanıcıya ait bütün ağacı — profil, onay kaydı, dönemsel sıralamalar, gönderimler ve altlarındaki oylar, davetler, kimlik kaydı — sırayla temizler.
Bir istisna bilinçlidir: satın alma geçmişi silinmez, kişisel veri taşımayan bir iz kaydına dönüşür. Sebep mali mevzuattır; işlem kaydı tutulmak zorundadır. Doğru çözüm kaydı yok saymak değil, kimlik alanını temizleyip kaydı kişiden koparmaktır.
4) Uyum Metnini Tarihlemek
Uyum içeriği bir kez yazılıp bırakılırsa sessizce eskir. Gözden geçirme politikası her içerik kalemini bir sıklık sınıfına bağlar ve KVKK ile OWASP türevli dosyaları — dış otorite yayın yaptığı için — üç aylık döngüye sabitler. Eşleşmeyen kalem otomatik denetimde başarısız olur; yani "güncellemeyi unutmak" sessiz kalmaz.
Sağladığım Çözümler
| Çözüm Alanı | Ne Sağlıyorum? |
|---|---|
| Veri envanteri | Hangi tabloda hangi kişisel veri var, hangi amaçla toplandı, ne kadar tutuluyor |
| Saklama otomasyonu | Süresi kodda sabit, parça parça çalışan, canlıyı kilitlemeyen temizleme işleri |
| Log maskeleme | Kimlik, iletişim ve ödeme alanları için tanımlı maskeleme ve asgari özet uzunluğu |
| Veri sahibi hakları | Erişim, düzeltme ve silme akışlarının çalışan fonksiyon hâline getirilmesi |
| Aydınlatma ve VERBİS | Metinlerin sistemin gerçek davranışıyla eşitlenmesi, sürümlenmesi, tarihlenmesi |
| Çocuk verisi | Yaş kapısı, ebeveyn onayı ve reklam/satın alma akışlarının ayrı ele alınması |
Kendi Sistemlerimde Çalışan Sayılar
Aşağıdakiler örnek değil, kendi kodumdan ölçülmüş değerlerdir. Uyumu anlatmanın en dürüst yolu, kendi sisteminde nasıl uyguladığını göstermektir.
| Bileşen | Ölçü | Ne Anlama Geliyor? |
|---|---|---|
| Saklama süresi | 90 gün / 5 tablo | Süre bir prosedür metninde değil, sınıfın üzerinde sabit olarak durur |
| Temizleme işi | 5.000'lik parçalar / günde 1 | Tablo kilidi üretmeden siler; ilk tarama açılıştan 30 dakika sonra başlar |
| Maskeleme eşiği | asgari 128 bit özet | 48 bitlik kısaltma yasak; ~85 milyonluk ölçekte çarpışma üretiyor |
| KVKK kural seti | 8 kural / 30 gün yanıt | Başvuruya en geç 30 günde yanıt ve tek yönlü anonimleştirme zorunlu tutulur |
| Gözden geçirme politikası | 52 desen / 6 sıklık sınıfı | KVKK ve OWASP türevli dosyalar üç aylık döngüye sabitlenir; eşleşmeyen kalem denetimde düşer |
| Hesap silme kapsamı | 13 veri sınıfı | Bilinçli tek istisna satın alma geçmişi: kimliği temizlenip iz kaydına dönüşür |
| Ziyaretçi kimliği | 32 hex karakter | Gün bilgisi girdinin parçası olduğu için aynı adres ertesi gün başka kimlik üretir |
| Ebeveyn kapısı | 15 dakika önbellek | Satın alma girişinde dört şıklı doğrulama; yanlış cevapta yeni soru üretilir |
Kullandığım Teknolojiler
ASP.NET Core arka plan servisleri, HMAC-SHA256 ve tuzlanmış özetleme, Serilog üzerinde yapılandırılmış log ve maskeleme zenginleştiricileri, MSSQL üzerinde parça parça saklama süpürmesi, Firebase Admin SDK ile sunucu tarafı hesap silme, Google UMP onay akışı, kural dosyalarının otomatik tarih denetimi.
Bilerek Yapmadıklarım
Uyumda abartılı bir vaat, eksik bir vaatten daha risklidir. Aşağıdakiler bilinçli sınırlardır:
| Karar | Gerekçe |
|---|---|
| Satın alma geçmişi silinmez | Mali mevzuat işlem kaydı ister; kayıt kimlikten koparılır, yok sayılmaz |
| Kısaltılmış özet kullanılmaz | Çarpışma iki kişiyi aynı maskeye düşürür; anonimleştirmeyi bozar |
| Hukuki görüş verilmez | Bu bir mühendislik hizmetidir; mevzuat yorumu hukuk müşavirinin işidir |
| "Uyumlu" sertifikası vaat edilmez | KVKK bir sertifika rejimi değildir; teslim edilen şey kanıtlanabilir davranıştır |
Proje Çıktıları
| Teslimat | Açıklama |
|---|---|
| Kişisel veri envanteri | Tablo bazında veri sınıfı, toplama amacı, saklama süresi ve yasal dayanak |
| Saklama otomasyonu | Süreyi koda gömen, parça parça çalışan ve izlenebilir temizleme işleri |
| Maskeleme kural seti | Hangi alan nasıl maskelenir, asgari özet uzunluğu ne olmalı, nasıl denetlenir |
| Hak talebi akışları | Erişim, düzeltme ve silmenin uçtan uca çalışır hâle getirilmesi ve süre takibi |
| Tarihli gözden geçirme | Uyum içeriğinin sıklık sınıfına bağlanması ve süresi geçenin denetimde görünmesi |
Kime Uygun?
Aydınlatma metni ile sistemin davranışının örtüşüp örtüşmediğinden emin olmayan; saklama süresini kimsenin uygulamadığından şüphelenen; loglarında kişisel veri olup olmadığını bilmeyen; silme talebi geldiğinde elle tablo dolaşan; çocuk kullanıcısı olan bir ürün işleten ya da yaklaşan bir denetime kanıtla girmek isteyen ekipler için uygundur.
Neden Ben?
Uyumu bir mühendislik problemi olarak ele alıyorum. Yukarıdaki sayıların hepsi kendi sistemlerimde çalışan koddan ölçüldü — saklama süresi de, maskeleme eşiği de, silmenin kapsadığı veri sınıfı sayısı da. Bir vaadin arkasında çalışan bir mekanizma yoksa onu yazmıyorum.
Bu yaklaşımın bir yan etkisi var: kendi metinlerimi de denetliyorum. Sitemde ham istemci bilgisi tutulmaya başlandığında aydınlatma metni bunu söylemiyordu; fark edip metni sistemin gerçek davranışına eşitledim ve sürümü yükselttim. Uyum, sistem değiştiğinde metnin de değişmesidir.
Sonuç
Uyum bir klasör değil, sistemin davranışıdır. Metnin söylediği ile kodun yaptığı ayrıldığı anda elinizde uyum değil, uyum görüntüsü kalır. Amaç her vaadin karşılığında çalışan bir mekanizma bulunması ve denetim geldiğinde cevabın doküman değil, ölçü olması.