İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat