İçeriğe geç
academia.sh

Ders 14 / 21

Dizin Servisleri

Merkezî kimlik deposunun güven kökü olarak ölçülmesi: 16 sistemin 13'ünün tek depoya bağlı olması, kökten girişe uzanan zincirin bağlanma kipine göre 9, 8 ve 2 kalem tutması, 12 saatlik kesintide 13 sistemde 609 hesap girişinin durması, çoğaltmanın üçüncü kopyada hiçbir yeni sistem kurtarmaması ve bütünlük kırıldığında 646 kalemin elle yenilenmesi.

İçindekiler

Önceki konu bir açık anahtarın kime ait olduğunu bir zincire bağladı: sertifika, ara otorite, kök. Zincir sayıldı ve kökün kırılması durumunda düşen kalem çıkarıldı. Kapanışta kalan soru şuydu — anahtarın sahibi bir ada bağlandı, ama kurumun içinde o adın kim olduğu, hangi ekipte durduğu, hangi sisteme girebildiği ve bunun binlerce makinede nasıl dayatıldığı hiç sorulmadı. Bu konu o soruyu kurum ölçeğinde ele alır ve aynı üç sütunla ölçer.

İlk mekanizma en alttakidir: kurum, kimin var olduğunu nereden bilir. Her sistem kendi hesap listesini tutarsa bir kişinin işe girmesi kaç sisteme kayıt açmak, ayrılması kaç kayıt kapatmak demektir ve kapatılmayan kayıt kimsenin göremediği bir açık bırakır. Bu yükü bir yere toplayan mekanizma dizin servisidir (directory service): kullanıcı, aygıt ve hizmet hesaplarını tek bir ağaçta tutan, sorgulanabilir merkezî kimlik deposu. Bu dersin ölçtüğü şey dizinin ne yaptığı değil, kaç şeyin ona dayandığıdır.

Merkezî Depo Bir Kök Olarak

KK1: merkezî kimlik deposu bir güven köküdür; ona bağlı her sistem, deponun döndürdüğü kaydın doğru olduğunu baştan varsayar ve kendi başına sınamaz. KK2: kökten kullanıma uzanan bir kalem zinciri vardır; zincirdeki kalemlerin hepsi aynı anda doğru olmalıdır, biri bozuksa giriş ya durur ya yanlış sonuç verir. KK3: çoğaltma kökün erişilebilirliğini çoğaltır, doğruluğunu çoğaltmaz — kopya sayısı kesinti süresini kısaltır, bütünlük kırılmasının etkisini kısaltmaz. KK4: kökün dışında kalan sistem, kökün kesintisinden de kurtulur, denetiminden de.

Bu kursun üç sütunu bu konuda da aynıdır: güven kökü adlandırılır, kökten kullanıma kaç kalem aynı anda doğru olmalı sayılır, kök kırılırsa kaç kalem düşer ve yenilemenin ne tuttuğu yazılır. Dizinin sorgu sözdizimi, ağaç şeması ve çoğaltma protokolü burada ölçülmez; ölçülen, bu üç sayıdır.

On Altı Sistem, Tek Depo

Aşağıdaki envanter bir modeldir: kurgu bölgesel ölçüm ağını işleten kurumun sistemleri ve her birinin merkezî depoya bağlanma biçimi. Gerçek bir kurum, gerçek bir dizin ürünü ya da gerçek bir hesap yoktur.

// kimlik/dizin.mjs — kurgu bolgesel olcum agindaki sistemlerin merkezi kimlik deposuna
// baglanma bicimi (model): gercek bir kurum, gercek bir dizin urunu ya da gercek bir hesap yok.
// Rastgelelik yok.

// KK1: merkezi kimlik deposu bir guven kokudur; ona bagli her sistem, deponun tuttugu
// kaydin dogru oldugunu bastan varsayar.
// Sutunlar: kip = baglanma bicimi (dizin: her giriste sorar; onbellek: son basarili
// dogrulamayi bir sure saklar; yerel: kendi hesap deposunu tutar), hesap = o sistemde
// giris yapan hesap sayisi, basvuru = sistemin yapilandirmasinda tanimli dizin kopyasi
// sayisi, sir = sistemin dizinde duran kendi hizmet hesabi sirri sayisi.
export const SISTEM = `
  okuma-toplayici      dizin      34   2   1
  dogrulayici          dizin      12   2   1
  faturalama           dizin      48   1   2
  is-emri              dizin      61   1   1
  saha-mobil-uc        onbellek  140   2   1
  sube-is-istasyonu    onbellek   96   2   1
  depo-terminali       onbellek   18   1   1
  bakim-plani          dizin      22   1   1
  olcum-arsivi         dizin       9   2   1
  rapor-portali        dizin      55   1   1
  ag-anahtari          dizin      14   2   0
  vpn-ucu              dizin      27   2   0
  yazici-havuzu        onbellek   73   1   0
  eski-scada-konsolu   yerel       6   0   0
  bellenim-sunucusu    yerel       4   0   0
  yedekleme-konsolu    yerel       3   0   0`
  .trim().split("\n").map((r) => {
    const p = r.trim().split(/\s+/);
    return { ad: p[0], kip: p[1], hesap: +p[2], basvuru: +p[3], sir: +p[4] };
  });

// KK2: koke bagli her kullanim, kokten kullanima uzanan bir kalem zinciri kurar; zincirdeki
// kalemlerin hepsi ayni anda dogru olmali. Her kalem, hangi kiplerde zorunlu oldugunu yazar.
export const ZINCIR = [
  { kalem: "hesap kaydi var",        kip: ["dizin", "onbellek"] },
  { kalem: "hesap etkin",            kip: ["dizin", "onbellek"] },
  { kalem: "parola dogrulayicisi",   kip: ["dizin", "onbellek"] },
  { kalem: "grup uyeligi",           kip: ["dizin", "onbellek"] },
  { kalem: "oznitelik eslemesi",     kip: ["dizin", "onbellek"] },
  { kalem: "dizine anlik baglanti",  kip: ["dizin"] },
  { kalem: "kanal korumasi",         kip: ["dizin", "onbellek"] },
  { kalem: "ad cozumleme",           kip: ["dizin", "onbellek"] },
  { kalem: "saat esitligi",          kip: ["dizin", "onbellek"] },
  { kalem: "yerel hesap deposu",     kip: ["yerel"] },
  { kalem: "yerel parola kaydi",     kip: ["yerel"] },
];

export const KIP = ["dizin", "onbellek", "yerel"];
export const zincirUzunlugu = (kip) => ZINCIR.filter((z) => z.kip.includes(kip)).length;
// kimlik/sayim.mjs — merkezi kimlik deposu bir guven koku olarak sayilir: zincir kac kalem,
// depo dusunce kac sistemde giris durur, cogaltma kac sistemi kurtarir, kok kirilirsa
// yenileme kac kalem tutar.
import { SISTEM, ZINCIR, KIP, zincirUzunlugu } from "./dizin.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 = (f, s = SISTEM) => s.reduce((a, x) => a + f(x), 0);
const bagli = SISTEM.filter((s) => s.kip !== "yerel");

console.log(`${SISTEM.length} sistem, ${topla((s) => s.hesap)} hesap girisi, ` +
  `${bagli.length} sistem tek depoya bagli, ${SISTEM.length - bagli.length} sistem kendi deposunda`);

const A = [-10, 8, 8, 8, 8, 6];
console.log("\n1. baglanma kipine gore zincir uzunlugu ve yuk");
yaz(A, "kip", "sistem", "hesap", "zincir", "kalem", "sir");
for (const k of KIP) {
  const s = SISTEM.filter((x) => x.kip === k);
  yaz(A, k, s.length, topla((x) => x.hesap, s), zincirUzunlugu(k),
    s.length * zincirUzunlugu(k), topla((x) => x.sir, s));
}
yaz(A, "toplam", SISTEM.length, topla((s) => s.hesap), "-",
  topla((s) => zincirUzunlugu(s.kip)), topla((s) => s.sir));

const B = [-10, 11, 13, 11, 12];
console.log("\n2. depo erisilemez oldugunda (tek kopya)");
yaz(B, "kesinti", "duran sis", "duran hesap", "acik sis", "acik hesap");
for (const saat of [1, 4, 12, 48]) {
  const durdu = SISTEM.filter((s) => s.kip === "dizin" ||
    (s.kip === "onbellek" && saat > 8));
  yaz(B, `${saat} saat`, durdu.length, topla((s) => s.hesap, durdu),
    SISTEM.length - durdu.length, topla((s) => s.hesap) - topla((s) => s.hesap, durdu));
}

const C = [-10, 11, 11, 13];
console.log("\n3. cogaltma 12 saatlik kesintide kac sistemi kurtariyor");
yaz(C, "kopya", "kurtulan", "duran", "duran hesap");
for (const kopya of [1, 2, 3]) {
  const kurtulan = SISTEM.filter((s) => s.kip !== "yerel" && s.basvuru >= 2 && kopya >= 2);
  const duran = bagli.filter((s) => !kurtulan.includes(s));
  yaz(C, `${kopya}`, kurtulan.length, duran.length, topla((s) => s.hesap, duran));
}

const D = [-24, 8, 8, 20];
console.log("\n4. kok kirilirsa (depo butunlugu bozulursa) dusen kalem ve yenileme");
const kayit = topla((s) => s.hesap, bagli);
const satir = [
  ["dizine bagli sistem", bagli.length, bagli.length, "yeniden eslenir"],
  ["hesap girisi", kayit, kayit, "parola sifirlanir"],
  ["hizmet hesabi sirri", topla((s) => s.sir), topla((s) => s.sir), "elle degistirilir"],
  ["grup uyeligi denetimi", bagli.length, bagli.length, "elle dogrulanir"],
  ["yerel depolu sistem", SISTEM.length - bagli.length, 0, "etkilenmez"],
];
yaz(D, "kalem", "sayi", "dusen", "yenileme");
for (const s of satir) yaz(D, ...s);
console.log(`toplam elle yenilenen kalem ${satir.reduce((a, s) => a + s[2], 0)}, ` +
  `zincir kalem tanimi ${ZINCIR.length}`);
16 sistem, 622 hesap girisi, 13 sistem tek depoya bagli, 3 sistem kendi deposunda

1. baglanma kipine gore zincir uzunlugu ve yuk
kip         sistem   hesap  zincir   kalem   sir
dizin            9     282       9      81     8
onbellek         4     327       8      32     3
yerel            3      13       2       6     0
toplam          16     622       -     119    11

2. depo erisilemez oldugunda (tek kopya)
kesinti     duran sis  duran hesap   acik sis  acik hesap
1 saat              9          282          7         340
4 saat              9          282          7         340
12 saat            13          609          3          13
48 saat            13          609          3          13

3. cogaltma 12 saatlik kesintide kac sistemi kurtariyor
kopya        kurtulan      duran  duran hesap
1                   0         13          609
2                   7          6          277
3                   7          6          277

4. kok kirilirsa (depo butunlugu bozulursa) dusen kalem ve yenileme
kalem                       sayi   dusen            yenileme
dizine bagli sistem           13      13     yeniden eslenir
hesap girisi                 609     609   parola sifirlanir
hizmet hesabi sirri           11      11   elle degistirilir
grup uyeligi denetimi         13      13     elle dogrulanir
yerel depolu sistem            3       0          etkilenmez
toplam elle yenilenen kalem 646, zincir kalem tanimi 11

Sayılar ölçüm sınıfındadır; girdileri KK1–KK4 ile envanterdeki değerlerdir.

Zincir Kaç Kalem

Birinci tablo zincir uzunluğunu bağlanma kipine göre ayırır. Her girişte depoya soran bir sistemde zincir dokuz kalemdir: kaydın var olması, etkin olması, parola doğrulayıcısının tutması, grup üyeliğinin doğru olması, özniteliklerin sistemin beklediği alanlara eşlenmesi, depoya anlık bağlantı, kanalın korunması, adın çözülmesi ve iki taraf saatinin yeterince yakın olması. Bunların hiçbiri “güvenlik özelliği” değildir; dokuzunun dokuzu da girişin çalışması için gereken sıradan kalemlerdir ve biri bozulduğunda giriş durur.

Önbellekten doğrulayan sistemde zincir sekize iner, çünkü anlık bağlantı kalemi düşer. Bu tek kalemlik fark, ikinci tablodaki bütün farkı üretir. Kendi deposunu tutan sistemde zincir ikidir — yerel hesap listesi ve yerel parola kaydı. Toplam kalem sayısı on altı sistem için 119’dur; bu, kurumda “bir kişinin bir sisteme girebilmesi” olayının aynı anda doğru olmasını gerektirdiği bağımsız koşul sayısıdır.

