İçeriğe geç
academia.sh

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ğ) ve yonetim (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, dis konumunun 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-yonetimi yalnız dışarıdan, abone-veritabani yalnı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-deposu ve anahtar-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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat