İçeriğe geç
academia.sh

Ders 11 / 11

Model Çıktısının Kullanımı

Model çıktısının iş öğesine dönüşmesi ölçülür: 120 tehdit 24 karşı önleme düşer, bunların yalnız 11'i sahip, kabul ölçütü ve sürüm hedefinin üçünü birden taşıyıp iş öğesine döner ve 73 tehdidi (%60,8) kapatır; kaybolan 13 kalem 47 tehdit ve 97 efor günü taşır, 4'ü yazılı olarak kabul edilir, 9'u sessiz artık risk olarak kalır ve tek başına 33 tehdit taşır.

İçindekiler

Önceki beş ders bir tehdit listesi ve bir öncelik sırası üretti: 23 sınır geçişi, 58 kalem, 108 sistematik tehdit, 12 zincir tehdidi ve kök maliyetini gerçekten değiştiren birkaç kapatma. Bütün bu sayılar modelin içinde duruyor.

Modelin içinde durdukları sürece hiçbir şey değişmez. Bir karşı önlem ancak birinin üzerine alındığı, bir kabul ölçütüne bağlandığı ve bir sürüme yazıldığı zaman koda dönüşür. Bu ders son ölçümü yapar: kaç tehdit kaç ayrı karşı önleme düşüyor, bunların kaçı gerçekten planlanıyor, kaçı hangi eksiklikten kayboluyor ve geriye kalan artık riskin kaç kalemi yazılı olarak kabul ediliyor.

Yüz Yirmi Tehdit, Yirmi Dört Karşı Önlem

Aşağıdaki liste bir modeldir ve gerçek bir kayıt değildir. Karşı önlemler yalnız kapsadıkları tehdit sayısı, efor günü ve üç alanın doluluğuyla anılır.

TD21: bir karşı önlem birden çok tehdidi birden kapatır; önceki iki dersin birleşim kümesi 120 tehditti ve bu sütunun toplamı onunla doğrulanır. TD22: bir karşı önlem iş öğesine ancak üç alanı birden doluysa döner — sahip, kabul ölçütü ve sürüm hedefi; biri bile eksikse kalem kaybolur. TD23: kaybolan kalem, taşıdığı artık riskin (residual risk) yazılı kabulü varsa kayıtlıdır, yoksa sessizdir.

// tehdit/onlem.mjs — model ciktisinin is ogesine cevrilmesi (model): kurgu olcum agi
// yaziliminin tehdit modelleme oturumundan cikan karsi onlem listesi. Gercek bir kayit
// degildir; hicbir saldiri adimi tasimaz.

// TD21: bir karsi onlem birden cok tehdidi birden kapatir; `tehdit` o sayidir. Onceki iki
// dersin birlesim kumesi 120 tehditti ve bu sutunun toplami onunla dogrulanir.
// TD22: bir karsi onlem is ogesine ancak uc alani birden doluysa doner: `sahip`, kabul
// `olcut`u ve `surum` hedefi. Biri bile eksikse kalem kaybolur.
// TD23: kaybolan kalem, artik riskin yazili `kabul`u varsa kayitlidir, yoksa sessizdir.
// `agac` sutunu, o onlemin saldiri agacinda kok maliyetini degistirip degistirmedigidir.
export const ONLEM = `
  sinir-gecisinde-girdi-dogrulama  17  8  E E E - H
  sinir-gecisinde-kaynak-kimligi   17 10  E E E - H
  depoya-yazmada-yetkilendirme      9  5  E E E - H
  gizli-sinifta-aktarim-korumasi    9  4  E E E - H
  disa-cikan-veride-suzme           6  6  E H E H H
  yetki-kararini-sunucuya-tasima    5  9  E E E - E
  rol-alanini-istemciden-almama     4  3  E E E - E
  oturum-belirtecini-gizleme        4  5  E E H E E
  sayac-kimligini-dogrulama         4 12  E H H E H
  toplama-ucunu-daraltma            4  6  E E H H H
  dogrulayici-ayarini-imzalama      3  7  H H H H H
  esik-degerini-veriye-baglama      3  4  E E E - H
  denetim-gunlugune-yazma-zorunlu   4  6  E E H E H
  gunlugu-degistirilemez-tutma      3  8  H H H H H
  yedek-ucunu-kapatma               2  2  E E E - H
  yonetim-agini-ayirma              4 11  H E H H H
  servis-kimligini-dondurme         3  7  E H H H H
  yetki-atamasini-onaya-baglama     2  5  E E E - H
  rapor-ucuna-kimlik-zorunlulugu    3  3  E E E - H
  abone-portalinda-hiz-siniri       2  2  E E E - E
  olcum-akisinda-butunluk-etiketi   4  9  H E H H H
  zincir-adiminda-yeniden-dogrulama 4 10  H H H H H
  saha-uygulamasinda-sir-tutmama    2  4  E E H E H
  kapasite-korumasi-toplama-ucunda  2  6  E H H H H`
  .trim().split("\n").map((r) => {
    const [ad, tehdit, efor, sahip, olcut, surum, kabul, agac] = r.trim().split(/\s+/);
    return { ad, tehdit: +tehdit, efor: +efor, sahip: sahip === "E", olcut: olcut === "E",
      surum: surum === "E", kabul: kabul === "E", agac: agac === "E" };
  });

export const ALAN = ["sahip", "olcut", "surum"];
export const isOgesi = (o) => ALAN.every((a) => o[a]);
export const TEHDIT = ONLEM.reduce((a, o) => a + o.tehdit, 0);
// tehdit/isogesi.mjs — kac karsi onlem gercekten planlaniyor, kaci kayboluyor, artik riskin
// kac kalemi yazili olarak kabul ediliyor.
import { ONLEM, ALAN, isOgesi, TEHDIT } from "./onlem.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const topla = (ler, f) => ler.reduce((a, o) => a + f(o), 0);
const donen = ONLEM.filter(isOgesi), kaybolan = ONLEM.filter((o) => !isOgesi(o));

console.log(`${TEHDIT} tehdit ${ONLEM.length} karsi onleme dusuyor (onlem basina ` +
  `${(TEHDIT / ONLEM.length).toFixed(2)} tehdit); is ogesine donen ${donen.length}, ` +
  `kaybolan ${kaybolan.length}`);

const A = [-10, 8, 8, 15, 13];
console.log("\n1. uc alanin doluluk denetimi");
yaz(A, "alan", "dolu", "eksik", "eksik tehdit", "eksik efor");
for (const a of ALAN) {
  const e = ONLEM.filter((o) => !o[a]);
  yaz(A, a, ONLEM.length - e.length, e.length, topla(e, (o) => o.tehdit),
    topla(e, (o) => o.efor));
}

const B = [-16, 8, 10, 11, 10, 11];
console.log("\n2. model ciktisi is ogesine donerken");
yaz(B, "kume", "onlem", "onlem %", "tehdit", "tehdit %", "efor gunu");
for (const [ad, ler] of [["is ogesine donen", donen], ["kaybolan", kaybolan],
  ["toplam", ONLEM]])
  yaz(B, ad, ler.length, ((ler.length / ONLEM.length) * 100).toFixed(1),
    topla(ler, (o) => o.tehdit), ((topla(ler, (o) => o.tehdit) / TEHDIT) * 100).toFixed(1),
    topla(ler, (o) => o.efor));

const C = [-22, 8, 10, 12];
console.log("\n3. kaybolan kalemler hangi alan eksikliginden kayboluyor");
yaz(C, "eksik alan bilesimi", "onlem", "tehdit", "efor gunu");
const bilesim = {};
for (const o of kaybolan) {
  const e = ALAN.filter((a) => !o[a]).join("+");
  (bilesim[e] ||= []).push(o);
}
for (const [e, ler] of Object.entries(bilesim).sort((x, y) => y[1].length - x[1].length))
  yaz(C, e, ler.length, topla(ler, (o) => o.tehdit), topla(ler, (o) => o.efor));

const D = [-22, 8, 10, 12, 15];
console.log("\n4. kaybolan kalemin artik risk karsiligi");
yaz(D, "kume", "onlem", "tehdit", "tehdit %", "tehdit/onlem");
for (const [ad, ler] of [["yazili kabul edilen", kaybolan.filter((o) => o.kabul)],
  ["sessiz artik risk", kaybolan.filter((o) => !o.kabul)]])
  yaz(D, ad, ler.length, topla(ler, (o) => o.tehdit),
    ((topla(ler, (o) => o.tehdit) / TEHDIT) * 100).toFixed(1),
    (topla(ler, (o) => o.tehdit) / ler.length).toFixed(2));

const agacli = ONLEM.filter((o) => o.agac);
console.log(`saldiri agacinda kok maliyetini degistiren ${agacli.length} onlemin ` +
  `${agacli.filter(isOgesi).length} tanesi is ogesine dondu, ` +
  `${agacli.filter((o) => !isOgesi(o)).length} tanesi kayboldu`);
const enBuyuk = [...kaybolan].sort((a, b) => b.tehdit - a.tehdit)[0];
console.log(`en cok tehdit tasiyan kaybolan kalem ${enBuyuk.ad} (${enBuyuk.tehdit} tehdit, ` +
  `${enBuyuk.efor} efor gunu); kaybolan ${kaybolan.length} kalemin ortalama eforu ` +
  `${(topla(kaybolan, (o) => o.efor) / kaybolan.length).toFixed(1)} gun, donen ` +
  `${donen.length} kalemin ${(topla(donen, (o) => o.efor) / donen.length).toFixed(1)} gun`);
120 tehdit 24 karsi onleme dusuyor (onlem basina 5.00 tehdit); is ogesine donen 11, kaybolan 13

1. uc alanin doluluk denetimi
alan          dolu   eksik   eksik tehdit   eksik efor
sahip           19       5             18           45
olcut           17       7             25           56
surum           12      12             41           91

2. model ciktisi is ogesine donerken
kume               onlem   onlem %     tehdit  tehdit %  efor gunu
is ogesine donen      11      45.8         73      60.8         55
kaybolan              13      54.2         47      39.2         97
toplam                24     100.0        120     100.0        152

3. kaybolan kalemler hangi alan eksikliginden kayboluyor
eksik alan bilesimi      onlem    tehdit   efor gunu
surum                        4        14          21
olcut+surum                  3         9          25
sahip+olcut+surum            3        10          25
sahip+surum                  2         8          20
olcut                        1         6           6

4. kaybolan kalemin artik risk karsiligi
kume                     onlem    tehdit    tehdit %   tehdit/onlem
yazili kabul edilen          4        14        11.7           3.50
sessiz artik risk            9        33        27.5           3.67
saldiri agacinda kok maliyetini degistiren 4 onlemin 3 tanesi is ogesine dondu, 1 tanesi kayboldu
en cok tehdit tasiyan kaybolan kalem disa-cikan-veride-suzme (6 tehdit, 6 efor gunu); kaybolan 13 kalemin ortalama eforu 7.5 gun, donen 11 kalemin 5.0 gun

Sayılar ölçüm sınıfındadır; girdileri TD21–TD23’tür.

Beşe Bir Birleşme

İlk sayı birleşme oranıdır. Yüz yirmi tehdit 24 karşı önleme düşer; karşı önlem başına 5,00 tehdit. Bu, tehdit sayısının tek başına bir iş yükü ölçüsü olmadığını gösterir: 120 tehdit kulağa iki aylık bir yığın gibi gelir, karşılığı olan iş kalemi ise yirmi dörttür.

Birleşme düzgün dağılmaz. İlk iki karşı önlem — sınır geçişinde girdi doğrulama ve kaynak kimliği — tek başlarına 34 tehdit kapatır, yani listenin %28,3’ünü. Bunun sebebi ikinci derste görülmüştü: kalemlerin %58,6’sı düşük güven düzeyinden yükseğe giden akışlardan geliyordu ve bu akışların hepsi aynı iki denetimi istiyordu. Karşılık verilen soru “kaç tehdit var” değil, “kaç ayrı karar var” sorusudur.

Sürüm Hedefi Olmayan Kalem

İkinci tablo dersin ana ölçümüdür. Yirmi dört karşı önlemin yalnız 11’i üç alanı birden taşır ve iş öğesine döner; 13’ü kaybolur. Kalem sayısı olarak dönüşüm oranı %45,8’dir.

Tehdit sayısıyla bakıldığında tablo daha iyi görünür: dönen 11 kalem 73 tehdit kapatır, yani %60,8’ini. Aradaki fark birleşme oranından gelir — dönen kalemler ortalama olarak daha çok tehdit taşıyanlardır, çünkü en kalabalık iki karşı önlem de dönenler arasındadır.

Birinci tablo hangi alanın darboğaz olduğunu doğrudan yazar. Sahip alanı 24 kalemin 19’unda doludur, kabul ölçütü 17’sinde, sürüm hedefi yalnız 12’sinde. Sürüm hedefi eksik olan 12 kalem 41 tehdit ve 91 efor günü taşır. Sahip bulmak kolaydır; ölçüt yazmak biraz daha zordur; kalemi bir sürüme sokmak en zorudur, çünkü orada karşısına başka işler çıkar.

