İçeriğe geç
academia.sh

Ders 15 / 21

Uyumluluk Gereksinimlerinin Buluta Yansıması

Uyumluluk gereksinimlerinin kiralanan katmanda kanıta çevrilmesi: 12 gereksinim türü ve 26 kanıt kaleminde 7 kalemin sağlayıcının belgesinden, 16'sının kendi kaydından gelmesi, 3 gereksinimde kanıtın boşlukta kalması, kiracının katmanı dışında geçen 14 kalemin 7'sinin kanıtının sağlayıcıdan gelmemesi ve kanıt üretmenin yılda 139 kurgu birim ile 160 kişi-saate mal olması.

İçindekiler

Önceki ders tespit kurallarını koşturdu ve üç sayı üretti: yakalanan, kaçan, yanlış alarm. Üçü de ekibin kendi ölçüsüydü — eşiği de, kapatma kararını da aynı taraf veriyordu. Dışarıdan biri “erişimin kısıtlandığını ve olağandışı etkinliğin izlendiğini gösterin” dediğinde istenen şey bu sayılar değildir. İstenen kanıttır: bir yükümlülüğün karşılandığını, o yükümlülüğü koymayan birine gösterilebilir biçimde ortaya koyan kayıt ya da belge.

Dış kısıtların koşturulabilir denetime çevrilmesi M20/K04’te ölçüldü; orada gevşetmenin yerini kanıt alıyordu ve kanıtın tamamı mimarinin kendi çıktısıydı. Kiralanan katmanda bu bölünür. Gereksinimlerin bir kısmı sağlayıcının makinesinde, tesisinde ya da personelinde karşılanır; kiracının orada üretebileceği bir kayıt yoktur ve kanıt olarak sağlayıcının belgesi geçer. Bu dersin ölçüsü o ayrımdır. Gereksinimler burada tür olarak anılır — veri yerleşimi kısıtı, saklama zorunluluğu, silme hakkı, erişim kaydı yükümlülüğü, ayrıcalıklı erişim kanıtı — ve hiçbir düzenleme, standart, sertifika ya da çerçeve adı yazılmaz.

Gereksinimler ve Kanıt Kalemleri

Örnek kursun kurgu bölgesel ölçüm ağıdır. BG43 — gereksinim kataloğu: on iki gereksinim türü. BG44 — kanıt kalemi çizelgesi: yirmi altı kalem; her kalem hangi katmanda geçtiğini (sağlayıcı, paylaşılan, kiracı), kanıtının kim tarafından üretildiğini (sağlayıcının belgesi, kendi kaydın, hiçbiri), tazeliğini gün olarak, günlük satır sayısını ve saklama süresini taşır. BG45 — gereksinim-kalem eşlemesi: otuz iki bağ; bir kalem birden çok gereksinime hizmet edebilir. BG46 — kayıt birimleri: satır başına 200 bayt, GB başına aylık 1,5 kurgu birim. BG47 — rapor üretimi: her gereksinim çeyrekte bir derlenir, gereksinim başına 2 kişi-saat sabit ve kalem başına 0,5 kişi-saat. BG48 — kanıt deposu üst sınırı: 12 GB (kurgu birim).

Aşağıdaki dosya çizelgeleri kurar ve kanıtı üreticisine göre ayırır. Süreç içi bir modeldir; gerçek belge, kayıt ya da ücret yoktur.

// uyum/kanit.mjs — uyumluluk gereksinimlerinin kiralanan katmanda kanita cevrilmesi.
// Surec ici model: bolgesel olcum agi (kurgu); gercek belge, kayit ya da ucret 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(""));