İki kalemlik zincir kısa görünür ama KK4’ün ikinci yarısı buradadır. Yerel depolu üç sistemin altı, dört ve üç hesabı merkezî hiçbir kayda bağlı değildir: bir kişi ayrıldığında merkezî kayıt kapatılır, bu üç sistemdeki hesap açık kalır. Kısa zincir, kesintiye dayanıklılık ile denetimsizliği birlikte satın alır.

Zincirin Deponun Dışında Kalan Kalemleri

Dokuz kalemin hepsi depoda durmaz ve bu ayrım kökün sınırını çizer. Beşi deponun içindedir: kaydın varlığı, etkinliği, parola doğrulayıcısı, grup üyeliği ve öznitelik eşlemesi. Kalan dördü depoda değildir — anlık bağlantı ağın, kanal koruması sertifikanın, ad çözümleme ad servisinin, saat eşitliği ise zaman kaynağının sorumluluğundadır. Önbellekten doğrulayan sistemde bu oran beşe üçtür.

Bu dört kalemin her biri kendi kökünü taşır. Kanal koruması, önceki konuda ölçülen güven zincirine dayanır: dizine giden bağlantının şifrelenmesi tek başına yetmez, karşı ucun gerçekten dizin olduğu bir sertifika zinciriyle kanıtlanmalıdır. Doğrulanmayan bir kanalda depo doğru kaydı tutsa bile sorgunun yanıtını başkası verebilir. Ad çözümleme aynı türden bir bağımlılıktır: sistem, deponun adını bir adrese çevirmek için başka bir servise sorar ve o servisin yanıtını sınamaz.

Saat eşitliği listedeki en sessiz kalemdir ve bir sonraki dersin tamamı onun üzerine kurulur. Süreli bir kanıtın geçerliliği iki tarafın saatinin yeterince yakın olmasına bağlıdır; saatler ayrıldığında giriş, hiçbir hesap değişmemiş olmasına rağmen durur. Bir güven kökü, kendi dışındaki kalemlerin sayısı kadar kırılgandır: bu modelde depo kusursuz çalışırken bile girişi durdurabilecek dört ayrı kalem vardır ve bunların hiçbiri dizin yöneticisinin denetiminde değildir.

Depo Düştüğünde

İkinci tablo kesinti süresine göre duran sistemi sayar. İlk saatte dokuz sistem ve 282 hesap girişi durur; önbellekten doğrulayan dört sistem çalışmaya devam eder ve 327 hesap etkilenmez. Sekizinci saatten sonra önbellek penceresi kapanır: duran sistem sayısı 13’e, duran hesap sayısı 609’a çıkar. Açık kalan üç sistemin toplam 13 hesabı vardır.

Buradaki asıl sayı 13 değil, ikisi arasındaki farktır. Kesinti bir saat sürdüğünde etkilenen hesabın oranı 282/622, on iki saat sürdüğünde 609/622’dir. Önbellek penceresi kurumun kesinti dayanıklılığını doğrudan belirler ve bu pencere bir güvenlik ayarıdır: pencere uzadıkça devre dışı bırakılmış bir hesabın çalışmaya devam ettiği süre de uzar. Aynı sayı iki yöne birden çalışır — sekiz saat hem kesintide kurtarılan süredir hem de kapatılmış bir hesabın geçerli kaldığı süredir.

Çoğaltmanın Kurtardığı ve Kurtarmadığı

Üçüncü tablo KK3’ün ilk yarısını sayıya çevirir. Tek kopya varken on iki saatlik kesintide bağlı 13 sistemin hiçbiri kurtulmaz. İkinci kopya eklendiğinde yedi sistem kurtulur, altısı durur ve duran hesap 609’dan 277’ye iner. Üçüncü kopya eklendiğinde tablo değişmez: yine yedi kurtulur, yine altı durur.

Üçüncü kopyanın hiçbir şey getirmemesinin nedeni depoda değil, sistemlerin yapılandırmasındadır. Altı sistemin yapılandırmasında tek bir başvuru adresi tanımlıdır; ikinci kopya ağda dursa bile o sistemler ona sormaz. Çoğaltma bir depo özelliğidir, dayanıklılık ise istemci yapılandırmasının özelliğidir; ikincisi yazılmadan birincisi ölçülemez. Kurtarılan sistem sayısını belirleyen kalem, kopya sayısı değil, kaç sistemin ikinci başvuruyu tanıdığıdır.

Kök Kırılırsa Yenileme

Dördüncü tablo KK3’ün ikinci yarısıdır. Kesinti ile bütünlük kırılması farklı olaylardır: kesinti geçicidir ve giderildiğinde geride bir şey bırakmaz, bütünlük kırılması ise kalıcıdır. Deponun kayıtları değiştirilebildiyse, kimin hangi gruba üye olduğu ve hangi parola doğrulayıcısının geçerli olduğu artık bilinmez.

Yenileme faturası dört kalemden oluşur: 13 sistemin eşlemesinin yeniden kurulması, 609 hesap girişinin parolasının sıfırlanması, 11 hizmet hesabı sırrının elle değiştirilmesi ve 13 sistemin grup üyeliklerinin elle doğrulanması. Toplam 646 kalem. Bunların 609’u kişilere dokunur ve paralel yapılabilir; 11’i hizmet hesabı sırrıdır ve her biri bir sistemin çalışmasını durdurma riski taşıdığı için sırayla yapılır. Yenileme penceresinin uzunluğunu belirleyen sayı 609 değil, 11’dir.

Faturanın büyüklüğünden daha belirleyici olan, faturanın ne zaman kesileceğidir. Bütünlük kırılması bir kesinti gibi kendini göstermez: depo çalışmaya devam eder, girişler başarılı olur ve hiçbir sistem hata vermez. Kırılmanın bilinmesi, kayıtların bağımsız bir kopyayla karşılaştırılmasına bağlıdır; böyle bir karşılaştırma yoksa 646 kalemlik yenileme kararı alınamaz, çünkü yenilemeyi gerektiren olayın olduğu bilinmez. Kök kırılmasının maliyeti yenilemede değil, kırılmanın fark edilmediği süredeki her girişte birikir.

Yerel depolu üç sistem bu tabloda sıfır düşer. Bu, o üç sistemin güvenli olduğu anlamına gelmez; kendi kökleri vardır ve o kök bu ölçümün dışındadır. Bir kökün dışında kalmak, kırılmadan kurtulmak değil, ayrı bir kırılma noktası eklemektir.

Özet

  • Merkezî kimlik deposu bir güven köküdür: 16 sistemin 13’ü ve 622 hesap girişinin 609’u tek depoya bağlıdır.
  • Kökten girişe uzanan zincir bağlanma kipine göre 9, 8 ve 2 kalemdir; toplam 119 kalemin hepsi aynı anda doğru olmalıdır.
  • Kesintide duran sistem sayısı önbellek penceresiyle belirlenir: ilk saatte 9 sistem ve 282 hesap, on ikinci saatte 13 sistem ve 609 hesap durur.
  • Çoğaltma erişilebilirliği çoğaltır, doğruluğu çoğaltmaz; üçüncü kopya hiçbir yeni sistem kurtarmaz, çünkü 6 sistemin yapılandırmasında tek başvuru tanımlıdır.
  • Bütünlük kırılırsa 646 kalem elle yenilenir; pencerenin uzunluğunu 609 parola değil, sırayla değiştirilen 11 hizmet hesabı sırrı belirler.

Sonraki Adım

Bu ders deponun kimin var olduğunu söylediğini saydı, ama bir kaydın var olması bir kişinin o an gerçekten orada olduğunu göstermez. Her girişte deponun sorgulanması ikinci tabloda görülen bağımlılığı üretir; kurumsal ağlarda bunun yerine tek bir doğrulamadan süreli bir kanıt üretilir ve sonraki her erişimde parola yerine o kanıt sunulur. Kanıtı üreten servisin kendi anahtarı ise yeni bir köktür. Sonraki ders bilet tabanlı kimlik doğrulamayı bu eksende ölçer: akış kaç adım, hangi adımda hangi iddia kanıtlanıyor, bilet veren servisin anahtarı ele geçerse kaç kalem düşer ve o anahtarı yenilemek kaç adım tutar.

İ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