Üçüncü tablo aynı sonuca kalem düzeyinde varır. Kaybolan 13 kalemin 4’ü yalnız sürüm hedefi eksik olduğu için kaybolur — sahibi vardır, ölçütü yazılmıştır, tek eksiği takvimdir. Bu dört kalem 14 tehdit taşır ve toplam 21 efor günüdür. Yalnız kabul ölçütü eksik olan tek bir kalem vardır. Üç alanı birden boş olan üç kalem ise oturumda hiç sahiplenilmemiş kalemlerdir.

Kaybolan Kalem Nereye Gidiyor

Son satır kaybın yönünü verir ve beklenenin tersini söyler. Kaybolan 13 kalemin ortalama eforu 7,5 gün, iş öğesine dönen 11 kalemin ortalama eforu 5,0 gündür. Yani pahalı kalemler daha sık kaybolur.

Bu, üç alanın hangi sırayla dolduğuyla açıklanır. Bir kalemin sürüm hedefi alması için birinin onu bir sprintin içine koyması gerekir; efor günü büyüdükçe bu karar zorlaşır ve kalem “sonraki sürüme” kayar. Kayma bir kez olduğunda kalem tabloda hiçbir yerde bir sıfır olarak görünmez — yalnızca hiçbir sürümde bulunmaz.

Ağaç ölçümüyle kesişim tek satırda görülür. Saldırı ağacında kök maliyetini gerçekten değiştiren 4 karşı önlemin 3’ü iş öğesine döndü, biri kayboldu. Bu iyi bir orandır, ama tesadüfidir: o dört kalemin eforları 9, 3, 5 ve 2 gündür, yani listenin ucuz ucundadır. Aynı kalemler pahalı olsaydı aynı süreç onları da eleyecekti. Sürecin seçtiği ölçüt etki değil, efordur.

Sessiz Artık Risk

Dördüncü tablo kursun son ayrımını yapar. Kaybolan 13 kalemin 4’ü yazılı olarak kabul edilmiştir: karşı önlem yapılmayacaktır, bunun taşıdığı artık risk bilinmekte ve kayda geçirilmektedir. Bu dört kalem 14 tehdit taşır, yani toplamın %11,7’sini.

Kalan 9 kalem sessiz artık risktir. Ne iş öğesine dönmüştür, ne de yapılmayacağı bir yere yazılmıştır. Taşıdıkları 33 tehdit, toplam kümenin %27,5’idir. Kalem başına taşınan tehdit sayısı iki kümede neredeyse aynıdır (3,50 ve 3,67); yani sessiz kalanlar daha küçük kalemler değildir, yalnız hakkında karar verilmemiş kalemlerdir.

Aradaki fark ölçüm açısından belirleyicidir. Yazılı kabul edilen artık risk bir karardır: bir kalem, bir sahip, bir gerekçe ve bir tarih taşır; sonraki oturumda yeniden bakılabilir. Sessiz artık risk bir karar değildir; kimsenin bilmediği bir eksikliktir ve bir sonraki tehdit modelleme oturumu onu sıfırdan yeniden üretmek zorunda kalır. Bir tehdit modelleme oturumunun çıktısı, iş öğesine dönen kalemler ile yazılı olarak reddedilen kalemlerin toplamıdır; geri kalan üretilmemiş sayılır.

Özet

  • 120 tehdit 24 karşı önleme düşer (önlem başına 5,00); en kalabalık iki karşı önlem tek başına 34 tehdit kapatır. İş yükünün ölçüsü tehdit sayısı değil ayrı karar sayısıdır.
  • Yirmi dört karşı önlemin yalnız 11’i sahip, kabul ölçütü ve sürüm hedefinin üçünü birden taşır; dönüşüm oranı kalem olarak %45,8, tehdit olarak %60,8’dir.
  • Darboğaz sürüm hedefidir: 12 kalemde eksiktir ve 41 tehdit ile 91 efor günü taşır. Kaybolan 13 kalemin dördü yalnız sürüm hedefi eksik olduğu için kaybolur.
  • Kaybolan kalemlerin ortalama eforu 7,5 gün, dönenlerin 5,0 gündür; süreç etkiye göre değil efora göre eler. Kök maliyetini değiştiren dört karşı önlemin üçü dönmüştür, ama bu onların ucuz olmasındandır.
  • Kaybolan 13 kalemin 4’ü yazılı olarak kabul edilir (14 tehdit), 9’u sessiz artık risktir ve toplam kümenin %27,5’ini taşır; kalem başına taşıdıkları tehdit dönenlerle aynı büyüklüktedir.