// Kanit kalemi: ad|katman|uretici (saglayici|kendi|yok)|tazelik (gun)|gunluk satir|saklama (gun)
const KALEM = Object.fromEntries(satir(`
  kaynak-envanteri|kiraci|kendi|1|400|1095
  bolge-etiketi|kiraci|kendi|1|400|1095
  veri-akis-haritasi|kiraci|yok|0|0|0
  tesis-bolge-beyani|saglayici|saglayici|365|0|0
  saklama-politikasi-kaydi|kiraci|kendi|1|150|1095
  yasam-dongusu-kosum-kaydi|kiraci|kendi|1|900|1095
  yedek-kopya-envanteri|paylasilan|kendi|7|60|1095
  silme-istegi-kaydi|kiraci|kendi|1|30|2555
  silme-yayin-kaydi|kiraci|kendi|1|120|2555
  yedekten-silme-onayi|paylasilan|yok|0|0|0
  denetim-gunlugu|paylasilan|kendi|1|9000|2555
  veri-duzlemi-erisim-kaydi|saglayici|kendi|1|4000|2555
  saglayici-personel-erisim-beyani|saglayici|saglayici|365|0|0
  ayricalikli-oturum-kaydi|kiraci|kendi|1|200|2555
  rol-ustlenme-kaydi|kiraci|kendi|1|600|2555
  sifreleme-yapilandirma-taramasi|paylasilan|kendi|1|300|1095
  anahtar-sahipligi-beyani|saglayici|saglayici|365|0|0
  aktarim-uc-taramasi|kiraci|kendi|1|250|1095
  istemci-dogrulama-kaydi|kiraci|yok|0|0|0
  anahtar-dondurme-kaydi|paylasilan|kendi|1|20|2555
  anahtar-materyali-imha-beyani|saglayici|saglayici|365|0|0
  tesis-erisim-denetimi-beyani|saglayici|saglayici|365|0|0
  donanim-imha-beyani|saglayici|saglayici|365|0|0
  geri-yukleme-tatbikat-kaydi|kiraci|kendi|90|10|1095
  olay-zaman-cizelgesi|paylasilan|kendi|1|80|2555
  saglayici-olay-bildirimi|saglayici|saglayici|30|0|0`)
  .map(([ad, katman, uretici, taze, satirSay, sakla]) => [ad,
    { katman, uretici, taze: +taze, satirSay: +satirSay, sakla: +sakla }]));

// Gereksinim turu -> kanit kalemleri. Duzenleme, standart ya da cerceve adi yoktur.
const GEREKSINIM = satir(`
  G01 veri yerlesimi kisiti|kaynak-envanteri bolge-etiketi veri-akis-haritasi tesis-bolge-beyani
  G02 saklama alt siniri|saklama-politikasi-kaydi yasam-dongusu-kosum-kaydi yedek-kopya-envanteri
  G03 saklama ust siniri|saklama-politikasi-kaydi yasam-dongusu-kosum-kaydi
  G04 silme hakki|silme-istegi-kaydi silme-yayin-kaydi yedekten-silme-onayi
  G05 erisim kaydi yukumlulugu|denetim-gunlugu veri-duzlemi-erisim-kaydi
  G06 ayricalikli erisim kaniti|ayricalikli-oturum-kaydi rol-ustlenme-kaydi saglayici-personel-erisim-beyani denetim-gunlugu
  G07 beklemede sifreleme kaniti|sifreleme-yapilandirma-taramasi anahtar-sahipligi-beyani
  G08 aktarimda sifreleme kaniti|aktarim-uc-taramasi istemci-dogrulama-kaydi
  G09 anahtar dondurme kaniti|anahtar-dondurme-kaydi anahtar-sahipligi-beyani anahtar-materyali-imha-beyani
  G10 fiziksel erisim ve imha kaniti|tesis-erisim-denetimi-beyani donanim-imha-beyani
  G11 geri yuklenebilirlik kaniti|geri-yukleme-tatbikat-kaydi yedek-kopya-envanteri
  G12 olay bildirimi kaniti|olay-zaman-cizelgesi saglayici-olay-bildirimi denetim-gunlugu`)
  .map(([ad, k]) => ({ ad, kalem: k.split(" ") }));

const KATMAN = ["saglayici", "paylasilan", "kiraci"];
const URETICI = ["saglayici", "kendi", "yok"];

console.log(`${GEREKSINIM.length} gereksinim turu, ${Object.keys(KALEM).length} kanit kalemi, ` +
  `${GEREKSINIM.reduce((t, g) => t + g.kalem.length, 0)} gereksinim-kalem bagi`);

// Gereksinim basina: kanit kimden geliyor, bosta kalan var mi, en eski kanit kac gunluk
const G = [-36, 8, 14, 8, 8, 15];
console.log();
yaz(G, "gereksinim turu", "kalem", "saglayicidan", "kendi", "bosta", "en eski (gun)");
const durum = {};
for (const g of GEREKSINIM) {
  const say = (u) => g.kalem.filter((k) => KALEM[k].uretici === u).length;
  const uretilen = g.kalem.filter((k) => KALEM[k].uretici !== "yok");
  const taze = Math.max(...uretilen.map((k) => KALEM[k].taze));
  durum[g.ad] = { bosta: say("yok"), taze };
  yaz(G, g.ad, g.kalem.length, say("saglayici"), say("kendi"), say("yok"), taze);
}
const bosluklu = GEREKSINIM.filter((g) => durum[g.ad].bosta > 0);
console.log(`\nkaniti boslukta kalan gereksinim: ${bosluklu.length}/${GEREKSINIM.length} -> ` +
  bosluklu.map((g) => `${g.ad.split(" ")[0]} (${g.kalem.filter((k) =>
    KALEM[k].uretici === "yok").join(", ")})`).join("; "));

// Paylasilan sorumluluk siniri kanit tarafinda yeniden cizilir: katman x uretici
const C = [-14, 12, 10, 8, 9];
console.log();
yaz(C, "katman \\ uretici", "saglayici", "kendi", "yok", "toplam");
for (const kt of KATMAN) {
  const kume = Object.values(KALEM).filter((k) => k.katman === kt);
  yaz(C, kt, ...URETICI.map((u) => kume.filter((k) => k.uretici === u).length), kume.length);
}
yaz(C, "toplam", ...URETICI.map((u) =>
  Object.values(KALEM).filter((k) => k.uretici === u).length), Object.keys(KALEM).length);
const disKatman = Object.entries(KALEM).filter(([, k]) => k.katman !== "kiraci");
const disAmaKendi = disKatman.filter(([, k]) => k.uretici !== "saglayici");
console.log(`kiracinin katmani disinda gecen ${disKatman.length} kalemin ` +
  `${disAmaKendi.length} tanesinin kaniti saglayicidan gelmiyor: ` +
  `${disAmaKendi.map(([a]) => a).join(", ")}`);

// Kanit uretmenin surekli maliyeti (kurgu birim)
const SATIR_BAYT = 200, GB = 1e9, GB_BIRIM = 1.5;
const kendi = Object.entries(KALEM).filter(([, k]) => k.uretici === "kendi");
const hacim = kendi.reduce((t, [, k]) => t + (k.satirSay * k.sakla * SATIR_BAYT) / GB, 0);
const gunlukSatir = kendi.reduce((t, [, k]) => t + k.satirSay, 0);
console.log(`\nkendi kaydindan gelen ${kendi.length} kalem: gunde ` +
  `${gunlukSatir.toLocaleString("tr-TR")} satir; saklama suresi sonunda ` +
  `${hacim.toFixed(2)} GB, ayda ${(hacim * GB_BIRIM).toFixed(2)} birim, ` +
  `yilda ${(hacim * GB_BIRIM * 12).toFixed(0)} birim depolama`);

// Rapor uretimi: her gereksinim ceyrekte bir derlenir
const [CEYREK, SABIT, KALEM_SAAT] = [4, 2, 0.5];
const kisiSaat = GEREKSINIM.reduce((t, g) =>
  t + CEYREK * (SABIT + g.kalem.length * KALEM_SAAT), 0);
console.log(`rapor uretimi: ${GEREKSINIM.length} gereksinim x ${CEYREK} ceyrek x ` +
  `(${SABIT} + kalem x ${KALEM_SAAT}) = ${kisiSaat} kisi-saat/yil`);
const beyan = Object.values(KALEM).filter((k) => k.uretici === "saglayici");
console.log(`saglayicidan gelen ${beyan.length} belgenin tazeligi ` +
  `${Math.min(...beyan.map((k) => k.taze))}-${Math.max(...beyan.map((k) => k.taze))} gun; ` +
  `kendi kaydinin tazeligi 1-90 gun`);

// Sinir ve kalan (kurgu): kanit deposu ust siniri
const SINIR = 12;
console.log(`kanit deposu ust siniri ${SINIR} GB; kullanilan ${hacim.toFixed(2)}, kalan ` +
  `${(SINIR - hacim).toFixed(2)} -> denetim gunlugunun gunluk satiri ` +
  `${Math.floor(((SINIR - hacim) * GB) / (SATIR_BAYT * KALEM["denetim-gunlugu"].sakla))
    .toLocaleString("tr-TR")} satir daha buyuyebilir`);
12 gereksinim turu, 26 kanit kalemi, 32 gereksinim-kalem bagi

gereksinim turu                        kalem  saglayicidan   kendi   bosta  en eski (gun)
G01 veri yerlesimi kisiti                  4             1       2       1            365
G02 saklama alt siniri                     3             0       3       0              7
G03 saklama ust siniri                     2             0       2       0              1
G04 silme hakki                            3             0       2       1              1
G05 erisim kaydi yukumlulugu               2             0       2       0              1
G06 ayricalikli erisim kaniti              4             1       3       0            365
G07 beklemede sifreleme kaniti             2             1       1       0            365
G08 aktarimda sifreleme kaniti             2             0       1       1              1
G09 anahtar dondurme kaniti                3             2       1       0            365
G10 fiziksel erisim ve imha kaniti         2             2       0       0            365
G11 geri yuklenebilirlik kaniti            2             0       2       0             90
G12 olay bildirimi kaniti                  3             1       2       0             30

kaniti boslukta kalan gereksinim: 3/12 -> G01 (veri-akis-haritasi); G04 (yedekten-silme-onayi); G08 (istemci-dogrulama-kaydi)

katman \ uretici   saglayici     kendi     yok   toplam
saglayici                7         1       0        8
paylasilan               0         5       1        6
kiraci                   0        10       2       12
toplam                   7        16       3       26
kiracinin katmani disinda gecen 14 kalemin 7 tanesinin kaniti saglayicidan gelmiyor: yedek-kopya-envanteri, yedekten-silme-onayi, denetim-gunlugu, veri-duzlemi-erisim-kaydi, sifreleme-yapilandirma-taramasi, anahtar-dondurme-kaydi, olay-zaman-cizelgesi

kendi kaydindan gelen 16 kalem: gunde 16.520 satir; saklama suresi sonunda 7.72 GB, ayda 11.58 birim, yilda 139 birim depolama
rapor uretimi: 12 gereksinim x 4 ceyrek x (2 + kalem x 0.5) = 160 kisi-saat/yil
saglayicidan gelen 7 belgenin tazeligi 30-365 gun; kendi kaydinin tazeligi 1-90 gun
kanit deposu ust siniri 12 GB; kullanilan 7.72, kalan 4.28 -> denetim gunlugunun gunluk satiri 8.374 satir daha buyuyebilir

Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır. On iki gereksinim yirmi altı kanıt kalemine ve otuz iki bağa çözülüyor. Yirmi altı kalemin yedisi sağlayıcının belgesinden, on altısı kendi kaydından geliyor, üçünün üreticisi yok. Kalem sayısı gereksinim sayısından fazladır ve bağ sayısı kalem sayısından fazladır; tek bir kalem birden çok yükümlülüğe hizmet eder — denetim günlüğü üç ayrı gereksinimde geçiyor, anahtar sahipliği beyanı ikisinde.

Kanıtın İki Üreticisi

Gereksinim tablosunun ilk okunacak yeri ikinci ve üçüncü sütunlardır. G10 tamamen sağlayıcının tarafındadır: iki kaleminin ikisi de belgedir, kiracının orada üreteceği hiçbir kayıt yoktur. G03 ve G05 tamamen kiracının tarafındadır. Kalan dokuz gereksinim karışıktır ve kanıt dosyası iki farklı türden parça içerir. Bu, uyum çalışmasının pratik biçimini belirler: bir gereksinimi karşılamak tek bir sorumlunun işi değil, iki üreticiden gelen parçaların birleştirilmesidir.

