Ders 10 / 17
Kişisel Verinin Korunması
Veri sahibi haklarının ve işleme ilkelerinin kalem olarak sayılması: 15 sistemin 3'ü envanterde olmadığı için 7 hak talebi türünün 6'sının eksik yanıtlanması ve ayda 121 talebin yüzde 28'inin gölge sistemlere takılması, bir talebin 30 ile 240 dakika arasında sürmesi ve aylık iş yükünün 381 kişi-saat ile 260 kişi-saatlik kapasiteyi aşması, envanteri tamamlamanın yükü 494,8 kişi-saate çıkarması, veri en azlığının 324,9'a indirmesi ve 7 işleme ilkesinin tamamının envanterin tamlığına bağlı olması.
İçindekiler
Önceki dersin dört veri türünden biri ötekilere benzemiyordu: kişisel veri on bir sistemde geçiyor, hiçbir daraltmayla ortadan kalkmıyor ve kaldırma denemelerinden sonra kalan on üç kontrolün dokuzunu tek başına taşıyordu. Farkın kaynağı yaygınlık değildir. Öteki türlerde yükümlülük veriyi tutan tarafa yazılır; kişisel veride yükümlülüğün bir bölümü verisi tutulan kişiye bir hak olarak verilir. Hak, kurumun takvimine göre değil, hak sahibinin istediği anda kullanılır ve kurumdan bir eylem ister.
Bu ders hakları ve işleme ilkelerini kalem olarak sayar. Hiçbir yasa, madde, kurum ya da ülke adı yazılmaz; ölçülen şey yükümlülüğün adı değil, bir talebin kurumda kaç sistemi dolaştığı ve kaç dakika tuttuğudur. Önceki derslerden gelen envanter burada belirleyici olur: bir talep ancak envanterdeki sistemlerde aranabilir.
- CE27. Kurgu kurumda kişisel veri taşıyan 15 sistem vardır; üçü envanterde kayıtlı değildir. Sistemler, kayıt sayıları ve süreler kurgudur.
- CE28. Her sistem bir ya da daha çok veri sınıfı tutar: kimlik, iletişim, sözleşme, işlem, konum, şikâyet, profil.
- CE29. Yedi hak talebi türü tanımlıdır; her tür belirli veri sınıflarını arar ve yalnız o sınıfları tutan sistemlere dokunur.
- CE30. Bir talebin süresi, dokunduğu envanterdeki sistemlerin arama sürelerinin toplamı ile sabit bir işlem süresidir. Envanterde olmayan sistem aranmaz; süreye de girmez.
- CE31. Envanterde olmayan bir sistemde ilgili kişinin kaydının bulunma olasılığı, o sistemin kayıt sayısının abone sayısına oranıdır. Bir talep bu sistemlerden herhangi birinde kayıt bırakmışsa eksik yanıtlanmıştır.
- CE32. Talep ekibinin kapasitesi ayda 260 kişi-saattir (kurgu).
// kisisel/talep.mjs — veri sahibi haklarinin kalem olarak sayilmasi. // MODELDIR: bolgesel olcum agi (kurgu); sistemler, kayit sayilari ve sureler kurgudur. export const satir = (s) => s.trim().split("\n").map((l) => l.trim().split("|")); export const gen = (B) => (...h) => h.map((v, j) => (j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))).join(""); export const ABONE = 420000; // kurgu abone sayisi; kapsama orani buna bolunur // sistem | envanterde mi | kayit | arama dakikasi | tuttugu veri siniflari export const SISTEM = satir(` abone-portali|evet|420000|4|kimlik iletisim sozlesme fatura-uygulamasi|evet|380000|6|kimlik sozlesme islem fatura-veritabani|evet|380000|8|kimlik sozlesme islem cagri-merkezi-kaydi|evet|95000|12|kimlik iletisim sikayet saha-ekip-uygulamasi|evet|22000|9|kimlik konum is-emri-servisi|evet|140000|7|konum sozlesme kimlik-saglayici|evet|31000|3|kimlik dizin-servisi|evet|31000|3|kimlik iletisim raporlama-ambari|evet|1200000|25|islem profil yedek-deposu|evet|2400000|60|kimlik iletisim sozlesme islem arsiv-deposu|evet|900000|40|sozlesme gunluk-toplama-hatti|evet|5400000|18|islem pazarlama-listesi|hayir|60000|10|iletisim profil saha-tablo-dosyalari|hayir|8000|35|konum sikayet eski-cagri-yedegi|hayir|75000|30|iletisim sikayet`) .map(([ad, env, kayit, dk, sinif]) => ({ ad, env: env === "evet", kayit: +kayit, dk: +dk, sinif: sinif.split(" "), kapsam: Math.min(1, +kayit / ABONE) })); // hak | aranan veri siniflari | kalem basina ek islem dakikasi | aylik talep (kurgu) export const HAK = satir(` H1 kaydin kopyasi|kimlik iletisim sozlesme islem konum sikayet profil|30|40 H2 duzeltme|kimlik iletisim|20|25 H3 silme|kimlik iletisim sozlesme islem konum sikayet profil|45|30 H4 islemeyi kisitlama|islem profil|25|6 H5 itiraza konu isleme|iletisim profil|20|12 H6 tasinabilirlik|sozlesme islem|40|5 H7 otomatik karara itiraz|profil|30|3`) .map(([ad, s, ek, adet]) => ({ ad, kod: ad.split(" ")[0], sinif: s.split(" "), ek: +ek, adet: +adet })); export const dokunan = (h, kume = SISTEM) => kume.filter((s) => s.sinif.some((x) => h.sinif.includes(x))); export const sure = (h, kume = SISTEM) => h.ek + dokunan(h, kume).filter((s) => s.env).reduce((a, s) => a + s.dk, 0); // Envanterde olmayan bir sistemde o veri sahibinin kaydi bulunma olasiligi kapsam oranidir. export const eksikOran = (h, kume = SISTEM) => 1 - dokunan(h, kume) .filter((s) => !s.env).reduce((a, s) => a * (1 - s.kapsam), 1); if (import.meta.url === `file://${process.argv[1]}`) { const disi = SISTEM.filter((s) => !s.env); console.log(`model: ${SISTEM.length} sistem (${disi.length} tanesi envanterde degil), ` + `${HAK.length} hak talebi turu, ${HAK.reduce((a, h) => a + h.adet, 0)} talep/ay (kurgu)`); const y = gen([25, 9, 10, 10, 14, 11, 12]); console.log("\n" + y("hak talebi turu", "aranan", "atlanan", "sure dk", "aranan kayit", "talep/ay", "eksik %")); for (const h of HAK) { const d = dokunan(h), aranan = d.filter((s) => s.env); console.log(y(h.ad, aranan.length, d.length - aranan.length, sure(h), aranan.reduce((a, s) => a + s.kayit, 0).toLocaleString("tr-TR"), h.adet, (100 * eksikOran(h)).toFixed(1))); } const eksikTalep = HAK.reduce((a, h) => a + h.adet * eksikOran(h), 0); const toplam = HAK.reduce((a, h) => a + h.adet, 0); console.log(`\nenvanter disi sisteme dokunan hak turu ` + `${HAK.filter((h) => eksikOran(h) > 0).length}/${HAK.length}; ayda ` + `${eksikTalep.toFixed(1)}/${toplam} talep (%${(100 * eksikTalep / toplam).toFixed(1)}) ` + `eksik yanitlaniyor`); console.log(`envanter disi ${disi.length} sistem: ` + `${disi.map((s) => `${s.ad} (%${(100 * s.kapsam).toFixed(1)})`).join(", ")}`); const pahali = [...SISTEM].filter((s) => s.env).sort((a, b) => b.dk - a.dk).slice(0, 3); console.log(`arama suresini belirleyen uc sistem: ` + `${pahali.map((s) => `${s.ad} ${s.dk} dk`).join(", ")}; toplam is yuku ` + `${(HAK.reduce((a, h) => a + h.adet * sure(h), 0) / 60).toFixed(1)} kisi-saat/ay`); }
model: 15 sistem (3 tanesi envanterde degil), 7 hak talebi turu, 121 talep/ay (kurgu) hak talebi turu aranan atlanan sure dk aranan kayit talep/ay eksik % H1 kaydin kopyasi 12 3 225 11.399.000 40 30.9 H2 duzeltme 8 2 125 3.759.000 25 29.6 H3 silme 12 3 240 11.399.000 30 30.9 H4 islemeyi kisitlama 5 1 142 9.760.000 6 14.3 H5 itiraza konu isleme 5 2 124 4.146.000 12 29.6 H6 tasinabilirlik 8 0 208 11.220.000 5 0.0 H7 otomatik karara itiraz 1 1 55 1.200.000 3 14.3 envanter disi sisteme dokunan hak turu 6/7; ayda 33.9/121 talep (%28.0) eksik yanitlaniyor envanter disi 3 sistem: pazarlama-listesi (%14.3), saha-tablo-dosyalari (%1.9), eski-cagri-yedegi (%17.9) arama suresini belirleyen uc sistem: yedek-deposu 60 dk, arsiv-deposu 40 dk, raporlama-ambari 25 dk; toplam is yuku 381.2 kisi-saat/ay
Tablo hakları tek bir cümleden kalem kümesine çeviriyor. Yedi hak türü aynı işi yapmıyor: kaydın kopyası ve silme yedi veri sınıfının tamamını arar ve on iki sistem dolaşır, otomatik karara itiraz yalnız profil sınıfına bakar ve tek sistemde biter. Süre 55 dakika ile 240 dakika arasındadır — aynı kurum, aynı kişi için, hangi hakkın kullanıldığına göre dört kattan fazla değişen bir iş yapar. Süreyi belirleyen de talebin kendisi değil, envanterin biçimidir: yedek deposu tek başına 60 dakika tutuyor ve dört hak türünde birden aranıyor.
İkinci sütun dersin ana ölçüsüdür. Yedi hak türünün altısı envanterde olmayan bir sisteme dokunuyor ve o sistem hiç aranmıyor. Aranmayan sistem süreye girmez; bu yüzden eksik yanıt, yanıt süresinde hiçbir belirti vermez. Talep zamanında kapatılır, sahibine “kaydınız şu üç sistemde bulundu” denir ve gölge sistemdeki kayıt hiç anılmaz. Ayda 121 talebin 33,9’u — yüzde 28’i — bu durumdadır.
Bu, önceki üç dersin ölçtüğü şeylerden farklı bir kusurdur. Kanıtsız gereksinim denetimde görünür, kapsam dışı kalem uygulanabilirlik bildiriminde yazılır — ikisi de bir yerde kayıtlıdır. Gölge sistemin ürettiği eksiklik hiçbir yerde kayıtlı değildir: ne talep kaydında, ne süre ölçümünde, ne de kanıt dosyasında bir iz bırakır. Ölçülebilmesinin tek yolu, envanterin dışında ne olduğunun ayrıca aranmasıdır; envanterin kendisiyle bulunamaz.
Oran hak türüne göre değişiyor ve nedeni gölge sistemlerin kapsama oranıdır: eski çağrı yedeği abonelerin yüzde 17,9’unu, pazarlama listesi yüzde 14,3’ünü, saha tablo dosyaları yüzde 1,9’unu içeriyor. İletişim sınıfına dokunan haklarda iki gölge sistem birden devrededir ve eksik yanıt oranı yüzde 29,6’ya çıkıyor. Taşınabilirlik ise tek temiz haktır: sözleşme ve işlem sınıfları hiçbir gölge sistemde tutulmuyor.
İki Seçenek, Aynı Kapasite
Eksik yanıt oranını düşürmenin iki yolu vardır ve ikisi zıt yönde çalışır: envanteri tamamlamak (gölge sistemleri kayda geçirip aramaya dâhil etmek) ya da veriyi azaltmak (bir sınıfı hiç tutmamak, süresi dolan deposu boşaltmak).
// kisisel/senaryo.mjs — envanteri tamamlamanin ve veriyi azaltmanin talep yukune etkisi. import { SISTEM, HAK, satir, gen, sure, eksikOran } from "./talep.mjs"; const KAPASITE = 260; // kisi-saat/ay (iki kisi, kurgu) const isYuku = (k) => HAK.reduce((a, h) => a + h.adet * sure(h, k), 0) / 60; const eksik = (k) => HAK.reduce((a, h) => a + h.adet * eksikOran(h, k), 0); // Senaryolar ayni sistem kumesi uzerinde tanimli donusumlerdir. const envanterTam = (k) => k.map((s) => ({ ...s, env: true })); const enAzlik = (k) => k.filter((s) => s.ad !== "arsiv-deposu") .map((s) => s.ad === "raporlama-ambari" ? { ...s, sinif: s.sinif.filter((x) => x !== "profil") } : s); const SENARYO = [["taban", (k) => k], ["envanter tamamlanir", envanterTam], ["veri en azligi", enAzlik], ["ikisi birden", (k) => enAzlik(envanterTam(k))]]; const y = gen([22, 9, 12, 13, 14, 12]); console.log(`aylik ${HAK.reduce((a, h) => a + h.adet, 0)} talep, kapasite ` + `${KAPASITE} kisi-saat/ay (kurgu)`); console.log("\n" + y("senaryo", "sistem", "eksik/ay", "eksik %", "kisi-saat/ay", "kapasite %")); for (const [ad, don] of SENARYO) { const k = don(SISTEM), y2 = isYuku(k), e = eksik(k); const toplam = HAK.reduce((a, h) => a + h.adet, 0); console.log(y(ad, k.length, e.toFixed(1), (100 * e / toplam).toFixed(1), y2.toFixed(1), (100 * y2 / KAPASITE).toFixed(0))); } // Isleme ilkeleri: her ilke bir kanit kalemine ve bir veri sinifi kumesine baglidir. // ilke | kapsadigi veri siniflari | donemde uretilen kanit kalemi const HEPSI = "kimlik iletisim sozlesme islem konum sikayet profil"; const ILKE = satir(` hukuka uygun dayanak|iletisim profil|120 amac sinirlamasi|islem profil|4 veri en azligi|${HEPSI}|4 dogruluk|kimlik iletisim|12 saklama siniri|sozlesme islem sikayet|365 butunluk ve gizlilik|${HEPSI}|365 hesap verebilirlik|${HEPSI}|4`) .map(([ad, s, kalem]) => ({ ad, sinif: s.split(" "), kalem: +kalem })); const z = gen([22, 13, 14, 22, 16]); console.log("\n" + z("isleme ilkesi", "veri sinifi", "kanit kalemi", "envanter disi sistem", "dogrulanabilir")); for (const i of ILKE) { const disi = SISTEM.filter((s) => !s.env && s.sinif.some((x) => i.sinif.includes(x))); console.log(z(i.ad, i.sinif.length, i.kalem, disi.length, disi.length ? "hayir" : "evet")); } const bagli = ILKE.filter((i) => SISTEM.some((s) => !s.env && s.sinif.some((x) => i.sinif.includes(x)))); console.log(`\n${ILKE.length} isleme ilkesinin ${bagli.length} tanesi envanterin ` + `tamligina bagli; envanter tamamlandiginda ${ILKE.length} ilkenin tamami dogrulanabilir ` + `hale geliyor ve is yuku ${(isYuku(envanterTam(SISTEM)) - isYuku(SISTEM)).toFixed(1)} ` + `kisi-saat/ay artiyor`); console.log(`ilkelerin donemde urettigi kanit kalemi ` + `${ILKE.reduce((a, i) => a + i.kalem, 0)}; talep karsilamanin yillik yuku ` + `${(isYuku(SISTEM) * 12).toFixed(0)} kisi-saat`);
aylik 121 talep, kapasite 260 kisi-saat/ay (kurgu) senaryo sistem eksik/ay eksik % kisi-saat/ay kapasite % taban 15 33.9 28.0 381.2 147 envanter tamamlanir 15 0.0 0.0 494.8 190 veri en azligi 14 33.9 28.0 324.9 125 ikisi birden 14 0.0 0.0 438.6 169 isleme ilkesi veri sinifi kanit kalemi envanter disi sistem dogrulanabilir hukuka uygun dayanak 2 120 2 hayir amac sinirlamasi 2 4 1 hayir veri en azligi 7 4 3 hayir dogruluk 2 12 2 hayir saklama siniri 3 365 2 hayir butunluk ve gizlilik 7 365 3 hayir hesap verebilirlik 7 4 3 hayir 7 isleme ilkesinin 7 tanesi envanterin tamligina bagli; envanter tamamlandiginda 7 ilkenin tamami dogrulanabilir hale geliyor ve is yuku 113.7 kisi-saat/ay artiyor ilkelerin donemde urettigi kanit kalemi 874; talep karsilamanin yillik yuku 4574 kisi-saat
Birinci tablo takası çıplak biçimde gösteriyor. Taban durumda ekip kapasitesinin yüzde 147’si kadar iş var ve talepler zaten yetişmiyor; üstelik yetişmeyen bu iş, taleplerin yüzde 28’ini eksik yanıtlayarak yapılıyor. Envanter tamamlandığında eksik yanıt sıfırlanıyor ama iş yükü 494,8 kişi-saate çıkıyor — kapasitenin yüzde 190’ı. Doğru yanıt vermek, yanlış yanıt vermekten yüzde 30 daha pahalıdır ve bu fark hiçbir yerde bir gider kalemi olarak görünmez.
İkinci satırla üçüncü satırı yan yana koymak dersin sonucudur. Veri en azlığı iş yükünü 324,9’a indiriyor ve kapasiteye yaklaştırıyor, ama eksik yanıt oranını hiç değiştirmiyor: kaldırılan kalemler zaten envanterdeydi, gölge sistemler yerinde duruyor. İki seçenek farklı sorunları çözüyor. Yalnız biri seçilirse ya doğru ama yetişmeyen bir süreç, ya hızlı ama eksik bir süreç çıkar; ikisi birden uygulandığında eksik yanıt sıfırlanıyor ve yük 438,6’ya iniyor — hâlâ kapasitenin üzerinde. Kapasiteyi büyütmeden çözülen bir durum yok, ve bu da bir karardır.
İkinci tablo aynı eksiği kanıt tarafında gösteriyor. Yedi işleme ilkesinin yedisi de envanterde olmayan en az bir sisteme dokunuyor ve hiçbiri doğrulanabilir durumda değil. Amaç sınırlaması tek bir gölge sisteme takılıyor, veri en azlığı ve hesap verebilirlik üçüne birden. Bu, ilkelerin uygulanmadığı anlamına gelmez; uygulandığının gösterilemeyeceği anlamına gelir. Üçüncü dersin ayrımı burada aynen geçerlidir: bir ilkenin kontrolü olabilir, kanıt kalemi de üretiyor olabilir, ama kanıtın kapsamı envanterin kapsamıyla sınırlıdır. Bu yüzden kişisel veride ilk kalem bir kontrol değil, envanterin kendisidir; ondan önce sayılan her şey eksik bir kümenin üzerinde sayılmıştır.
Özet
- Veri sahibi hakları yedi ayrı talep türüdür ve aynı işi yapmazlar: kaydın kopyası ve silme on iki sistem dolaşıp 225–240 dakika tutarken otomatik karara itiraz tek sistemde 55 dakikada biter.
- Envanterde olmayan sistem aranmaz ve süreye girmez; bu yüzden eksik yanıt, yanıt süresinde hiçbir belirti vermez. Yedi hak türünün altısı bu durumdadır ve ayda 121 talebin yüzde 28’i eksik yanıtlanıyor.
- Eksik yanıt oranını gölge sistemlerin kapsama oranı belirliyor: iletişim sınıfına dokunan haklarda iki gölge sistem birden devrededir ve oran yüzde 29,6’ya çıkıyor; taşınabilirlik tek temiz haktır.
- Doğru yanıt vermek pahalıdır: envanter tamamlandığında eksik yanıt sıfırlanıyor ama aylık iş yükü 381,2’den 494,8 kişi-saate çıkıyor — 260 kişi-saatlik kapasitenin yüzde 190’ı.
- Envanteri tamamlamak ile veriyi azaltmak farklı sorunları çözüyor: en azlık yükü 324,9’a indiriyor ama eksik yanıt oranını hiç değiştirmiyor; ikisi birden uygulandığında bile yük kapasitenin üzerinde kalıyor.
- Yedi işleme ilkesinin yedisi de envanterde olmayan bir sisteme dokunduğu için doğrulanamıyor: ilkenin uygulanmaması değil, uygulandığının gösterilememesi söz konusudur.
Sonraki Adım
Son iki tablonun ortak yanı, ölçülen her şeyin bir belgeye dayanmasıdır: envanter bir belgedir, saklama süresi bir belgede yazar, talep akışının adımları bir belgede tanımlıdır. Bu derse kadar belgeler tek bir kütle gibi ele alındı — oysa aralarında denetim açısından keskin bir fark vardır. Bir belge “kişisel veriyi koruruz” der ve hiçbir şey kanıtlamaz; bir başkası “saklama süresi 1.095 gündür” der ve ölçülebilir bir eşik verir; üçüncüsü adım adım bir yordam tanımlar ve her koşumunda bir kayıt üretir.
Sonraki ders bu üç düzeyi — politika, standart ve yordam — kanıt üretimi ekseninde ayırır: hangi belge düzeyi denetimde kanıt sayılır, hangisi yalnız niyet bildirir ve bir gereksinimin karşılandığını göstermek için zincirin kaç halkasının tam olması gerekir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.