Tüm projeler

KVKK Uyum Motoru

Uyum, belgeyle değil başarısız olabilen bir programla gösterilir.

  • TypeScript
  • Express
  • node:sqlite
  • Node crypto (AES)

Problem

KVKK/GDPR uyumlu olduğunu söyleyen sistemlerin çoğu bunu bir politika belgesiyle gösterir. Belge, kodun ne yaptığını değil, birinin ne yapmayı planladığını anlatır — ve ikisi zamanla ayrışır.

Kişisel veri işleyen bir İK sisteminde asıl soru şu: silme talebi geldiğinde veri gerçekten siliniyor mu, saklama süresi dolduğunda kayıt gerçekten düşüyor mu, ve yetkisiz bir rol maskesiz veriyi gerçekten göremiyor mu?

Çözüm

Uyum, çalıştırılabilir bir denetim olarak yazıldı. Alan bazlı şifreleme (AES, anahtar zinciri ile), rol bazlı erişim, PII maskeleme ve saklama işi ayrı ayrı test ediliyor; her erişim denetim kaydına yazılıyor.

Silme, kaydı boşaltmakla değil anahtarı imha etmekle yapılıyor: şifreli veri yerinde kalsa bile çözülemez hâle geliyor. Yedeklerden dönmüş bir kopya da böylece okunamaz kalıyor — kayıt silme yaklaşımının çözemediği durum tam olarak budur.

Sonuç

188 test. Uyum iddiası bir rapor dosyasına yazılıyor: koşu başarısız olursa sistem uyumlu olmadığını kendisi söylüyor.

Yığında bilinçli bir karar var: PostgreSQL yerine SQLite. Gerekçesi ADR-008'de — projenin amacı birinin klonlayıp uyum denetimini kendi makinesinde koşturması; git clone ile yeşil test koşusu arasına bir veritabanı sunucusu koymak buna karşı çalışıyor.

Anahtarlar bir anahtar zinciri (keyring) üzerinden yönetiliyor; ana anahtar uygulamaya dışarıdan veriliyor, kayıt başına anahtarlar onunla sarmalanıyor. Silme, kayıt başına anahtarı imha ediyor.

Test verisi tarafında bir kural var ve sebebi yaşanmış: bu dosyanın önceki bir sürümü yazarın gerçek cep numarasını taşıyordu — testi yazarken konmuş, sonra görünmez kalmıştı, çünkü sabit veri içindeki bir telefon numarası tam olarak öyle görünür. Yayın öncesi tarama yakaladı. Bugün tüm sabit veriler bilerek kullanılamaz: isim tarihî, kimlik numarası ardışık, telefon hiçbir operatörün vermediği 555 aralığında.

Kaynak kod

Yorumlar sayfanın dilinde gösteriliyor. Depodaki dosyalar hem İngilizce hem Türkçe yorum taşır.

Proje yapısı

README.md

103 satır · 9 KB

Yükleniyor…