Ders 03 / 12
Ağ Yalıtımı
İzin yarıçapının ağ yoluyla kesişmesi: aynı 9 kalemlik yürüyüş dışarıdan 6, iş yükü ağından 8, yönetim ağından 2 kaleme iniyor. Meşru dış erişimi olmayan 10 kalemi özel uca almak dış yarıçabı 6'dan 4'e indiriyor ve hiçbir meşru işi durdurmuyor; eşiği günde 50'ye çekmek dış yarıçabı sıfırlıyor ve günde 101 dış erişimi durduruyor. İş yükü ağı sütunu dört denetimde de 8'de kalıyor.
İçindekiler
Önceki ders yarıçabı bir sayıya çevirdi: sızan hizmet hesabından dokuz kalem. O yürüyüş boyunca tek bir şey sorulmadı — bir kimliğin bir kaleme yetkisi olması, o kaleme ulaşabildiği anlamına gelir mi. Kenar vardı ve yürüyüş kenardan geçti; kalemin oturduğu ağın, kimlik bilgisinin kullanıldığı yerden erişilebilir olup olmadığına bakılmadı.
Bu ders aynı grafiğe ikinci bir katman ekliyor. Her kalemin bir ağ yolu vardır: hangi konumdan ağ düzeyinde erişilebildiği. Gerçek yarıçap iki kümenin kesişimidir — izin yürüyüşünün ulaştığı kalemler ile o konumdan ağ düzeyinde erişilebilen kalemler. Bulut Yönetişimi, Güvenlik ve Maliyet kursu aynı yüzeyi erişim çizelgesi ve ad çözümlemesi üzerinden ölçtü; burada adres planı, alt ağ aritmetiği ve filtre kuralı yazımı hiç geçmez, yalnız kapanan yol sayılır.
- BG13. Üç konum vardır:
dis(kiralanan ağın dışı),is-yuku(ele geçmiş bir iş yükü örneğinin bulunduğu ağ) veyonetim(dağıtım işlerinin koştuğu ağ). Sızan kimlik bilgisi bu konumlardan birinde kullanılır. - BG14. Bir kalemin yolu, hangi konumlardan ağ düzeyinde erişilebildiğidir. Yol izinden bağımsızdır; izni olmayan bir kimlik için yol açık olabilir, izni olan bir kimlik için kapalı.
- BG15. Rol üstlenme kimlik ve erişim yönetimi üzerinden yapılır ve üç konumdan da yapılabilir. Bu bir model kararıdır: üstlenme kısıtlanırsa yürüyüş kısalır ve ağ katmanının etkisi ölçülemez.
- BG16. Özel uç noktaya geçirmek, kalemin genel ucunun kapanması ve yalnız ağ içinden
erişilebilir olması demektir; modelde bu,
diskonumunun kalemin yolundan çıkmasıdır. - BG17. Her kalemin günde kaç meşru dış erişim aldığı kurgu bir sayıdır ve genel uç kapatıldığında bu erişimlerin durduğu varsayılır.
İzin Yarıçapı Bir Üst Sınırdır
// bulut/ag.mjs — onceki dersin erisim grafigi + her kalemin AG YOLU. MODELDIR; kurgu bolgesel // olcum agi. Adres plani, alt ag aritmetigi ve filtre kurali yazimi bu derste yoktur. export const ERISIM = { 'hesap-toplayici': 'olcum-deposu olcum-kuyrugu', 'hesap-dogrulayici': 'olcum-deposu olcum-kuyrugu ham-arsiv', 'hesap-portal': 'abone-veritabani portal-varlik-deposu is-emri-kuyrugu', 'hesap-rapor': 'rapor-deposu fatura-cikti-deposu gunluk-deposu', 'rol-fatura': 'fatura-veritabani fatura-cikti-deposu posta-cikisi abone-veritabani', 'rol-arsiv': 'ham-arsiv yedek-deposu', 'rol-yedek': 'yedek-deposu fatura-veritabani abone-veritabani olcum-deposu', 'rol-dagitim': 'dagitim-yapilandirmasi sablon-deposu ornek-yonetimi', 'rol-gunluk': 'gunluk-deposu denetim-gunlugu', 'rol-yonetim': 'ornek-yonetimi anahtar-yonetimi sir-deposu', }; export const USTLENME = [['hesap-toplayici', 'rol-arsiv'], ['hesap-dogrulayici', 'rol-arsiv'], ['rol-arsiv', 'rol-yedek'], ['rol-yedek', 'rol-yonetim'], ['hesap-portal', 'rol-fatura'], ['rol-fatura', 'rol-gunluk'], ['hesap-rapor', 'rol-gunluk'], ['rol-dagitim', 'rol-yonetim']]; // Konum: sizan kimlik bilgisinin kullanildigi yer. Kalemin yolu, hangi konumdan ag duzeyinde // erisilebildigini soyler. disIs = gunde kac mesru dis erisim o kalemin genel ucundan geciyor. export const KONUM = ['dis', 'is-yuku', 'yonetim']; export const KALEM = ` olcum-deposu dis is-yuku 40 olcum-kuyrugu is-yuku 0 ham-arsiv dis is-yuku 6 yedek-deposu dis is-yuku yonetim 2 abone-veritabani is-yuku 0 fatura-veritabani is-yuku 0 fatura-cikti-deposu dis is-yuku 120 portal-varlik-deposu dis is-yuku 8600 is-emri-kuyrugu is-yuku 0 gunluk-deposu is-yuku yonetim 0 denetim-gunlugu yonetim 0 rapor-deposu dis yonetim 30 posta-cikisi dis is-yuku 0 sir-deposu dis is-yuku 0 anahtar-yonetimi dis is-yuku 0 ornek-yonetimi dis yonetim 14 dagitim-yapilandirmasi yonetim 0 sablon-deposu dis yonetim 9` .trim().split('\n').map((s) => { const p = s.trim().split(/\s+/); return { ad: p[0], yol: p.slice(1, -1), disIs: Number(p.at(-1)) }; }); export const bul = (ad) => KALEM.find((k) => k.ad === ad); // Izin yuruyusu: kimlik grafiginde ulasilan kalem kumesi (onceki dersle ayni). export function izin(baslangic) { const g = new Set([baslangic]), kalem = new Set(); let sira = [baslangic]; while (sira.length) { const s = []; for (const k of sira) { for (const r of ERISIM[k].split(' ')) kalem.add(r); for (const [a, b] of USTLENME) if (a === k && !g.has(b)) { g.add(b); s.push(b); } } sira = s; } return [...kalem]; } // Gercek yaricap = izin VE ag yolu. kapali = genel ucu kapatilan kalem adlari. export const yaricap = (baslangic, konum, kapali = new Set()) => izin(baslangic).filter((r) => bul(r).yol.includes(konum) && !(konum === 'dis' && kapali.has(r))).length;
// bulut/kosum1.mjs — izin yaricabi ile ag yolundan gecen yaricap: konuma gore kac kalem import { KALEM, KONUM, bul, izin, yaricap } from './ag.mjs'; const u = izin('hesap-toplayici'); console.log(`sizan kimlik hesap-toplayici; izin yuruyusu ${u.length}/${KALEM.length} kalem\n`); 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 A = [-24, 7, 9, 10, 11]; yaz(A, 'yuruyuse giren kalem', ...KONUM, 'mesru dis'); for (const r of u.sort()) yaz(A, r, ...KONUM.map((k) => bul(r).yol.includes(k) ? 'var' : '-'), bul(r).disIs); yaz(A, 'yaricap', ...KONUM.map((k) => yaricap('hesap-toplayici', k)), ''); console.log('\nag duzeyinde erisilebilir kalem (izinden bagimsiz), izin yaricabi 9:'); for (const k of KONUM) console.log(` ${k.padEnd(9)}ag yuzeyi ${String(KALEM.filter((r) => r.yol.includes(k)).length) .padStart(2)}/${KALEM.length}, izinle kesisim ${yaricap('hesap-toplayici', k)}`);
sizan kimlik hesap-toplayici; izin yuruyusu 9/18 kalem yuruyuse giren kalem dis is-yuku yonetim mesru dis abone-veritabani - var - 0 anahtar-yonetimi var var - 0 fatura-veritabani - var - 0 ham-arsiv var var - 6 olcum-deposu var var - 40 olcum-kuyrugu - var - 0 ornek-yonetimi var - var 14 sir-deposu var var - 0 yedek-deposu var var var 2 yaricap 6 8 2 ag duzeyinde erisilebilir kalem (izinden bagimsiz), izin yaricabi 9: dis ag yuzeyi 11/18, izinle kesisim 6 is-yuku ag yuzeyi 13/18, izinle kesisim 8 yonetim ag yuzeyi 7/18, izinle kesisim 2
Dokuz kalemlik izin yarıçabı üç ayrı sayıya bölünüyor: dışarıdan altı, iş yükü ağından sekiz, yönetim ağından iki. Aynı sızan kimlik, aynı yetkiler, üç farklı yarıçap. Yarıçap bir kimliğin özelliği değil, bir kimlik ile bir konumun çiftidir.
Alt blok iki katmanın birbirinden ne kadar bağımsız olduğunu gösteriyor. Dış konumdan ağ düzeyinde on bir kaleme erişilebilir, ama sızan kimliğin izni bunların yalnız altısını kapsar. İş yükü ağında ağ yüzeyi on üç, kesişim sekizdir. Ağ katmanı tek başına bir sınır değildir; izin katmanı tek başına da değildir. Ölçülen şey ikisinin kesişimidir.
Tablonun en keskin satırı ornek-yonetimidir. O kalem iş yükü ağından erişilemez ama dışarıdan
erişilebilir — yani sızan kimlik ağın içinden kullanıldığında ona ulaşılamaz, dışından
kullanıldığında ulaşılır. abone-veritabani ve fatura-veritabani bunun tersidir. İki konumun
yarıçapları alt küme ilişkisinde değildir; biri ötekinden yalnız daha büyük ya da küçük olmaz.
Özel Uç Noktanın Kapattığı Yol
Üç denetim aynı grafikte koşturuluyor. Her biri bir kalem kümesinin genel ucunu kapatır ve bedeli o kalemlerden geçen meşru dış erişimdir.
// bulut/kosum2.mjs — uc denetim: hangi kalemin genel ucu kapaniyor, yaricap konuma gore ne oluyor import { ERISIM, KALEM, KONUM, yaricap } from './ag.mjs'; const kume = (f) => new Set(KALEM.filter(f).map((k) => k.ad)); const DENETIM = [ ['denetim yok', new Set()], ['mesru dis erisimi olmayan kalem ozel uca', kume((k) => k.disIs === 0)], ['gunde 50 altinda dis erisimli kalem de', kume((k) => k.disIs < 50)], ['yalniz yonetim ucu kapanir', kume((k) => k.ad === 'ornek-yonetimi')], ]; 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 A = [-42, 8, 7, 9, 10, 14]; yaz(A, 'denetim', 'kapali', ...KONUM, 'duran dis is'); for (const [ad, kapali] of DENETIM) yaz(A, ad, kapali.size, ...KONUM.map((k) => yaricap('hesap-toplayici', k, kapali)), KALEM.filter((k) => kapali.has(k.ad)).reduce((a, k) => a + k.disIs, 0)); console.log('\nen genis yaricap (10 kimligin hepsi taranir):'); const B = [-42, 8, 9, 10]; yaz(B, 'denetim', ...KONUM); for (const [ad, kapali] of DENETIM) yaz(B, ad, ...KONUM.map((k) => Math.max(...Object.keys(ERISIM).map((s) => yaricap(s, k, kapali)))));
denetim kapali dis is-yuku yonetim duran dis is denetim yok 0 6 8 2 0 mesru dis erisimi olmayan kalem ozel uca 10 4 8 2 0 gunde 50 altinda dis erisimli kalem de 16 0 8 2 101 yalniz yonetim ucu kapanir 1 5 8 2 14 en genis yaricap (10 kimligin hepsi taranir): denetim dis is-yuku yonetim denetim yok 6 8 3 mesru dis erisimi olmayan kalem ozel uca 4 8 3 gunde 50 altinda dis erisimli kalem de 2 8 3 yalniz yonetim ucu kapanir 5 8 3
İlk denetim bedelsizdir. On sekiz kalemin onu hiç meşru dış erişim almıyor; genel uçları kapatmak
dış yarıçabı altıdan dörde indiriyor ve günde sıfır meşru işi durduruyor. Düşen iki kalem
sir-deposu ile anahtar-yonetimidir — önceki dersin yürüyüşünde üçüncü adımda görünen iki
kalem. Yürüyüşün en derin noktası, ağ katmanında en ucuz kapatılan noktadır.
İkinci denetim eşiği günde elli dış erişime çekiyor. Kapanan kalem sayısı on altıya, dış yarıçap
sıfıra iniyor; bedeli günde yüz bir dış erişimdir. Bunların çoğu olcum-deposuna saha ekiplerinin
doğrudan yüklemesidir (kırk) ve rapor deposundan çekilen otuz erişimdir. Dış yarıçabı dörtten
sıfıra indirmenin bedeli, ilk denetimin bedelinin yüz bir katıdır — çünkü ilk denetim bedelsizdi.
Üçüncü denetim tek bir kalemi hedefliyor. Yönetim ucunu kapatmak dış yarıçabı altıdan beşe indirir ve günde on dört dış erişimi durdurur. Kalem başına bedeli en yüksek denetim budur.
Otuz Çiftin Tamamı
Tek bir sızan kimlik bir örnektir. Grafiğin bütünü on kimlik ile üç konumun otuz çiftidir.
// bulut/kosum3.mjs — (kimlik, konum) cifti basina yaricap: bedelsiz denetim once ve sonra import { ERISIM, KALEM, KONUM, yaricap } from './ag.mjs'; const bedelsiz = new Set(KALEM.filter((k) => k.disIs === 0).map((k) => k.ad)); 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 A = [-19, 6, 9, 9, 3, 6, 9, 9]; console.log(''.padEnd(19) + 'denetim yok'.padStart(24) + 'bedelsiz denetimden sonra'.padStart(27)); yaz(A, 'kimlik', ...KONUM, '', ...KONUM); for (const s of Object.keys(ERISIM)) yaz(A, s, ...KONUM.map((k) => yaricap(s, k)), '', ...KONUM.map((k) => yaricap(s, k, bedelsiz))); const cift = (kapali) => Object.keys(ERISIM).flatMap((s) => KONUM.map((k) => yaricap(s, k, kapali))); const on = cift(new Set()), son = cift(bedelsiz); console.log(`\n30 (kimlik, konum) cifti; toplam yaricap ${on.reduce((a, x) => a + x, 0)} -> ` + `${son.reduce((a, x) => a + x, 0)}, yaricabi 5'i asan cift ` + `${on.filter((x) => x > 5).length} -> ${son.filter((x) => x > 5).length}`); console.log(`en genis yaricap ${Math.max(...on)} -> ${Math.max(...son)}; ` + `bedeli gunde 0 mesru dis erisim`);
denetim yok bedelsiz denetimden sonra kimlik dis is-yuku yonetim dis is-yuku yonetim hesap-toplayici 6 8 2 4 8 2 hesap-dogrulayici 6 8 2 4 8 2 hesap-portal 3 7 2 2 7 2 hesap-rapor 2 2 3 2 2 3 rol-fatura 2 5 2 1 5 2 rol-arsiv 6 7 2 4 7 2 rol-yedek 5 6 2 3 6 2 rol-dagitim 4 2 3 2 2 3 rol-gunluk 0 1 2 0 1 2 rol-yonetim 3 2 1 1 2 1 30 (kimlik, konum) cifti; toplam yaricap 106 -> 92, yaricabi 5'i asan cift 8 -> 5 en genis yaricap 8 -> 8; bedeli gunde 0 mesru dis erisim
Otuz çiftin toplam yarıçabı yüz altıdan doksan ikiye iniyor — yaklaşık yüzde on üç. Yarıçabı beşi aşan çift sekizden beşe düşüyor. Bunların hepsi bedelsiz denetimin sonucudur; günde tek bir meşru dış erişim durmuyor.
Tablo bir yandan da bir kimliğin nerede tehlikeli olduğunu okutuyor. rol-dagitim dışarıdan dört,
iş yükü ağından iki, yönetim ağından üç kaleme ulaşır — en geniş yarıçabı dış konumdadır ve
bedelsiz denetim onu dörtten ikiye indirir. hesap-portal bunun tersidir: dışarıdan üç, iş yükü
ağından yedi. Aynı denetim bir kimliğin en tehlikeli konumunu kapatabilir, bir başkasınınkine hiç
dokunmayabilir.
Son satır bunun sınırını veriyor: en geniş yarıçap sekizden sekize, yani hiç değişmiyor.
Yalıtımın Düşürmediği Yarıçap
İş yükü ağı sütunu dört satırda da sekiztir. Bu, bu dersin karar taşıyan sayısıdır: özel uç noktalar dış konumu kapatır, ağın içindeki konumu kapatmaz. Bir kalemin genel ucunu kaldırmak, o kaleme ağ içinden erişimi tanım gereği açık bırakır — özel uç noktanın yaptığı şey tam olarak budur.
Bunun sonucu şudur: sızan kimlik bilgisi bir iş yükü örneğinde kullanılıyorsa, bütün özel uç nokta çalışması yarıçabı sıfır kalem düşürür. Alt tablo aynı sonucu on kimliğin hepsi için doğruluyor — iş yükü ağında en geniş yarıçap dört denetimde de sekizdir, yönetim ağında üçtür. Yalnız dış sütun altıdan dörde, ikiye ve beşe iner.
Ağ yalıtımı bu yüzden bir kimlik denetimini değiştirmez, onu tamamlar. Dış konumdaki yarıçabı sıfırlamak, ağ içindeki yarıçabı sekizde bırakır; önceki dersin güven kenarını kaldırması ise her konumda birden etkiliydi. İki denetim aynı sayıyı düşürmez ve birinin ölçümü ötekinin yerine geçmez.
Ölçümün pratik karşılığı bir sıralamadır. Bedelsiz on kalem önce kapatılır: dış yarıçabı iki kalem düşürür, hiçbir meşru işi durdurmaz ve tartışma gerektirmez. Eşiği elliye çekmek dış yarıçabı sıfırlar ama günde yüz bir erişimi durdurur; bu artık bir ağ kararı değil, saha ekiplerinin ve rapor tüketicilerinin çalışma biçimine ilişkin bir karardır ve o ekiplerle konuşulmadan verilemez. İş yükü ağındaki sekiz kalem ise hiçbir ağ kararıyla düşmez — o sayıyı düşürmek için önceki dersin güven kenarlarına dönmek gerekir.
Bir yanlış sonuç bu tablodan özellikle çıkarılmamalıdır: dış yarıçabın sıfırlanması sızmanın imkânsızlaştığı anlamına gelmez. Sıfır olan şey, kimlik bilgisinin dışarıdan kullanılması durumundaki yarıçaptır. Aynı kimlik bilgisi ağ içindeki bir iş yüküne ulaşan bir yolla kullanılırsa yarıçap yeniden sekizdir ve bu geçiş modelde bir konum değişiminden ibarettir.
Özet
- Gerçek yarıçap izin yürüyüşü ile ağ yolunun kesişimidir. Aynı 9 kalemlik yürüyüş dışarıdan 6, iş yükü ağından 8, yönetim ağından 2 kaleme iner; yarıçap kimliğin değil, kimlik ile konumun çiftinin özelliğidir.
- İki konumun yarıçapları alt küme ilişkisinde değildir:
ornek-yonetimiyalnız dışarıdan,abone-veritabaniyalnız iş yükü ağından erişilebilir. - Meşru dış erişimi olmayan 10 kalemi özel uca almak dış yarıçabı 6’dan 4’e indirir ve günde 0
meşru işi durdurur. Düşen iki kalem yürüyüşün en derin adımındaki
sir-deposuveanahtar-yonetimidir. - Eşiği günde 50 dış erişime çekmek dış yarıçabı sıfırlar; bedeli günde 101 meşru dış erişimdir. Yönetim ucunu tek başına kapatmak yarıçabı 1 kalem düşürür ve günde 14 erişimi durdurur.
- 30
(kimlik, konum)çiftinin toplam yarıçabı bedelsiz denetimle 106’dan 92’ye, yarıçabı 5’i aşan çift 8’den 5’e iner; en geniş yarıçap 8’de kalır. - İş yükü ağı sütunu dört denetimde de 8’dir. Özel uç nokta dış konumu kapatır, ağ içindeki konumu kapatmaz; sızan kimlik bir iş yükü örneğinde kullanılıyorsa bu çalışmanın yarıçapa etkisi sıfırdır.
Sonraki Adım
Bu derste ağ yolu, bir kaleme ulaşmanın önkoşulu olarak ele alındı: yol kapalıysa izin işe
yaramıyordu. Ama listedeki bazı kalemlerin dış yolu bilerek açıktır — portal-varlik-deposu günde
sekiz bin altı yüz meşru dış erişim alır ve kapatılamaz. O kalem için soru yol değil, izin
kümesidir: dışarıdan gelen istek hangi kimlikle karşılanıyor ve hiçbir kimlik sunmayan bir istek
ne okuyabiliyor. Sonraki ders depolama kalemlerinin izin kümesini tarıyor, genel erişime açık
kalemi sayıyor ve o kalemden okunabilen veri türünü ölçüyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.