İçeriğe geç
academia.sh

Ders 12 / 21

Yapılandırma Uyum Denetimi

Sapmanın otomatik tespiti: 22 kiralanmış kaynakta 6 kuralın koşturulması, 46 ateşleyen çiftin 40'ının işaretlenmesi, 38 gerçek uyumsuzluğun 32'sinin yakalanıp 6'sının kaçması, üç düzeltme kipinde açıkta kalan kaynağın 16'dan 6'ya inerken 8 meşru yapılandırmanın bozulması ve 6 meşru değişiklikten 5'inin durdurulması.

İçindekiler

Önceki ders kimin ne yaptığını kayda geçirdi: denetim günlüğü, geçmiş kipinde bir kayıttır ve sorusu “bu işlem oldu mu” sorusudur. Bu dersin sorusu şimdiki kiptedir — kaynağın şu anki yapılandırması kurala uyuyor mu? Kayıt, yanlış olanı gösterip göstermediği konusunda sessizdir; bir depoyu genel erişime açan işlem kayda düzgünce düşer ve kayıt o işlemin yanlış olduğunu söylemez.

Yapılandırma uyum denetimi (configuration compliance), kaynak kümesinin üzerinde bir kural kümesi koşturup uyumsuz olanı işaretlemektir. Yapılandırma sapması M22/K01’de, sapmayı kapatan uzlaştırıcı döngü M22/K05’te ölçüldü; ikisi de burada tekrarlanmaz. Ayrım şudur: orada istenen durumu yazan da, sapmayı kapatan da aynı taraftı. Burada kaynak kiralanmıştır, kural kümesini başkası yazar ve düzeltme, kiralanan katmana yazma yetkisi ister — düzeltmenin kendisi bir erişim kalemi hâline gelir.

Kural Kümesi ve Uyumsuz Kaynak

Örnek kursun kurgu bölgesel ölçüm ağıdır: beş ekip, üç ortam. BG25 — kaynak çizelgesi: yirmi iki kaynak; her satır bir kaynağın sahibi ekibi, ortamını ve altı yapılandırma alanını taşır. BG26 — kural kümesi: altı kural; her kural bir yüklem, düzeltmenin değiştireceği alan ve düzeltilmiş değerden oluşur. BG27 — istisna kayıtları: dört kayıt; üçü kaynak, biri ekip düzeyinde yazılmıştır. BG28 — gerçek uyumsuzluk etiketi: otuz sekiz kaynak-kural çifti elle uyumsuz etiketlenmiştir; ikisi kural kümesinde karşılığı olmayan bir türdedir. BG29 — değişiklik akışı: yirmi değişiklik, altısı meşru etiketli. BG30 — birim girdiler: elle düzeltme kalem başına 25 dakika, denetleyicinin tarama başına değerlendirme kotası 240 (kurgu birim).

Aşağıdaki dosya çizelgeleri, kuralları ve üç kipi kurar. Süreç içi bir modeldir; gerçek bulut kaynağı, denetleyici ya da düzeltme yoktur.

// uyum/denetim.mjs — kiralanan katmanda yapilandirma uyum denetimi. Surec ici model: bolgesel
// olcum agi (kurgu); gercek bulut kaynagi, denetleyici ya da duzeltme yoktur.

const satir = (s) => s.trim().split("\n").map((l) => l.trim().split("|"));
const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));

// Kaynak: ad|ekip|ortam|genel erisim|beklemede sifreleme|denetim gunlugu|yonetim portu genis|sahip etiketi|anahtar yasi (gun)
const KAYNAK = satir(`
  olcum-depo|olcum|uretim|0|1|1|0|1|120
  olcum-arsiv|olcum|uretim|0|0|1|0|1|900
  olcum-sinama|olcum|sinama|1|0|0|1|0|500
  akis-kuyruk|akis|uretim|0|1|1|0|1|200
  akis-depo|akis|uretim|1|1|0|0|1|410
  akis-gelistirme|akis|gelistirme|1|0|0|1|0|730
  katalog-depo|katalog|uretim|0|1|1|0|1|90
  katalog-kapi|katalog|uretim|1|1|1|0|1|150
  katalog-sinama|katalog|sinama|0|0|1|1|1|380
  kapi-genel|kapi|uretim|1|1|1|0|1|60
  kapi-yonetim|kapi|uretim|0|1|1|1|1|340
  kapi-gelistirme|kapi|gelistirme|1|1|0|1|0|620
  isletim-gunluk|isletim|uretim|0|1|1|0|1|280
  isletim-yedek|isletim|uretim|0|0|1|0|1|1100
  isletim-arac|isletim|sinama|0|1|0|1|1|450
  isletim-gelistirme|isletim|gelistirme|1|1|0|0|0|800
  olcum-kenar|olcum|uretim|1|1|1|0|1|170
  akis-arsiv|akis|uretim|0|0|1|0|0|960
  katalog-yedek|katalog|uretim|0|1|0|0|1|520
  kapi-sinama|kapi|sinama|0|1|1|1|1|300
  isletim-kota|isletim|uretim|0|1|1|0|1|110
  olcum-rapor|olcum|sinama|0|1|0|0|0|240`)
  .map(([ad, ekip, ortam, genel, sifre, gunluk, port, etiket, yas]) =>
    ({ ad, ekip, ortam, genel: +genel, sifre: +sifre, gunluk: +gunluk,
       port: +port, etiket: +etiket, yas: +yas }));

// Kural kumesi: kural kimligi -> [yuklem, duzeltmenin degistirdigi alan, duzeltilmis deger]
const KURAL = {
  Y1: [(k) => k.genel === 1, "genel", 0],
  Y2: [(k) => k.sifre === 0, "sifre", 1],
  Y3: [(k) => k.gunluk === 0, "gunluk", 1],
  Y4: [(k) => k.port === 1, "port", 0],
  Y5: [(k) => k.etiket === 0, "etiket", 1],
  Y6: [(k) => k.yas > 365, "yas", 90],
};
const AD = { Y1: "genel erisim kapali", Y2: "beklemede sifreleme", Y3: "denetim gunlugu",
  Y4: "yonetim portu dar", Y5: "sahip etiketi", Y6: "anahtar yasi <= 365",
  Y7: "aktarimda sifreleme" };

// Bildirilmis istisna kayitlari (model girdisi). Ucu kaynak, biri ekip duzeyinde yazilmistir.
const ISTISNA = satir(`
  kapi-genel|Y1
  olcum-kenar|Y1
  isletim-yedek|Y6
  ekip:akis|Y6`).map((x) => x.join("|"));

const istisnali = (k, r) =>
  ISTISNA.includes(`${k.ad}|${r}`) || ISTISNA.includes(`ekip:${k.ekip}|${r}`);

// Elle etiketli gercek uyumsuzluk (model girdisi): sapmanin mesru olmadigi kaynak-kural ciftleri.
// Y7 kural kumesinde yoktur; iki gercek uyumsuzluk bu turdedir.
const GERCEK = satir(`
  olcum-sinama|Y1 Y2 Y3 Y4 Y5 Y6
  akis-depo|Y1 Y3 Y6
  akis-gelistirme|Y1 Y2 Y6
  kapi-gelistirme|Y1 Y3 Y6
  isletim-gelistirme|Y1 Y3 Y5 Y6
  olcum-arsiv|Y2
  katalog-sinama|Y2 Y4 Y6
  isletim-yedek|Y2 Y6
  akis-arsiv|Y2 Y5 Y6
  isletim-arac|Y3 Y6
  katalog-yedek|Y3 Y6
  olcum-rapor|Y3 Y5
  kapi-yonetim|Y4
  kapi-sinama|Y4
  akis-kuyruk|Y7
  katalog-depo|Y7`).flatMap(([ad, r]) => r.split(" ").map((x) => `${ad}|${x}`));

