Ders 06 / 09
Kontrollerin Mühendislik Karşılığı
Yirmi altı denetim maddesi bir uygulama ekibinin on sekiz pratiğiyle eşleştirilir: 25 bağın ardından 17 kontrolün karşılığı çıkar, 9 kontrolün hiçbir mühendislik karşılığı yoktur ve bunların beşi tek bir uyumluluk yapısında toplanır. Karşılığı olan kontrol ortalama 1,47 pratiğe düşer, 10 kontrol tek pratiğe dayanır, 2 pratik hiçbir kontrole düşmez ve 26 sorunun yalnız 11'i kayıttan sorgulanarak cevaplanır.
İçindekiler
Önceki konu olayın kendisini ölçtü: kayıt tasarlandı, uygulamaya özgü tespit senaryoları koşturuldu, müdahale adımlarının hangi kayda ihtiyaç duyduğu sayıldı ve dış bildirim akışı süreyle ölçüldü. Bütün bu pratiğin ortak bir açığı kaldı — yapıldığını kuruma dışarıdan bakan birine gösterecek kanıt, dönem sonunda elle toplanıyor. Bu konunun dört dersi o boşluğu ölçer.
İlk adım eşlemenin kendisidir. Yönetişim, Risk ve Uyumluluk kursunda kontrol ile gereksinim arasındaki matris koşturulmuş, kanıtsız kalan gereksinim ve birden çok gereksinimi karşılayan kontrol sayılmıştı; o ölçüm burada girdidir ve tekrarlanmaz. Buradaki matrisin uçları farklıdır: bir ucunda denetim maddesi, öteki ucunda bir uygulama ekibinin gerçekten koşan işi vardır. Sorulan şey de farklıdır — bir denetim maddesi ekibin hangi işine düşüyor, kaç işine düşüyor ve kaç madde hiçbir işine düşmüyor.
Kontrol Kümesi ve Pratik Kümesi
UY1. Kontrol kümesi 26 maddedir ve dört uyumluluk yapısından toplanmıştır: işlev tabanlı çerçeve, belgelendirilebilir yönetim sistemi standardı, denetim kontrol kümesi ve sektörel uyumluluk gereksinimi. Küme kurgudur; hiçbir yapının, düzenlemenin ya da kurumun adı geçmez, maddeler yalnız sordukları şeyle yazılır. UY2. Pratik kümesi 18 kalemdir ve kurgu bölgesel ölçüm ağının abone portalı ekibinin koşan işlerinden oluşur. UY3. Her pratiğin bir yeri vardır — hat, depo, koşum ya da elle — ve bir izi: makinece okunabilir kayıt ya da belge. UY4. Eşleme bir iddiadır: bir kontrolün bir pratiğe düşmesi o pratiğin kontrolü yürüttüğünü söyler, kanıt ürettiğini söylemez; kanıt üçüncü bölümde ayrılır. UY5. Matris yalnız ekibin kendi yürüttüğü işi görür; platformun ya da başka bir ekibin yaptığı iş burada görünmez ve bu, karşılığı olmayan kontrol sayısını olduğundan yüksek gösterir.
// uyum/kume.mjs — denetim kontrolleri ve ekip pratikleri MODELDIR: kurgu bolgesel olcum agi. // Kontroller dort uyumluluk yapisindan gelir, pratikler bir uygulama ekibinin isleridir. export const ayir = (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(""); // kod | uyumluluk yapisi | kontrolun sordugu sey export const KONTROL = ayir(` IC-01|islev-cerceve|bilesen envanteri guncel tutulur IC-02|islev-cerceve|erisim en az ayricalikla verilir IC-03|islev-cerceve|tasinan ve duran veri sifrelenir IC-04|islev-cerceve|guvenlik olaylari merkezi toplanir IC-05|islev-cerceve|anormal davranis uyari uretir IC-06|islev-cerceve|olay mudahale rolleri tanimlidir IC-07|islev-cerceve|kurtarma hedefi sinanir IC-08|islev-cerceve|tedarikci bileseni degerlendirilir YS-01|yonetim-sistemi|kapsam bildirimi guncellenir YS-02|yonetim-sistemi|uygulanabilirlik bildirimi gerekcelidir YS-03|yonetim-sistemi|ic denetim donemsel kosar YS-04|yonetim-sistemi|duzeltici eylem kapatilir YS-05|yonetim-sistemi|yonetim gozden gecirmesi kayitlidir YS-06|yonetim-sistemi|personel yetkinligi kayitlidir DK-01|denetim-kumesi|degisiklik onaydan gecer DK-02|denetim-kumesi|uretim erisimi ikinci gozle verilir DK-03|denetim-kumesi|yedegin geri yuklenmesi sinanir DK-04|denetim-kumesi|ayricalikli erisim gozden gecirilir DK-05|denetim-kumesi|kod degisikligi ikinci goz gorur DK-06|denetim-kumesi|acik tanimli sure icinde kapatilir DK-07|denetim-kumesi|sistem saatleri esitlenir SG-01|sektorel|odeme verisi ayri bolutte islenir SG-02|sektorel|kisisel veri kalemi siniflandirilir SG-03|sektorel|veri saklama suresi uygulanir SG-04|sektorel|veri sahibi talebi izlenebilir SG-05|sektorel|ucuncu tarafa aktarim kaydedilir `).map(([kod, yapi, metin]) => ({ kod, yapi, metin })); // kod | pratigin kostugu yer | biraktigi iz | pratigin adi export const PRATIK = Object.fromEntries(ayir(` P01|hat|makine|bagimlilik bilesen analizi P02|hat|makine|statik cozumleme P03|hat|makine|yapi ciktisi imzalama P04|hat|makine|koken bilgisi uretimi P05|hat|makine|imaj taramasi P06|depo|makine|birlestirme isteginde ikinci goz P07|depo|makine|dal koruma kurali P08|kosum|makine|sir deposundan kisa omurlu kimlik P09|kosum|makine|anahtar dondurme isi P10|kosum|makine|ag bolutleme kurali P11|kosum|makine|kabul denetleyicisi P12|kosum|makine|uygulama denetim kaydi P13|kosum|makine|uyari kurali kumesi P14|elle|belge|yedek geri yukleme tatbikati P15|elle|belge|erisim gozden gecirme toplantisi P16|elle|belge|olay mudahale tatbikati P17|elle|belge|veri siniflandirma calismasi P18|elle|belge|yonetim gozden gecirme toplantisi `).map(([kod, yer, iz, ad]) => [kod, { kod, yer, iz, ad }])); // kontrol | onu gercekten yuruten pratikler; bos hucre: muhendislik karsiligi yok export const ESLEM = Object.fromEntries(ayir(` IC-01|P01,P04 IC-02|P08,P15 IC-03| IC-04|P12 IC-05|P13 IC-06|P16 IC-07|P14 IC-08|P01,P05 YS-01| YS-02| YS-03| YS-04| YS-05|P18 YS-06| DK-01|P06,P07 DK-02|P08 DK-03|P14 DK-04|P15 DK-05|P06,P07 DK-06|P01,P02,P05 DK-07| SG-01|P10,P11 SG-02|P17 SG-03| SG-04|P12 SG-05| `).map(([k, p]) => [k, p ? p.split(",") : []])); export const YAPI = ["islev-cerceve", "yonetim-sistemi", "denetim-kumesi", "sektorel"]; if (import.meta.url === `file://${process.argv[1]}`) { const pratik = Object.values(PRATIK); const bag = Object.values(ESLEM).reduce((t, p) => t + p.length, 0); console.log(`model: ${KONTROL.length} kontrol, ${pratik.length} pratik, ${bag} bag`); const y = gen([20, 10]); console.log("\n" + y("uyumluluk yapisi", "kontrol")); for (const u of YAPI) console.log(y(u, KONTROL.filter((c) => c.yapi === u).length)); const z = gen([20, 10, 16]); console.log("\n" + z("pratigin yeri", "pratik", "biraktigi iz")); for (const yer of ["hat", "depo", "kosum", "elle"]) { const p = pratik.filter((x) => x.yer === yer); console.log(z(yer, p.length, p[0].iz)); } }
model: 26 kontrol, 18 pratik, 25 bag uyumluluk yapisi kontrol islev-cerceve 8 yonetim-sistemi 6 denetim-kumesi 7 sektorel 5 pratigin yeri pratik biraktigi iz hat 5 makine depo 2 makine kosum 6 makine elle 5 belge
Model iki listeden ve aralarındaki 25 bağdan oluşuyor. Kontrol tarafı dengeli dağılmış: en büyük yapı sekiz, en küçüğü beş madde getiriyor. Pratik tarafındaki dağılım ise dengeli değil ve asıl bilgi orada: on sekiz pratiğin on üçü hatta, depoda ya da koşumda çalışıyor ve makinece okunabilir bir iz bırakıyor; beşi bir toplantı ya da tatbikat olarak yürüyor ve geriye yalnız bir belge bırakıyor. Bu iki iz türü aynı matriste eşit görünür, denetimde eşit değildir.
Matrisi Koşturmak
Eşleme tablosundaki boş hücre bu dersin ölçü birimidir: bir kontrolün karşısında hiçbir pratik yoksa o madde ekibin hiçbir işine düşmüyor demektir. İkinci sayı bunun tersidir — bir madde kaç işe düşüyor.
Matris iki yönde okunabilir ve iki okuma iki ayrı soruya karşılık gelir. Kontrolden pratiğe bakıldığında sorulan şey kapsamadır: madde yürüyor mu, yürüyorsa kaç işle. Pratikten kontrole bakıldığında sorulan şey kaldıraçtır: bu iş kaç maddeye birden yetiyor. İki okuma aynı 25 bağ üzerinde koşar ve farklı kalemleri öne çıkarır; bu yüzden ikisi de yazılır. Üçüncü bir okuma da vardır ve çoğunlukla atlanır: hiçbir kontrole düşmeyen pratik. O sütun kontrol kümesinin görmediği işi sayar.
// uyum/matris.mjs — kontrol-pratik matrisi kosturulur, karsiligi olmayan kontrol sayilir. import { KONTROL, PRATIK, ESLEM, YAPI, gen } from "./kume.mjs"; const y = gen([18, 9, 15, 15, 16]); console.log(y("uyumluluk yapisi", "kontrol", "karsiligi var", "karsiligi yok", "pratik/kontrol")); const oran = (k) => { const v = k.filter((c) => ESLEM[c.kod].length > 0); const b = v.reduce((t, c) => t + ESLEM[c.kod].length, 0); return [v.length, k.length - v.length, v.length ? (b / v.length).toFixed(2) : "-"]; }; for (const u of YAPI) { const k = KONTROL.filter((c) => c.yapi === u); console.log(y(u, k.length, ...oran(k))); } console.log(y("TOPLAM", KONTROL.length, ...oran(KONTROL))); const yok = KONTROL.filter((c) => ESLEM[c.kod].length === 0); console.log(`\nmuhendislik karsiligi olmayan ${yok.length} kontrol:`); for (const c of yok) console.log(` ${c.kod} ${c.metin}`); const kacKontrol = (p) => Object.values(ESLEM).filter((l) => l.includes(p)).length; const sirali = Object.values(PRATIK).map((p) => ({ ...p, n: kacKontrol(p.kod) })) .sort((a, b) => b.n - a.n); const tek = KONTROL.filter((c) => ESLEM[c.kod].length === 1).length; const enCok = KONTROL.filter((c) => ESLEM[c.kod].length > 2).map((c) => c.kod); console.log(`\nbirden cok kontrole dusen pratik ${sirali.filter((p) => p.n > 1).length}: ` + sirali.filter((p) => p.n > 1).map((p) => `${p.kod} (${p.n})`).join(", ")); console.log(`tek pratige dayanan kontrol ${tek}; ikiden cok pratige dusen ${enCok.join(", ")}`); console.log(`hicbir kontrole dusmeyen pratik ${sirali.filter((p) => p.n === 0).length}: ` + sirali.filter((p) => p.n === 0).map((p) => `${p.kod} ${p.ad}`).join(", "));
uyumluluk yapisi kontrol karsiligi var karsiligi yok pratik/kontrol islev-cerceve 8 7 1 1.43 yonetim-sistemi 6 1 5 1.00 denetim-kumesi 7 6 1 1.67 sektorel 5 3 2 1.33 TOPLAM 26 17 9 1.47 muhendislik karsiligi olmayan 9 kontrol: IC-03 tasinan ve duran veri sifrelenir YS-01 kapsam bildirimi guncellenir YS-02 uygulanabilirlik bildirimi gerekcelidir YS-03 ic denetim donemsel kosar YS-04 duzeltici eylem kapatilir YS-06 personel yetkinligi kayitlidir DK-07 sistem saatleri esitlenir SG-03 veri saklama suresi uygulanir SG-05 ucuncu tarafa aktarim kaydedilir birden cok kontrole dusen pratik 8: P01 (3), P05 (2), P06 (2), P07 (2), P08 (2), P12 (2), P14 (2), P15 (2) tek pratige dayanan kontrol 10; ikiden cok pratige dusen DK-06 hicbir kontrole dusmeyen pratik 2: P03 yapi ciktisi imzalama, P09 anahtar dondurme isi
Yirmi altı kontrolün on yedisinin karşılığı vardır, dokuzunun yoktur. Dokuz sayısı tek başına bir kusur değil; kusur olup olmadığı nerede toplandığına bakılarak anlaşılır. Beşi tek bir uyumluluk yapısında, belgelendirilebilir yönetim sistemi standardında toplanmıştır — kapsam bildirimi, uygulanabilirlik bildirimi, iç denetim, düzeltici eylem ve personel yetkinliği. Bu maddelerin hiçbiri bir uygulama ekibinin işi değildir ve olmaması da bir eksiklik sayılmaz; karşılığı ekipte değil, kurumun yönetim katmanındadır. Matris bunu söylemez, yalnız boş hücre gösterir. Boş hücrenin okunması, kimin işi olduğunun ayrı yazılmasını gerektirir.
Kalan dördü bambaşka bir sınıftandır. IC-03, DK-07, SG-03 ve SG-05 doğrudan bu uygulamanın çalıştığı yere aittir: veri şifreleme, saat eşitleme, saklama süresi ve üçüncü tarafa aktarım. Dördü de ekibin sorumluluğundadır ve dördünün de karşılığında hiçbir pratik koşmuyor. DK-07 bu dördü içinde en sinsi olanıdır: sistem saatleri eşitlenmiyorsa önceki konunun ürettiği bütün kayıtlar birbiriyle sıralanamaz — yani kontrolün karşılığının yokluğu, karşılığı olan başka kontrollerin kanıtını da bozar.
Kontrol başına düşen pratik sayısı 1,47’dir ve on kontrol tek bir pratiğe dayanır. Tek pratiğe dayanan bir kontrol, o pratik durduğu anda karşılıksız kalır; matris bunu ancak yeniden koşturulduğunda gösterir. Ters yönde okunduğunda sekiz pratik birden çok kontrolü karşılıyor — bağımlılık bileşen analizi tek başına üç maddeye yetiyor. Son satır ise matrisin en az konuşulan kutusudur: iki pratik hiçbir kontrole düşmüyor. Yapı çıktısı imzalama ve anahtar döndürme işi ekipte koşuyor, kaynak harcıyor ve bu kontrol kümesinde karşılığı yok. Bu, pratiğin gereksiz olduğunu göstermez; kontrol kümesinin onu sormadığını gösterir — kontrol kümesi bir mühendislik önceliği listesi değildir.
Cevabı Ne Üretiyor
UY6. Bir kontrolün cevabı üç kaynaktan gelebilir: makinece okunabilir kayıttan sorgu ile, dönem sonunda toplanan belgeden elle derleme ile, ya da hiçbir kayda dayanmayan kişi beyanı ile. Kaynağın ikinci bir özelliği vardır: sorgu dönemin tamamını kapsar, belge yalnızca üretildiği günü kapsar.
// uyum/iz.mjs — pratigin biraktigi ize bakilir: kontrolun sorusu neyle cevaplaniyor. import { KONTROL, PRATIK, ESLEM, YAPI, gen } from "./kume.mjs"; // Uc obek: pratigi makine-okunur iz birakiyorsa "makine izli"; yalniz toplanti ya da // tatbikat belgesi birakiyorsa "yalniz belge"; hic pratigi yoksa "izsiz". const obek = (c) => { const p = ESLEM[c.kod].map((x) => PRATIK[x]); return !p.length ? "izsiz" : p.some((x) => x.iz === "makine") ? "makine izli" : "yalniz belge"; }; const OBEK = ["makine izli", "yalniz belge", "izsiz"]; const y = gen([18, 14, 14, 9]); console.log(y("uyumluluk yapisi", ...OBEK)); for (const u of YAPI) { const k = KONTROL.filter((c) => c.yapi === u); console.log(y(u, ...OBEK.map((o) => k.filter((c) => obek(c) === o).length))); } console.log(y("TOPLAM", ...OBEK.map((o) => KONTROL.filter((c) => obek(c) === o).length))); // Cevabin kapsami: makine iz donem boyunca yazilir, belge yalnizca uretildigi gune aittir. const KAPSAM = { "makine izli": "donem boyu", "yalniz belge": "tek gun", izsiz: "yok" }; const KAYNAK = { "makine izli": "sorgu", "yalniz belge": "elle derleme", izsiz: "kisi beyani" }; const z = gen([16, 10, 18, 16]); console.log("\n" + z("obek", "kontrol", "cevabin kapsami", "cevabi ureten")); for (const o of OBEK) { const k = KONTROL.filter((c) => obek(c) === o); console.log(z(o, k.length, KAPSAM[o], KAYNAK[o])); } const belge = KONTROL.filter((c) => obek(c) === "yalniz belge"); console.log(`\nyalniz belge obegi: ${belge.map((c) => c.kod).join(", ")}`); const makine = KONTROL.filter((c) => obek(c) === "makine izli").length; console.log(`26 denetim sorusunun ${makine}'i kayittan sorgulanarak, ` + `${belge.length}'si donem sonunda elle derlenerek cevaplaniyor; ` + `${KONTROL.length - makine - belge.length}'u hic cevaplanmiyor`);
uyumluluk yapisi makine izli yalniz belge izsiz islev-cerceve 5 2 1 yonetim-sistemi 0 1 5 denetim-kumesi 4 2 1 sektorel 2 1 2 TOPLAM 11 6 9 obek kontrol cevabin kapsami cevabi ureten makine izli 11 donem boyu sorgu yalniz belge 6 tek gun elle derleme izsiz 9 yok kisi beyani yalniz belge obegi: IC-06, IC-07, YS-05, DK-03, DK-04, SG-02 26 denetim sorusunun 11'i kayittan sorgulanarak, 6'si donem sonunda elle derlenerek cevaplaniyor; 9'u hic cevaplanmiyor
Matrisin doluluk oranı yüzde 65’ti; cevabın kaynağına bakıldığında sayı 11/26‘ya, yüzde 42’ye iner. Aradaki altı kontrol matriste dolu görünür, denetimde bir belgeyle karşılanır ve o belge tek bir günü anlatır. Yedek geri yükleme tatbikatı bir gün koşmuştur, erişim gözden geçirme toplantısı bir gün yapılmıştır, veri sınıflandırma çalışması bir kez bitirilmiştir. Kontrolün sorusu ise dönemin tamamı hakkındadır: ayrıcalıklı erişim dönem boyunca gözden geçirildi mi. Tek günlük bir belge bu soruyu tam olarak cevaplamaz; onu bir örnekleme çevirir.
Üç obek, üç ayrı iş türüne karşılık gelir. İzsiz dokuz kontrol için yapılacak iş pratik kurmaktır — dördü ekibin kendi alanında, beşi başka bir katmanda. Yalnız belgeli altı kontrol için yapılacak iş pratik kurmak değildir; pratik zaten koşuyor, ondan makinece okunabilir iz çıkarmaktır. Makine izli on bir kontrol için ise yapılacak iş yalnızca izi denetimin sorduğu biçimde derlemektir. Bu üç iş birbirinden çok farklı bedeller taşır ve bir uyumluluk çalışmasını “yüzde 65 hazır” diye özetleyen bir tablo üçünü de aynı hücreye yazar.
Özet
- Yirmi altı denetim maddesi ile bir uygulama ekibinin on sekiz pratiği arasında 25 bağ vardır; 17 kontrolün mühendislik karşılığı çıkar, 9’unun hiç çıkmaz.
- Karşılığı olmayan dokuzun beşi tek bir uyumluluk yapısında toplanır ve karşılığı ekipte değil kurumun yönetim katmanındadır; kalan dördü doğrudan ekibin alanındadır. Boş hücreyi okumak, kimin işi olduğunun ayrı yazılmasını gerektirir.
- Karşılığı olan kontrol ortalama 1,47 pratiğe düşer ve 10 kontrol tek bir pratiğe dayanır; sekiz pratik birden çok kontrolü karşılar, en kaldıraçlısı üç maddeye yeter.
- İki pratik hiçbir kontrole düşmez. Bu, pratiğin gereksiz olduğunu değil, kontrol kümesinin bir mühendislik önceliği listesi olmadığını gösterir.
- Cevabın kaynağına bakıldığında oran yüzde 65’ten yüzde 42’ye iner: 11 kontrol kayıttan sorguyla, 6’sı tek günü anlatan bir belgeyle cevaplanır, 9’u hiç cevaplanmaz.
Sonraki Adım
Matris koştu ve üç ayrı iş türü ayrıldı. Bunlardan ikisi bu dersin dışında kalıyor: izsiz kontroller için pratik kurmak bir mühendislik planı işidir, karşılığı başka katmanda olanlar ise ekibin listesinde bile değildir. Geriye ölçülebilir olan kalıyor — altı belgeli kontrol ve zaten makine izi bırakan on bir kontrol.
Sonraki ders bu on yedi kalemi kanıt üretimi ekseninde yeniden ele alır ve tek bir sayıyı izler: dönem sonunda elle toplanan kalem kaça iniyor. Kanıtın hatta üretilmesi elle derlemeyi bitirir mi, hangi kalem hiçbir koşulda otomatikleşmez, ve otomatik üretilen kanıt kaç kat hacim, kaç kişisel veri kalemi ve hangi saklama kısıtını beraberinde getirir?
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.