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ı.

Bu hizmeti puanlayın