const KURALLAR = Object.keys(KURAL);
const TUM = [...KURALLAR, "Y7"];

// Atesleyen: yuklem dogru. Isaretlenen: atesleyen ve istisna kaydi yok.
const atesle = (kume) => {
  const a = [], i = [];
  for (const k of kume) for (const r of KURALLAR) if (KURAL[r][0](k)) {
    a.push(`${k.ad}|${r}`);
    if (!istisnali(k, r)) i.push(`${k.ad}|${r}`);
  }
  return { atesleyen: a, isaretli: i };
};

const taban = atesle(KAYNAK);
const yak = taban.isaretli.filter((x) => GERCEK.includes(x));
const yanlis = taban.isaretli.filter((x) => !GERCEK.includes(x));
const kacan = GERCEK.filter((x) => !taban.isaretli.includes(x));
const uyumsuzKaynak = new Set(taban.isaretli.map((x) => x.split("|")[0]));

console.log(`${KAYNAK.length} kaynak, ${KURALLAR.length} kural, ${ISTISNA.length} istisna kaydi, ` +
  `${GERCEK.length} elle etiketli gercek uyumsuzluk`);
console.log(`isaretlenen kaynak: ${uyumsuzKaynak.size}/${KAYNAK.length}, ` +
  `isaretlenen cift: ${taban.isaretli.length} (atesleyen ${taban.atesleyen.length})`);

const K = [-8, -22, 11, 12, 11, 8, 15];
console.log();
yaz(K, "kural", "ne bakiyor", "atesleyen", "isaretlenen", "yakalanan", "kacan", "yanlis isaret");
for (const r of TUM) {
  const at = taban.atesleyen.filter((x) => x.endsWith(`|${r}`)).length;
  const is = taban.isaretli.filter((x) => x.endsWith(`|${r}`));
  const y = is.filter((x) => GERCEK.includes(x)).length;
  const kc = GERCEK.filter((x) => x.endsWith(`|${r}`) && !is.includes(x)).length;
  yaz(K, r, AD[r], at, is.length, y, kc, is.length - y);
}
yaz(K, "toplam", "", taban.atesleyen.length, taban.isaretli.length, yak.length, kacan.length,
  yanlis.length);

// Degisiklik akisi: kaynak|alan|yeni deger|mesru mu (model girdisi)
const DEGISIKLIK = satir(`
  katalog-depo|genel|1|1
  katalog-depo|gunluk|0|0
  olcum-depo|port|1|0
  olcum-depo|yas|900|0
  akis-kuyruk|genel|1|1
  akis-kuyruk|sifre|0|0
  isletim-kota|port|1|1
  isletim-kota|etiket|0|0
  kapi-genel|gunluk|0|0
  kapi-genel|yas|700|0
  olcum-kenar|port|1|1
  katalog-kapi|sifre|0|0
  katalog-kapi|yas|800|0
  isletim-gunluk|genel|1|1
  isletim-gunluk|port|1|0
  olcum-depo|etiket|0|0
  akis-kuyruk|yas|900|1
  kapi-yonetim|gunluk|0|0
  isletim-kota|yas|600|0
  katalog-depo|etiket|0|0`)
  .map(([ad, alan, deger, mesru]) => ({ ad, alan, deger: +deger, mesru: mesru === "1" }));