Son sütun bu birleştirmenin zayıf halkasını gösteriyor. Bir gereksinimin kanıtı, en eski parçasının yaşı kadar tazedir. G05 için tazelik bir gündür, çünkü her iki kalem de günlük tutulan kayıtlardır. G01, G06, G07, G09 ve G10 için tazelik 365 gündür; bu beş gereksinimin her birinde yılda bir yenilenen bir sağlayıcı belgesi vardır ve kiracının günlük tuttuğu kayıtlar dosyanın yaşını düşürmez. Bir olay ile onu kapsayan belgenin yenilenmesi arasında bir yıla kadar boşluk kalabilir; yenileme takvimini de sağlayıcı belirler, dolayısıyla bu bir devredilmiş karardır ve kiracının hızlandıramayacağı bir kalemdir.

İki üreticinin ürettiği şey aynı türden değildir ve bu ayrım sayılardan sonra gelir. Kendi kaydın sorgulanabilir: bir tarih aralığı verilir, bir özne süzülür, aynı kayıttan başka bir soruya yanıt çıkarılır ve gerekirse geriye dönük yeniden derlenir. Sağlayıcının belgesi ise kapalı bir çıktıdır — verilen biçimiyle kabul edilir, içine sorgu yazılamaz, kapsamı dışına çıkarılamaz ve kapsamadığı bir kaynak için ikinci bir sürümü istenemez. On altı kalem birinci türden, yedisi ikinci türdendir. Pratik sonucu şudur: bir denetçi tabloda olmayan bir soru sorduğunda kiracının on altı kalemde yanıt üretme şansı vardır, yedi kalemde yoktur; o yedide verilecek yanıt belgede yazılı olanla sınırlıdır.

Üç gereksinimde kanıt boşlukta kalıyor ve üçü de adıyla yazılıyor. G01’de veri akış haritası eksiktir: hangi verinin hangi bölgeye aktığını gösteren bir kayıt yok, dolayısıyla envanterdeki etiket ile tesis beyanı arasındaki bağ kurulamıyor. G04’te yedekten silme onayı eksiktir: silme isteği kaydediliyor ve yayınlanıyor ama silmenin yedek kopyalarda gerçekleştiğini gösteren bir kayıt üretilmiyor. G08’de istemci doğrulama kaydı eksiktir: uç taraması sunucu tarafını gösteriyor, istemcinin doğrulamayı gerçekten yaptığına dair kanıt yok. Üçünün ortak yanı şudur: eksik olan bir belge değil, hiç kurulmamış bir kayıt akışıdır. Kimse reddetmedi, kimse vermedi — kimse istemedi.

Sınır Kanıt Tarafında Yeniden Çizilir

Çapraz tablo dersin ana ölçüsüdür. Katman sütunları sorumluluğun nerede olduğunu, satırlar kanıtın kimden geldiğini söylüyor ve ikisi çakışmıyor. Sağlayıcının katmanında geçen sekiz kalemin yedisi belge ile karşılanıyor, biri karşılanmıyor: veri düzlemi erişim kaydı sağlayıcının içinde olup biter ama kanıtını üreten, o kaydı açık tutan kiracıdır. Paylaşılan katmandaki altı kalemin hiçbiri sağlayıcının belgesinden gelmiyor; beşi kiracının kaydından, biri hiç gelmiyor.

Toplam sayı bunu tek satıra indiriyor: kiracının katmanı dışında geçen on dört kalemin yedisinin kanıtı sağlayıcıdan gelmiyor. Yani sorumluluk paylaşımı kanıt tarafına aynen geçmiyor; kanıt sınırı katman sınırının kiracı tarafına doğru kaymış durumdadır. Yedek kopya envanteri, denetim günlüğü, şifreleme yapılandırma taraması, anahtar döndürme kaydı ve olay zaman çizelgesi ortak katmanda geçen işlerdir, ama gösterilmesi gerektiğinde gösterecek olan kiracıdır. Bu ayrım sözleşmede değil, kanıt dosyasının kim tarafından derlendiğinde görünür — ve derleme yükü tam da buradan doğar.

Kanıt Üretmenin Sürekli Maliyeti

Kanıt bir defa üretilip bitmez; sürekli bir kalemdir ve iki başlıkta sayılır. Kendi kaydından gelen on altı kalem günde 16.520 satır üretiyor; kendi saklama süreleri sonunda 7,72 GB tutuyor, ayda 11,58 ve yılda 139 kurgu birim depolama ediyor. İkinci başlık daha ağırdır: on iki gereksinimin her biri çeyrekte bir derleniyor ve yılda 160 kişi-saat tutuyor. İki kalemi yan yana koymak dersin sonucudur — kanıtın sürekli maliyeti ağırlıklı olarak depolama değil, derleme emeğidir ve gereksinim başına değil kalem başına büyür.

