KVKK Uyumlu Yazılım Geliştirme: Tasarımdan Başlayan Gizlilik
Müşteri adı, telefon numarası, e-posta adresi, IP adresi... Bugün geliştirilen yazılımların neredeyse tamamı kişisel veri işler. 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK), bu verileri işleyen herkese teknik ve idari tedbir alma yükümlülüğü getirir. Bu yükümlülüklerin bir kısmı hukuki süreçlerle, ama önemli bir kısmı doğrudan yazılımın nasıl tasarlandığıyla ilgilidir.
Bu yazı hukuki tavsiye değildir; hukuki değerlendirme mutlaka bir hukukçuyla yapılmalıdır. Burada, bir yazılım ekibinin baştan karar vermesi gereken teknik konuları anlatıyoruz.
Gizlilik sonradan eklenmez
En pahalı KVKK hatası, uyumun "proje bitince bakılacak" bir konu olarak görülmesidir. Yayındaki bir sistemde hangi verinin nerede tutulduğunu sonradan çıkarmak, yetki yapısını yeniden kurmak veya silme işlemini sonradan eklemek, baştan tasarlamaktan kat kat maliyetlidir. Bu yüzden özel yazılım geliştirme projelerimizde aşağıdaki konuları mimari aşamasında ele alıyoruz.
1. Veri envanteri: neyi, neden topluyoruz?
Her alan için üç soru sorun: Bu veri neden gerekli? Hangi hukuki sebebe dayanıyor? Ne kadar süre saklanacak? Cevabı olmayan alan toplanmamalıdır. Veri minimizasyonu, korunması gereken veriyi baştan azaltan en ucuz güvenlik önlemidir.
Teknik olarak bu, veri modelinde her kişisel veri alanının işaretlenmesi ve bir envanter dokümanında tutulması anlamına gelir. Böylece "bu kişinin hangi verileri sistemde?" sorusu birkaç dakikada cevaplanabilir.
2. Yetkilendirme: en az yetki ilkesi
Herkesin her kaydı görebildiği bir sistem, en iyi niyetli ekipte bile risktir. Rol bazlı yetkilendirme (kim hangi ekranı görebilir) ile birlikte kayıt bazlı yetkilendirme (kim hangi müşterinin verisini görebilir) tasarlanmalıdır. Kurumsal yazılım projelerinde bu yapı çoğu zaman şirketin organizasyon şemasıyla birlikte kurulur.
3. Erişim kaydı: kim, neye, ne zaman baktı?
Bir veri ihlali şüphesinde ilk sorulan soru budur. Kişisel veriye yapılan okuma ve değişikliklerin değiştirilemez bir kayıtta tutulması, hem ihlal incelemesi hem de iç denetim için gereklidir.
4. Maskeleme ve şifreleme
- Aktarımda şifreleme: tüm trafik HTTPS üzerinden
- Depolamada şifreleme: hassas alanlar (örneğin kimlik numarası, sağlık verisi) veritabanında şifreli
- Loglarda maskeleme: hata kayıtlarına e-posta, telefon veya token düşmemeli
- IP maskeleme: analiz için tam IP adresi gerekmez; son bölümü sıfırlamak çoğu zaman yeterlidir
5. Saklama süresi ve otomatik silme
"Ne kadar süre saklayacağız?" sorusunun cevabı sistemde çalışan bir mekanizma olmalıdır. Süresi dolan kayıtları anonimleştiren veya silen zamanlanmış bir iş, elle yapılan temizliklerden çok daha güvenilirdir.
6. İlgili kişi talepleri
KVKK m.11 kapsamında bir kişi verilerinin silinmesini veya kendisine verilmesini isteyebilir. Bir kişinin tüm verisini bulup dışa aktarabilen ve silebilen bir yönetim fonksiyonu, bu talepleri günler yerine dakikalar içinde karşılamanızı sağlar.
7. Açık rıza ve sürümleme
Pazarlama iletişimi gibi açık rızaya dayanan işlemlerde rızanın hangi metne, ne zaman verildiği saklanmalıdır. Aydınlatma metni değiştiğinde eski kayıtların hangi sürümü onayladığı bilinmelidir. Bu sitedeki formlar da bu şekilde çalışır: onay verilen aydınlatma metninin sürümü kayıtla birlikte saklanır.
8. Yurt dışına aktarım
Bulut hizmetleri, e-posta sağlayıcıları ve yapay zekâ API'leri veriyi yurt dışına taşıyabilir. Hangi verinin hangi sağlayıcıya gittiği mimari aşamada belirlenmeli, gerekiyorsa veri yurt içinde tutulacak şekilde tasarım yapılmalıdır.
Sık yapılan hatalar
- Test ortamında gerçek müşteri verisi kullanmak
- Hata loglarına kişisel veri yazmak
- Silme talebini veritabanında "pasif" işaretleyip veriyi tutmaya devam etmek
- Herkese yönetici yetkisi vermek
- Yedeklerin şifrelenmemesi ve kime açık olduğunun bilinmemesi
Sonuç
KVKK uyumu bir kontrol listesi değil, yazılımın mimarisine işlenen bir tasarım kararıdır. Baştan doğru kurulduğunda maliyeti düşüktür; sonradan eklenmeye çalışıldığında ise çoğu zaman yeniden geliştirme gerektirir. Mevcut sisteminizin bu açıdan değerlendirilmesi için yazılım destek kapsamında teknik inceleme yapabiliriz.