// Uc kip: yalniz bildir, engelle, duzelt. Her kip ayni akisi ayni sirayla gorur.
const kipKos = (kip) => {
  const durum = KAYNAK.map((k) => ({ ...k }));
  const bul = (ad) => durum.find((k) => k.ad === ad);
  let durdurulan = 0, geriAlinan = 0, bozulan = 0, duzeltilen = 0;

  if (kip === "duzelt") for (const k of durum) for (const r of KURALLAR)
    if (KURAL[r][0](k) && !istisnali(k, r)) {
      if (!GERCEK.includes(`${k.ad}|${r}`)) bozulan++;
      k[KURAL[r][1]] = KURAL[r][2];
      duzeltilen++;
    }

  for (const d of DEGISIKLIK) {
    const k = bul(d.ad);
    const once = { ...k };
    k[d.alan] = d.deger;
    const yeni = KURALLAR.filter((r) => KURAL[r][0](k) && !KURAL[r][0](once) && !istisnali(k, r));
    if (yeni.length === 0) continue;
    if (kip === "engelle") { Object.assign(k, once); if (d.mesru) durdurulan++; }
    else if (kip === "duzelt") {
      for (const r of yeni) { k[KURAL[r][1]] = KURAL[r][2]; duzeltilen++; }
      if (d.mesru) geriAlinan++;
    }
  }

  // Pencere sonunda acikta kalan: hala gercek uyumsuzluk tasiyan kaynak ve cift
  const acik = new Set(), cift = [];
  for (const k of durum) {
    for (const r of KURALLAR) if (KURAL[r][0](k) && GERCEK.includes(`${k.ad}|${r}`))
      { acik.add(k.ad); cift.push(`${k.ad}|${r}`); }
    if (GERCEK.includes(`${k.ad}|Y7`)) { acik.add(k.ad); cift.push(`${k.ad}|Y7`); }
  }
  // Denetleyicinin yazma yetkisi: yalnizca duzelt kipi alan yazar
  const alan = kip === "duzelt" ? KAYNAK.length * KURALLAR.length : 0;
  return { acik: acik.size, cift: cift.length, durdurulan, geriAlinan, bozulan, duzeltilen, alan };
};

const KIP = ["bildir", "engelle", "duzelt"], SONUC = {};
for (const kip of KIP) SONUC[kip] = kipKos(kip);

const D = [-10, 15, 13, 11, 23, 20, 15];
console.log();
yaz(D, "kip", "acikta kaynak", "acikta cift", "duzeltme", "durdurulan/geri alinan",
  "bozulan mesru yap.", "yazma yetkisi");
for (const kip of KIP) {
  const s = SONUC[kip];
  yaz(D, kip, s.acik, s.cift, s.duzeltilen, s.durdurulan + s.geriAlinan, s.bozulan,
    `${s.alan} alan`);
}

// Elle duzeltme yuku (kurgu birim): bildir kipinde her isaretli cift bir is kalemidir
const DAKIKA = 25, KISI_SAAT = (n) => ((n * DAKIKA) / 60).toFixed(1);
const mesruDeg = DEGISIKLIK.filter((d) => d.mesru).length;
console.log(`\nbildir kipi kuyrugu: ${taban.isaretli.length} cift x ${DAKIKA} dk = ` +
  `${KISI_SAAT(taban.isaretli.length)} kisi-saat; akistaki ${DEGISIKLIK.length} degisikligin ` +
  `${mesruDeg} tanesi mesru etiketli`);
console.log(`engelle: mesru degisikligin ${SONUC.engelle.durdurulan}/${mesruDeg} tanesi ` +
  `durduruldu; duzelt: ${SONUC.duzelt.geriAlinan}/${mesruDeg} tanesi geri alindi`);
console.log(`kacan ${kacan.length} ciftin ${kacan.filter((x) => x.endsWith("|Y7")).length} tanesi ` +
  `kural kumesinde karsiligi olmayan tur, ` +
  `${kacan.filter((x) => !x.endsWith("|Y7")).length} tanesi istisna kaydinin kapsadigi cift`);
const ekipIstisna = GERCEK.filter((x) => {
  const [ad, r] = x.split("|");
  const k = KAYNAK.find((z) => z.ad === ad);
  return ISTISNA.includes(`ekip:${k.ekip}|${r}`);
}).length;
console.log(`ekip duzeyinde yazilmis tek istisna kaydi ${ekipIstisna} gercek uyumsuzlugu ortuyor`);

