Ders 05 / 17
Üçüncü Taraf Riski
Üç tedarikçide sözleşmede yazan 16 kontrolün 3'ü ankette hiç sorulmuyor, 6'sı yanıtlanıp kanıtlanmıyor ve yalnız 7'si kanıtla doğrulanıyor: devredilmiş görünüp doğrulanamayan 9 kontrol 555,10 kurgu birim taşır, bu tedarikçi riskinin yüzde 25,4'üdür, beyan yerine kanıtla sıralanan 62 kalemlik program listesinde 51 kalemin sırası değişir ve ilk ondaki tedarikçi kalemi birden üçe çıkar.
İçindekiler
Önceki ders keşif kaynaklarını ölçtü ve hepsi aynı şeyi varsayıyordu: aranan varlık kurumun kendi ağında, kendi kimlik düzeninde ya da kendi faturasında bir iz bırakır. Tedarikçinin kendi sistemindeki bir sunucu bu izlerin hiçbirini bırakmaz. Ağ taraması oraya ulaşmaz, uç ajanı orada çalışmaz, yapılandırma deposu orayı tanımaz.
O varlıkların yerine kurumda duran şey iki kağıttır: bir sözleşme maddesi ve bir değerlendirme anketi. Bulut Temelleri kursunda kurulan paylaşılan sorumluluk ayrımı burada bir adım öteye gider — orada sorumluluğun kimde olduğu sorulmuştu, burada sorulan şey o sorumluluğun yerine getirildiğinin nasıl bilindiğidir. Bu ders üç tedarikçilik bir kümede onu ölçer.
Üç Küme, Üç Ayrı Sayı
Bir tedarikçi kontrolü üç ayrı kümede bulunabilir ve üçü aynı şey değildir. Sözleşmede yazan kontrol bir yükümlülüktür; taraflardan biri onu yapmayı kabul etmiştir. Ankette yanıtlanan kontrol bir beyandır; tedarikçi onu yaptığını söylemiştir. Kanıtla doğrulanan kontrol bir gözlemdir; kurum onun işlediğini gösteren bir çıktı görmüştür.
Üç kümenin iç içe olması beklenir: kanıtlanan kümesi anketin, anket kümesi sözleşmenin alt kümesidir. Aradaki iki fark ayrı ayrı sayılır, çünkü ayrı sorunlardır. Sözleşmede yazıp ankette hiç sorulmayan kontrol bir kapsam boşluğudur: taahhüt alınmış, hiç bakılmamıştır. Yanıtlanıp kanıtlanmayan kontrol bir kanıt boşluğudur: bakılmış, cevap alınmış, cevabın doğruluğu gösterilmemiştir.
- RY23. Yedi tehdit ve katsayıları önceki derslerle aynıdır; birim kurgu birimdir.
- RY24. Sekiz kontrol, düşürdükleri oran, dokundukları tehditler ve doğrulama bedelleri modeldir; gerçek bir sözleşme ya da denetim yoktur.
- RY25. Kurum varlıkları önceki derslerin on varlıklık kümesidir.
- RY26. Üç tedarikçi ve üç maske modeldir; kanıt kümesi anketin, anket kümesi sözleşmenin alt kümesi olarak yazılmıştır.
- RY27. Kontroller bağımsız uygulanır: bir kalemin kalan riski, o tehdide dokunan kontrollerin çarpımıyla düşer.
- RY28. Doğrulama riski düşürmez, ölçümü kesinleştirir; doğrulanan kontrol kanıt kümesine girer ve ölçülen kalan risk buna göre yeniden hesaplanır.
// risk/tedarikci.mjs — uc tedarikci, sekiz sozlesme kontrolu ve uc ayri kanit duzeyi. MODELDIR; // gercek bir sozlesme, gercek bir denetim ve gercek para birimi yok, birim "kurgu birim"dir. // RY23: tehdit satiri: ad | yillik taban siklik | maruziyet orani export const TEHDIT = ` kimlik-ele-gecirme 0.30 0.35 zararli-kod 0.50 0.25 yanlis-yapilandirma 0.80 0.15 ic-kotuye-kullanim 0.10 0.40 hizmet-kesintisi 0.40 0.20 fiziksel-erisim 0.06 0.50 tedarik-zinciri 0.08 0.45` .trim().split("\n").map((r) => { const [ad, s, m] = r.trim().split(/\s+/); return { ad, s: +s, m: +m }; }); // RY24: kontrol satiri: ad | dusurdugu oran | etkiledigi tehdit maskesi | // kanit isteme bedeli | yerinde dogrulama bedeli export const KONTROL = ` erisim-kaydi-tutma 0.10 1001100 6 22 cok-etmenli-dogrulama 0.35 1000000 4 18 yama-suresi-taahhudu 0.30 0110000 9 26 veri-sifreleme 0.25 1000010 7 24 alt-yuklenici-bildirimi 0.15 0000001 5 30 olay-bildirim-suresi 0.12 1111111 8 20 yedek-ve-kurtarma-testi 0.28 0000100 11 28 personel-guvenlik-taramasi 0.20 0001001 6 34` .trim().split("\n").map((r) => { const [ad, d, tm, kb, yb] = r.trim().split(/\s+/); return { ad, d: +d, tm, kb: +kb, yb: +yb }; }); // RY25: kurum varligi: ad | deger | maruziyet | tehdit maskesi export const VARLIK = ` saha-dizustu 900 1.6 1111011 sube-ucu 600 1.2 1111110 sayac-toplayici 750 1.4 0111110 islem-sunucusu 1800 0.6 1111101 cevre-agi 1200 1.8 0011100 kimlik-dizini 2400 1.0 1011100 bulut-hesabi 2000 1.5 1011100 abone-veri-tabani 3000 0.4 1011100 saha-uygulamasi 1400 1.1 1111001 tedarikci-baglantisi 1000 1.3 1001101` .trim().split("\n").map((r) => { const [ad, v, m, maske] = r.trim().split(/\s+/); return { ad, v: +v, m: +m, maske, tedarikci: false }; }); // RY26: tedarikci satiri: ad | deger | maruziyet | tehdit maskesi | sozlesmede yazan kontrol | // ankette yanitlanan kontrol | kanitla dogrulanan kontrol (KONTROL sirasinda sekiz hane) export const TEDARIKCI = ` sayac-bakim-firmasi 1400 1.5 1101101 11101100 11101000 10001000 bulut-barindirma 2600 1.3 1011101 11111110 11011110 11010010 saha-isgucu-firmasi 900 1.7 1101011 10100101 10100001 00100000` .trim().split("\n").map((r) => { const [ad, v, m, maske, soz, ank, kan] = r.trim().split(/\s+/); return { ad, v: +v, m: +m, maske, soz, ank, kan, tedarikci: true }; }); // RY27: bir kalemin kalan riski, o tehdide dokunan kontrollerin bagimsiz uygulanmasiyla duser. export const TUM = [...VARLIK, ...TEDARIKCI].flatMap((v) => TEHDIT .map((t, j) => ({ v, t, j })) .filter(({ j }) => v.maske[j] === "1") .map(({ t, j }) => ({ v, t, j, ham: +(t.s * v.m * v.v * t.m).toFixed(2) }))); // duzey: 'soz' beyan edilen, 'ank' ankette yanitlanan, 'kan' kanitla dogrulanan kontrol kumesi. export const kalan = (k, duzey) => { if (!k.v.tedarikci) return k.ham; const p = KONTROL.reduce((a, c, i) => (k.v[duzey][i] === "1" && c.tm[k.j] === "1" ? a * (1 - c.d) : a), 1); return +(k.ham * p).toFixed(2); }; export const sirala = (duzey) => TUM.map((k, i) => ({ k, i })) .sort((a, b) => kalan(b.k, duzey) - kalan(a.k, duzey) || a.i - b.i).map((x) => x.k); export const top = (L, duzey) => +L.reduce((a, k) => a + kalan(k, duzey), 0).toFixed(2); export const yer = (L, k) => L.indexOf(k) + 1;
Üç Kanıt Düzeyinin Sayımı
// risk/dogrula.mjs — sozlesmede yazan, ankette yanitlanan ve kanitla dogrulanan kontrol sayilir import { TUM, TEDARIKCI, KONTROL, kalan, sirala, top, yer } from "./tedarikci.mjs"; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("").trimEnd()); const say = (m) => [...m].filter((c) => c === "1").length; const TED = TUM.filter((k) => k.v.tedarikci); const S = { soz: sirala("soz"), ank: sirala("ank"), kan: sirala("kan") }; console.log(`${TUM.length} kalem; ${TED.length} tanesi ${TEDARIKCI.length} tedarikcide. ` + `Kontrol kumesi ${KONTROL.length} kalem, kurgu birim.`); const A = [-21, 7, 7, 7, 12, 12, 12]; console.log("\n1. tedarikci basina kontrol ve kalan risk"); y(A, "tedarikci", "sozles", "anket", "kanit", "beyanla", "anketle", "kanitla"); for (const v of TEDARIKCI) { const ks = TED.filter((k) => k.v === v); y(A, v.ad, say(v.soz), say(v.ank), say(v.kan), top(ks, "soz").toFixed(2), top(ks, "ank").toFixed(2), top(ks, "kan").toFixed(2)); } const t3 = (d) => top(TED, d); y(A, "toplam", TEDARIKCI.reduce((a, v) => a + say(v.soz), 0), TEDARIKCI.reduce((a, v) => a + say(v.ank), 0), TEDARIKCI.reduce((a, v) => a + say(v.kan), 0), t3("soz").toFixed(2), t3("ank").toFixed(2), t3("kan").toFixed(2)); const B = [-40, 8]; console.log("\n2. devredilen ama olculemeyen kalem"); const sozT = TEDARIKCI.reduce((a, v) => a + say(v.soz), 0); const ankT = TEDARIKCI.reduce((a, v) => a + say(v.ank), 0); const kanT = TEDARIKCI.reduce((a, v) => a + say(v.kan), 0); y(B, "sozlesmede yazan kontrol", sozT); y(B, "ankette hic sorulmayan", sozT - ankT); y(B, "yanitlanmis ama kanitsiz", ankT - kanT); y(B, "kanitla dogrulanan", kanT); y(B, "devredilmis gorunup dogrulanamayan", sozT - kanT); y(B, "beyan ile kanit arasindaki risk", (t3("kan") - t3("soz")).toFixed(2)); y(B, "kanitsizligin tasidigi pay %", (((t3("kan") - t3("soz")) / t3("kan")) * 100).toFixed(1)); const C = [-40, 8]; console.log("\n3. ayni program listesinde siralama"); const kayma = TUM.map((k) => Math.abs(yer(S.soz, k) - yer(S.kan, k))); y(C, "sirasi degisen kalem", kayma.filter((x) => x > 0).length); y(C, "en buyuk sira kaymasi", Math.max(...kayma)); y(C, "ilk onda tedarikci kalemi (beyan)", S.soz.slice(0, 10).filter((k) => k.v.tedarikci).length); y(C, "ilk onda tedarikci kalemi (kanit)", S.kan.slice(0, 10).filter((k) => k.v.tedarikci).length); y(C, "program toplami beyan / kanit", `${top(TUM, "soz").toFixed(2)} / ${top(TUM, "kan").toFixed(2)}`); const D = [-21, -20, 9, 9, 7, 7]; console.log("\n4. en cok yukselen bes kalem (beyandan kanita)"); for (const k of [...TUM].sort((a, b) => (yer(S.soz, b) - yer(S.kan, b)) - (yer(S.soz, a) - yer(S.kan, a))).slice(0, 5)) y(D, k.v.ad, k.t.ad, kalan(k, "soz").toFixed(2), kalan(k, "kan").toFixed(2), yer(S.soz, k), yer(S.kan, k)); const E = [-24, 8, 9, 10, 9]; console.log("\n5. dogrulamanin kapattigi belirsizlik (risk dusmez, olcum kesinlesir)"); y(E, "secenek", "bedel", "kontrol", "kapanan", "oran"); const kanitsiz = TEDARIKCI.flatMap((v) => KONTROL .map((c, i) => ({ v, c, i })).filter(({ v: t, i }) => t.soz[i] === "1" && t.kan[i] !== "1")); const ankSadece = kanitsiz.filter(({ v, i }) => v.ank[i] === "1"); // Grup dogrulanirsa o kontroller kanit kumesine girer; olculen kalan risk yeniden hesaplanir. const olcum = (grup) => { const eski = TEDARIKCI.map((v) => v.kan); TEDARIKCI.forEach((v) => { v.kan = [...v.kan].map((c, i) => (grup.some((g) => g.v === v && g.i === i) ? "1" : c)).join(""); }); const r = top(TED, "kan"); TEDARIKCI.forEach((v, n) => { v.kan = eski[n]; }); return r; }; const taban = t3("kan"); for (const [ad, grup, bedel] of [["anketi yenilemek", [], 12], ["kanit istemek", ankSadece, ankSadece.reduce((a, g) => a + g.c.kb, 0)], ["yerinde dogrulamak", kanitsiz, kanitsiz.reduce((a, g) => a + g.c.yb, 0)]]) { const kap = +(taban - olcum(grup)).toFixed(2); y(E, ad, bedel, grup.length, kap.toFixed(2), (kap / bedel).toFixed(3)); }
62 kalem; 15 tanesi 3 tedarikcide. Kontrol kumesi 8 kalem, kurgu birim. 1. tedarikci basina kontrol ve kalan risk tedarikci sozles anket kanit beyanla anketle kanitla sayac-bakim-firmasi 5 4 2 531.35 603.80 752.01 bulut-barindirma 7 6 4 739.17 846.25 979.89 saha-isgucu-firmasi 4 3 1 362.99 412.49 456.71 toplam 16 13 7 1633.51 1862.54 2188.61 2. devredilen ama olculemeyen kalem sozlesmede yazan kontrol 16 ankette hic sorulmayan 3 yanitlanmis ama kanitsiz 6 kanitla dogrulanan 7 devredilmis gorunup dogrulanamayan 9 beyan ile kanit arasindaki risk 555.10 kanitsizligin tasidigi pay % 25.4 3. ayni program listesinde siralama sirasi degisen kalem 51 en buyuk sira kaymasi 21 ilk onda tedarikci kalemi (beyan) 1 ilk onda tedarikci kalemi (kanit) 3 program toplami beyan / kanit 7402.12 / 7957.22 4. en cok yukselen bes kalem (beyandan kanita) sayac-bakim-firmasi kimlik-ele-gecirme 113.51 198.45 30 9 saha-isgucu-firmasi ic-kotuye-kullanim 38.78 61.20 58 46 sayac-bakim-firmasi zararli-kod 161.70 262.50 15 5 saha-isgucu-firmasi tedarik-zinciri 38.78 55.08 59 50 saha-isgucu-firmasi kimlik-ele-gecirme 127.23 160.65 25 18 5. dogrulamanin kapattigi belirsizlik (risk dusmez, olcum kesinlesir) secenek bedel kontrol kapanan oran anketi yenilemek 12 0 0.00 0.000 kanit istemek 38 6 326.07 8.581 yerinde dogrulamak 216 9 555.10 2.570
Sayılar ölçüm sınıfındadır; girdileri RY23–RY28’dir.
Üç Kümenin Arası
Birinci tablo üç sayıyı yan yana koyuyor: üç tedarikçide sözleşmede 16, ankette 13, kanıtta 7 kontrol vardır. Aradaki daralma tek biçimde değildir. Sayaç bakım firmasında beş kontrolden ikisi kanıtlanır, bulut barındırmada yediden dördü, saha işgücü firmasında dörtten biri. En çok kontrol taahhüt eden tedarikçi en çok kanıtı da verir, ama oran her üçünde de yarının altındadır.
İkinci tablo daralmayı ikiye ayırıyor. 3 kontrol ankette hiç sorulmuyor — sözleşmede yazılı, değerlendirme sorularının kapsamı dışında kalmış. 6 kontrol yanıtlanmış ama kanıtsız — sorulmuş, tedarikçi “evet” demiş, o “evet”i gösteren hiçbir çıktı istenmemiş. Toplamda devredilmiş görünüp doğrulanamayan 9 kontrol vardır ve bu, sözleşmede yazanların yarısından fazlasıdır.
Doğrulanamayanın Taşıdığı Sayı
Kontrol sayısı tek başına bir büyüklük vermez; ikinci tablonun son iki satırı onu birime çeviriyor. Bütün sözleşme kontrollerinin işlediği varsayılırsa tedarikçi kalemlerinin kalan riski 1.633,51 kurgu birimdir. Yalnız kanıtlananların işlediği kabul edilirse 2.188,61 birim. Aradaki 555,10 birim, tedarikçi riskinin yüzde 25,4’ü, doğrulanamayan dokuz kontrolün taşıdığı paydır.
Bu sayı bir kayıp değil, bir belirsizliktir ve iki yönde de açılabilir. Kontroller gerçekten işliyorsa gerçek risk 1.633,51 birime yakındır ve kurum kendi listesini gereğinden yüksek yazıyor demektir. İşlemiyorsa gerçek risk 2.188,61 birime yakındır ve kurum bir bölümünü devrettiğini sanarak taşımaktadır. Ölçüm iki durumu ayırt edemez, çünkü ikisini ayıracak veri hiç toplanmamıştır.
Anket sütunu da bu yüzden ayrı durur: 1.862,54 birim, ikisinin ortasında. Bir beyanı kanıt yerine saymak riski 326,07 birim düşürmez; yalnız tabloyu daha rahat okunur yapar.
Beyanla Sıralamak, Kanıtla Sıralamak
Üçüncü tablo bu kursun ana ölçüsüne dönüyor. Aynı 62 kalemlik program listesi beyanla sıralandığında ve kanıtla sıralandığında 51 kalemin yeri değişir, en büyük kayma 21 basamaktır. İlk onda tedarikçi kalemi beyanla 1, kanıtla 3 tanedir.
Dördüncü tablo hangi kalemlerin yükseldiğini gösteriyor. Sayaç bakım firmasındaki kimlik ele geçirme kalemi beyan sıralamasında otuzuncu, kanıt sıralamasında dokuzuncudur; sayısı 113,51’den 198,45 birime çıkar. Aynı firmadaki zararlı kod kalemi on beşincilikten beşinciliğe yükselir. İkisinin ortak yanı, düşüşü sağlayan kontrollerin ankette yanıtlanmış ama kanıtlanmamış olmasıdır.
Sonuç bu kursun kuralının tedarikçi tarafındaki karşılığıdır. Öncelik listesi kimin ne taahhüt ettiğine göre değil, neyin gösterildiğine göre kurulduğunda ilk on değişir — yani bütçenin gittiği yer değişir. Beyanla çalışan bir program tedarikçi kalemlerini listenin ortasına yazar ve bütçesini kendi uçlarına harcar; bu, sıralamanın yanlış kalemi öne aldığı üçüncü durumdur ve sebebi ne ölçek ne düzeydir, veri kaynağıdır.
Doğrulamanın Birim Bedeli
Beşinci tablo doğrulamayı kursun ölçü birimiyle sınıyor; burada ölçülen şey düşen risk değil, kapanan belirsizliktir. Anketi yenilemek 12 birime mal olur ve sıfır kontrol doğrular: aynı soruyu ikinci kez sormak yeni bir gözlem üretmez. Kanıt istemek 38 birime altı kontrolü kapatır ve 326,07 birimlik belirsizliği kaldırır; oranı 8,581. Yerinde doğrulama 216 birime dokuz kontrolü, yani belirsizliğin tamamını kapatır, ama oranı 2,570’e iner.
İki satır arasındaki fark yönetim kararının kendisidir. Kanıt istemek belirsizliğin yüzde 58,7’sini bedelin altıda biriyle kapatır; yerinde doğrulama kalan üç kontrol için 178 birim daha ister. Kalan üç kontrol tam olarak ankette hiç sorulmayanlardır ve onları kapatmanın tek yolu yerinde bakmaktır — çünkü tedarikçi o konuda hiçbir şey beyan etmemiştir, çürütülecek bir cevap bile yoktur.
Özet
- Bir tedarikçi kontrolü üç ayrı kümede bulunabilir: sözleşmede yazan bir yükümlülük, ankette yanıtlanan bir beyan, kanıtla doğrulanan bir gözlemdir. Üç tedarikçide sayılar 16, 13 ve 7’dir.
- Daralma iki ayrı boşluktan gelir: 3 kontrol ankette hiç sorulmaz (kapsam boşluğu), 6 kontrol yanıtlanıp kanıtlanmaz (kanıt boşluğu). Devredilmiş görünüp doğrulanamayan toplam 9 kontroldür.
- Doğrulanamayan dokuz kontrol 555,10 kurgu birim taşır, tedarikçi riskinin yüzde 25,4’ü. Bu bir kayıp değil belirsizliktir ve iki yönde de açılabilir; ölçüm ikisini ayırt edemez.
- Aynı 62 kalemlik liste beyanla ve kanıtla sıralandığında 51 kalemin yeri değişir, en büyük kayma 21 basamaktır ve ilk ondaki tedarikçi kalemi birden üçe çıkar.
- Bir kalem otuzuncu sıradan dokuzuncu sıraya yükselir; düşüşü sağlayan kontroller ankette yanıtlanmış ama kanıtlanmamıştır. Sıralamayı değiştiren şey ölçek ya da düzey değil, veri kaynağıdır.
- Anketi yenilemek 12 birime sıfır kontrol doğrular; kanıt istemek 38 birime altı kontrolü ve belirsizliğin yüzde 58,7’sini kapatır (oran 8,581); yerinde doğrulama 216 birime tamamını kapatır (oran 2,570).
Sonraki Adım
Beş ders boyunca tek bir liste kuruldu, iki ölçekle sıralandı, dört seçenekle yarıştırıldı, envanter dışı kalemlerle tamamlandı ve son olarak kanıt düzeyine göre yeniden dizildi. Elde sayılabilir bir öncelik listesi, birim çabaya düşen risk azalması ve her kararın bedeli var. Eksik olan tek şey, bütün bunları dışarıdan bakan birine anlatabilecek bir dildir.
Bu dersin kendisi bunu gösteriyor. Kurum üç tedarikçisinden kanıt istedi ve neyin kanıt sayılacağını kendi tanımladı: sekiz kontrol, üç maske, bir bedel listesi. Aynı soru kuruma da soruluyor — abone kimin? bir denetçi kimin? — ve kurumun elinde onlara verecek ortak bir sözlük yok. Kendi sıralamasının doğru olduğunu kanıtlamaya çalışan her kurum önce kendi kontrol adlarını, kendi olgunluk basamaklarını ve kendi kanıt biçimini uydurur; sonuç, hiçbir iki kurumun aynı şeyi söylemediği bir tablodur. Sonraki konu Çerçeveler ve Uyumluluk bu ortak dili ele alır: kontrol kümeleri nasıl yapılandırılır, bir gereksinim hangi kontrolle karşılanır ve o karşılamanın kanıtı kaç kalem üretmeyi gerektirir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.