M20/K04’ün kapalı halkası burada da geçerlidir ve bir sözcük ekler: kanıt da bir veri sınıfıdır, kendi saklama süresine ve kendi yerleşim kısıtına tabidir. Eklenen sözcük şudur: bu veri sınıfının yarısını kiracı üretmez. Sağlayıcıdan gelen yedi belgenin tazeliği 30–365 gün arasındadır ve bu aralık kiracının seçimi değildir; kendi kaydının tazeliği 1–90 gündür ve bu aralık kiracının seçimidir. Kanıt dosyasının ne kadar taze olabileceğine iki taraf birden karar verir.

Sınır tarafında da kalan sayılıyor. Kanıt deposunun üst sınırı 12 GB, kullanılan 7,72, kalan 4,28. Bu, denetim günlüğünün günlük satır sayısının 8.374 satır daha büyümesine yeter; ondan sonrası ya saklama süresini kısaltmayı gerektirir — ki saklama süresi bir gereksinimin kendisidir — ya da sınırı büyütmeyi, ki bu da faturaya yazılır.

Özet

  • On iki gereksinim türü yirmi altı kanıt kalemine ve otuz iki bağa çözüldü; kalemlerin yedisi sağlayıcının belgesinden, on altısı kendi kaydından geliyor, üçünün üreticisi yok.
  • Üç gereksinimde kanıt boşlukta kalıyor (veri akış haritası, yedekten silme onayı, istemci doğrulama kaydı); üçünde de eksik olan bir belge değil, hiç kurulmamış bir kayıt akışıdır.
  • Bir gereksinimin kanıtı en eski parçası kadar tazedir: beş gereksinimde tazelik 365 gündür, çünkü içlerinde yılda bir yenilenen bir sağlayıcı belgesi vardır ve yenileme takvimi kiracının değildir.
  • Paylaşılan sorumluluk sınırı kanıt tarafında aynı yerde durmuyor: kiracının katmanı dışında geçen on dört kalemin yedisinin kanıtı sağlayıcıdan gelmiyor, paylaşılan katmandaki altı kalemin hiçbiri belgeyle karşılanmıyor.
  • Kanıt üretmenin sürekli maliyeti iki kalemdir: 16.520 satır/gün ve 7,72 GB ile yılda 139 kurgu birim depolama, artı yılda 160 kişi-saat rapor derleme. Ağır olan ikincisidir.
  • Kanıt deposunun 12 GB’lık sınırının 7,72’si dolu; kalan 4,28 GB denetim günlüğüne günde 8.374 satırlık büyüme yeri bırakıyor.

Sonraki Adım

Konu burada kapanıyor ve bıraktığı tablo tek bir cümleye sığar: kiralanan katmanda güvenlik, kimin neyi yapabildiğini daraltmak, verinin okunduğunda ne göstereceğini değiştirmek ve ikisinin de yapıldığını gösterebilmektir. Üçünün de sayısı çıkarıldı — daraltmanın kaç meşru işi durdurduğu, yalıtımın kaç erişimi kırdığı, tespitin kaçını kaçırdığı ve kanıtın hangi gereksinimde boşlukta kaldığı.

Çıkarılmayan tek şey bunların toplamıdır. Uyum denetimi bir kotayı, özel uç noktalar hizmet ve ağ başına aylık bir kirayı, sinyal toplama GB başına bir ücreti, kanıt saklama bir depo sınırını tüketiyor; her biri kendi bölümünde kurgu birimle yazıldı ama hiçbiri diğerinin yanına konmadı. Erişim daraltıldı, veri şifrelendi ve kanıt üretildi — bunların hepsinin bir faturası var ve o fatura bu konu boyunca hiç okunmadı. Sonraki konu faturayı kalem kalem açar: hangi kalemin neye ait olduğu, hangi ekibe düştüğü ve hangi payın hiçbir ekibe atanamadığı.

İ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