// Sinir ve kalan (kurgu): denetleyicinin tarama basina degerlendirme kotasi
const KOTA = 240, kullanilan = KAYNAK.length * KURALLAR.length;
console.log(`\ndegerlendirme kotasi ${KOTA}/tarama; kullanilan ${KAYNAK.length} x ` +
  `${KURALLAR.length} = ${kullanilan}, kalan ${KOTA - kullanilan} -> ayni kural kumesiyle ` +
  `${Math.floor((KOTA - kullanilan) / KURALLAR.length)} kaynak daha, ya da ayni kaynak ` +
  `kumesiyle ${Math.floor(KOTA / KAYNAK.length) - KURALLAR.length} kural daha`);
22 kaynak, 6 kural, 4 istisna kaydi, 38 elle etiketli gercek uyumsuzluk
isaretlenen kaynak: 15/22, isaretlenen cift: 40 (atesleyen 46)

kural   ne bakiyor              atesleyen isaretlenen  yakalanan   kacan  yanlis isaret
Y1      genel erisim kapali             8           6          5       0              1
Y2      beklemede sifreleme             6           6          6       0              0
Y3      denetim gunlugu                 8           8          7       0              1
Y4      yonetim portu dar               7           7          4       0              3
Y5      sahip etiketi                   6           6          4       0              2
Y6      anahtar yasi <= 365            11           7          6       4              1
Y7      aktarimda sifreleme             0           0          0       2              0
toplam                                 46          40         32       6              8

kip         acikta kaynak  acikta cift   duzeltme durdurulan/geri alinan  bozulan mesru yap.  yazma yetkisi
bildir                 16           38          0                      0                   0         0 alan
engelle                16           38          0                      5                   0         0 alan
duzelt                  6            6         59                      5                   8       132 alan

bildir kipi kuyrugu: 40 cift x 25 dk = 16.7 kisi-saat; akistaki 20 degisikligin 6 tanesi mesru etiketli
engelle: mesru degisikligin 5/6 tanesi durduruldu; duzelt: 5/6 tanesi geri alindi
kacan 6 ciftin 2 tanesi kural kumesinde karsiligi olmayan tur, 4 tanesi istisna kaydinin kapsadigi cift
ekip duzeyinde yazilmis tek istisna kaydi 3 gercek uyumsuzlugu ortuyor

degerlendirme kotasi 240/tarama; kullanilan 22 x 6 = 132, kalan 108 -> ayni kural kumesiyle 18 kaynak daha, ya da ayni kaynak kumesiyle 4 kural daha

Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır. Yirmi iki kaynak üzerinde altı kural kırk altı yerde ateşliyor, istisna kayıtları altısını süzüyor ve geriye kırk işaretli çift kalıyor. Kaynak düzeyinde bakıldığında yirmi ikinin on beşi uyumsuz görünüyor — bu, ilk taramada okunacak sayıdır ve tek başına yanıltıcıdır, çünkü işaretlenen her çift gerçekten uyumsuz değildir.

Kural Başına Yakalanan ve Kaçan

Alt tablo kuralları ayırıyor ve kuralların birbirine benzemediğini gösteriyor. Y2 temiz çalışıyor: altı yerde ateşliyor, altısı da gerçekten uyumsuz, yanlış işareti yok — çünkü yüklemi bir kaynağın niyetinden bağımsızdır, beklemede şifrelemenin kapalı olmasının meşru bir okuması yoktur. Y4 aynı biçimde yazılmış ama başka türlü davranıyor: yedi ateşlemenin dördü gerçek, üçü meşru bir yapılandırmayı işaretliyor; geliştirme ortamındaki bir yönetim aracının portunun açık olması o ortamın kendi düzenidir. Y5 de aynı: altı ateşlemenin ikisi geçici geliştirme kaynağına ait ve sahip etiketi bilerek boştur.