Kurs Kapanışı

Ders Kalem hangi aşamada doğuyor Hangi aşamada yakalanıyor Yakalamanın bedeli
DevSecOps ve DevOps Farkı 23 kalem, altı aşamada, en çok kod (7) tek kapıda 10, dağıtık denetimde 23; gecikme 1,94→0,13 aşama 200 uyarının 177’si yanlış pozitif
Sola Kaydırma ortak 18 kalem, gereksinimden dağıtıma geç akış 318 saat, erken akış 68 saat; kat 4,68 32,5 saat denetim yükü, net kazanç 217,5 saat
Güvenlik Gereksinimleri gereksinim aşaması, senaryolarla 28 gereksinim kodda 19 otomatik, dağıtımda 5 gözle, 4’ü hiç 300 denetimde 40 saat gözle sınama
Güvenlik Şampiyonları kod aşaması, haftada 35 inceleme merkezde 16, dört şampiyonla 35 2,8 kişi eşdeğeri; derin kalem 2’den 1’e
Risk Temelli Önceliklendirme 23 kalemlik yığın, 68 gün efor 22 günde doğuş sırası 6, efor sırası 13 kalem 5 kalem her ölçütte dışarıda, 110 saat
Tehdit Modellemenin Amacı 18 kalem, 10’u gereksinim ve tasarımda oturum 10 kalemi tasarımda, 8 kalem 1–3 aşama geç 40 geliştirici saati, kalem başına 4,0 saat
Veri Akış Diyagramları tasarım, 26 akışın 23’ü sınır geçiyor 58 kalem tasarımda; kaba çizimde yalnız 15 16 geçiş görünmez, 43 kalem doğmuyor
Tehdit Sınıflandırma Yöntemleri tasarım, 43 çizge öğesi 156 ham üretimden 108 anlamlı, tasarımda 666 dakika; 72’si geçersiz eleme
Risk Odaklı Modelleme tasarım, 12 zincir tehdidi yol üzerinde 51 tehdit; sistematiğin %63,9’u kaçıyor 218 dakika; hizmet engellemede 24 kalem dışarıda
Saldırı Ağaçları tasarım, 12 yaprak, kök 9 birim 10 yaprak kökü hiç değiştirmiyor, 2’si 1,33 ve 1,22 kat tam kapatma 16 önlem birimi, açgözlü sıra 28
Model Çıktısının Kullanımı tasarım, 120 tehdit, 24 karşı önlem 11 iş öğesi, 73 tehdit (%60,8) 13 kalem kayboldu, 9’u sessiz (33 tehdit)

Kursun kuralı on bir satırın tamamında aynıdır: güvenlik bir aşama değil, her aşamada farklı fiyatı olan bir karardır. Erken yakalamanın kazancı sayılabilir — 4,68 kat, 217,5 saat, 866 saat — ama aynı ölçüm her seferinde ikinci bir sayı üretti: tasarımda görülemeyecek bir kalem sınıfı vardır ve o sınıf küçük değildir. Sola kaydırmanın hiç dokunamadığı 7 kalem, tasarım oturumunun bulmadığı 8 kalem ve sistematik üretimin göremediği 12 zincir tehdidi aynı şeyi söyler. Bedeli yazılmayan denetim ölçülmemiş sayılır; kapsama sınırı yazılmayan yöntem de öyle.

Son ders bir eşiği işaretledi. Tasarımda hangi tehdidin doğduğu yazıldı, hangi karşı önlemin planlandığı sayıldı ve hangilerinin kaybolduğu ölçüldü. Ama planlanan 11 karşı önlemin koda dönüştüğü yer hiç görülmedi: bir “sınır geçişinde girdi doğrulama” kalemi kod tabanında kaç noktaya karşılık gelir, o noktaların kaçı gerçekten kapanır ve kaçı bu kararın tamamen dışında kalır. M25/K02 Güvenli Kodlama bu soruyla başlar — bir savunma kalıbının kendiliğinden kapattığı nokta sayısı ile hiç kimsenin bakmadığı noktaların sayısı.

İ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