Kırk işaretli çiftin otuz ikisi gerçek uyumsuzluk, sekizi yanlış işaret. Kaçan altı çift ise iki ayrı yerden geliyor ve ikisi de kuralın eşiğiyle ilgili değildir. Dördü istisna kayıtlarının altında duruyor: Y6 on bir yerde ateşliyor ama yalnız yedisi işaretleniyor, çünkü bir istisna kaydı ekip düzeyinde yazılmıştır ve tek başına üç gerçek uyumsuzluğu örtüyor. İstisnanın kapsamı, uyumsuzluğun kendisinden daha belirleyicidir — istisna kaydı yazma yetkisi bir denetim kalemidir ve kimin yazabildiği sayılmalıdır. Kalan iki kaçan çift kural kümesinde karşılığı olmayan bir türdedir: aktarımda şifreleme için yazılmış bir kural yoktur, dolayısıyla o iki kaynak için üretilen sayı da yoktur. Kuralları sıkılaştırmak bu boşluğu kapatmaz; boşluk eşikte değil, kural kümesinin kapsamındadır.

Üç Düzeltme Kipi

Yirmi değişiklikten oluşan akış üç kipte de aynı sırayla koşuyor. Yalnız bildir kipi hiçbir şeye dokunmaz: açıkta kalan otuz sekiz çift ve on altı kaynak duruyor, denetleyicinin kiralanan katmanda yazma yetkisi sıfır alandır, karşılığında kırk kalemlik bir elle düzeltme kuyruğu doğuyor — kalem başına 25 dakikayla 16,7 kişi-saat. Engelle kipi yeni değişikliği reddeder ama var olana dokunmaz; açıkta kalan sayı değişmiyor, on altı kaynak ve otuz sekiz çift aynen duruyor. Engellemenin bedeli ise başka bir sütunda: akıştaki altı meşru değişikliğin beşi durduruldu.

Kaçan tek meşru değişikliğin nasıl geçtiği söylenmeye değer. Akış kuyruğunun anahtar yaşını uzatan değişikliği reddedilmedi, çünkü o ekibin Y6 için ekip düzeyinde bir istisna kaydı var — yani meşru işi geçiren kayıt ile üç gerçek uyumsuzluğu örten kayıt aynı kayıttır. İstisnayı daraltmak kaçanı dörtten bire indirir ve durdurulan meşru değişikliği beşten altıya çıkarır; iki sütun aynı düğmeye bağlıdır.

Düzelt kipi açıkta kalanı on altı kaynaktan altıya, otuz sekiz çiftten altıya indiriyor. Kalan altı çift zaten kaçanlardır: dördü istisna kaydının örttüğü, ikisi kural kümesinde karşılığı olmayan tür. Denetleyici bunun için elli dokuz düzeltme yazıyor ve yirmi iki kaynağın altı alanına, yani yüz otuz iki alana yazma yetkisi istiyor. Kiralanan katmanda bu, hiçbir insanın sahip olmadığı genişlikte bir yetkidir: bir kaynağı ağa açan, şifrelemeyi çeviren ve anahtarı değiştiren tek özne, denetim aracının kendisi olur.

Yanlış Düzeltmenin Bedeli

Düzelt kipinin ikinci sütunu asıl ölçüdür: sekiz meşru yapılandırma bozuldu. Bunlar yanlış işaretlenen sekiz çiftin tamamıdır — kamuya açık olması gereken katalog kapısı kapatıldı, üç yönetim portu daraltıldı, iki geçici kaynağa sahip etiketi yazıldı, bir arşiv anahtarının ömrü kısaltıldı, bir sınama kaynağının günlüğü açıldı. Denetleyici bunların meşru olduğunu bilmiyor, çünkü meşruluk bilgisinin tek taşıyıcısı istisna kaydıdır ve bu sekiz çift için yazılmamıştır.

Oran adıyla anılmalı: taban taramasındaki kırk düzeltmenin sekizi, yani her beş düzeltmeden biri meşru bir yapılandırmayı bozuyor. Üstüne akıştan gelen beş meşru değişiklik uygulandıktan sonra geri alınıyor. Kip seçimi bu yüzden bir kural sıkılığı seçimi değil, iki sütun arasında bir seçimdir: bildir kipi hiçbir meşru işi durdurmaz ve on altı kaynağı açıkta bırakır; düzelt kipi on kaynağı kapatır ve on üç meşru işlemi bozar ya da geri alır. Ortadaki engelle kipi ikisini de yapmaz — yeni uyumsuzluğu içeri sokmaz ama eskisini de kapatmaz; var olan on altı kaynak için hâlâ bir elle düzeltme kuyruğu gerekir.

Sınır ve Kalan

Denetleyicinin kendi sınırı da sayılır. Tarama başına değerlendirme kotası 240 birimdir; yirmi iki kaynak çarpı altı kural, 132 birim kullanıyor ve 108 kalıyor. Aynı kural kümesiyle on sekiz kaynak daha eklenebilir ya da aynı kaynak kümesiyle dört kural daha yazılabilir; ikisi birden yapılamaz. Kapsam boşluğunu kapatmak için yazılacak aktarımda şifreleme kuralı yirmi iki değerlendirme yer kaplar, yani kalan bütçenin beşte birini. Kota, kural yazmayı ücretsiz olmaktan çıkarır: kural kümesini büyütmek ile kaynak sayısını büyütmek aynı sınıra çarpar.

Özet

  • Yirmi iki kaynak üzerinde altı kural kırk altı yerde ateşliyor, dört istisna kaydı altısını süzüyor; kırk işaretli çiftin otuz ikisi gerçek uyumsuzluk, sekizi yanlış işarettir.
  • Kaçan altı çiftin dördü istisna kayıtlarının altındadır ve tek bir ekip düzeyinde kayıt üç gerçek uyumsuzluğu örtüyor; ikisi kural kümesinde karşılığı olmayan türdür ve eşik sıkılaştırmakla kapanmaz.
  • Yalnız bildir kipi on altı kaynağı açıkta bırakır, hiçbir meşru işi durdurmaz ve kırk kalemlik bir kuyruk üretir (16,7 kişi-saat, kurgu birim).
  • Engelle kipi açıkta kalanı değiştirmez ama altı meşru değişikliğin beşini durdurur; geçen tek meşru değişiklik, üç gerçek uyumsuzluğu örten istisna kaydı sayesinde geçiyor.
  • Düzelt kipi açıkta kalanı on altı kaynaktan altıya indirir; karşılığında sekiz meşru yapılandırmayı bozar, beş meşru değişikliği geri alır ve yüz otuz iki alanda yazma yetkisi ister.
  • Denetleyicinin tarama başına 240 değerlendirmelik kotasının 132’si kullanılıyor; kalan 108 birim on sekiz kaynağa ya da dört kurala yeter, ikisine birden değil.

Sonraki Adım

Uyum denetimi kaynağın yapılandırmasını okudu ve ilk kuralı genel erişimle ilgiliydi: Y1 sekiz yerde ateşledi, altısı işaretlendi. Ama bu kural bir kaynağın açık olup olmadığına bakan tek bir bayrağı okuyor. Bayrak kapatıldığında o kaynağa gerçekten kaç yol kaldığı, hizmete hangi uçtan gidildiği ve adın nasıl çözümlendiği hiç sorulmadı. Sonraki ders yönetilen bir hizmete erişimin kaç yoldan sağlandığını sayar ve genel uç kapatıldığında kaç meşru erişimin kırıldığını ölçer.

İ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