Ders 17 / 20
Kimlik Doğrulama Yöntemleri
Kişisel ve kurumsal mod güven kökü cinsinden ayrılır: tek paylaşılan sır bir ağda on iki kalemin tamamına erişim veriyor ve değiştirilmesi dört bin beş yüz kırk aygıta dokunmak demek, kişi başına kimlik ortalama iki buçuk kaleme iniyor ve iptal tek adım. Kurumsal mod yedi iddianın altısını kanıta bağlıyor ama bir iddia ekliyor ve onu varsayılan yapılandırmada doğrulamıyor.
İçindekiler
Bir önceki ders ortak sırrın uzunluğunu ölçtü ve çevrimdışı denemeye karşı direncini hesapladı. Sırrın kime ait olduğu hiç sorulmadı. Dört kuşağın hepsinde tek bir dizi vardı; o dizi sayaç uçlarında, şube dizüstülerinde ve saha terminallerinde aynıydı.
Bu ayrım kablosuz kimlik doğrulamanın iki modunu birbirinden ayıran şeydir. Kişisel modda güven kökü tek bir paylaşılan sırdır: onu bilen ağdadır. Kurumsal modda güven kökü özne başına ayrı bir kimliktir ve doğrulamayı merkezî bir kimlik doğrulama sunucusu yapar. Bu ders ikisini üç sütunda ölçer: bir güven kökü ele geçtiğinde kaç kaleme erişiliyor, iptal etmek kaç adım sürüyor, ayrımın bedeli kaç altyapı kalemi.
- KG7. Kalem, kablosuz ağa bağlandıktan sonra ulaşılabilen bir kaynaktır: bir servis, bir depo, bir yönetim arayüzü. Kurgu bölgesel ölçüm ağında on iki kalem tanımlıdır.
- KG8. Kişisel modda bir ağın tek ortak sırrı vardır. O ağa giren her özne ağın bütün kalemlerine ulaşır; kalem ayrımı ancak ağı bölerek, yani ayrı ağ ve ayrı sır açarak yapılır.
- KG9. Kurumsal modda yetki kimliğe bağlanır; bir özne yalnız rolünün meşru kalemlerine ulaşır. Rollerin kalem eşlemesi model kararıdır.
- KG10. Aygıt başına elle yapılandırma dört dakikadır ve yıllık personel devri yüzde on dörttür; ikisi de kurgu model sabitidir.
- KG11. Ek altyapı kalemlerinin yıllık bakım dokunuşu model değeridir: o kalemin yılda kaç kez elle değiştirildiği ya da yenilendiği.
- KG12. Kimlik doğrulama sunucusunun iç işleyişi, belirteç mekaniği ve kimlik federasyonu bu dersin dışındadır; ölçülen şey yalnız güven kökünün nerede durduğudur.
Bir Sırrın Açtığı Kalem
Kişisel modun ölçüsü tek sayıdır: bir sır ele geçtiğinde kaç kaleme ulaşılıyor. O sayıyı küçültmenin tek yolu ağı bölmektir, ve her bölme yeni bir sır demektir.
// mod.mjs — kisisel ve kurumsal modun guven koku modeli. Kurgu bolgesel olcum agi; // gercek ag adi, gercek konum ve gercek kimlik yazilmiyor. export const KALEM = ['olcum-deposu', 'toplayici-girisi', 'is-emri-servisi', 'abone-kayit', 'fatura-vt', 'yapilandirma', 'yonetim-arayuzu', 'pano-yayini', 'yazici-kuyrugu', 'sube-dosya', 'saha-harita', 'guncelleme-deposu']; // [rol, ozne sayisi, aygit sayisi, mesru olarak erisilmesi gereken kalem] export const ROL = [ ['saha-teknisyeni', 43, 183, ['is-emri-servisi', 'saha-harita', 'abone-kayit']], ['sube-personeli', 210, 210, ['is-emri-servisi', 'abone-kayit', 'fatura-vt', 'sube-dosya', 'yazici-kuyrugu']], ['bakim', 9, 9, ['yapilandirma', 'yonetim-arayuzu', 'guncelleme-deposu', 'olcum-deposu']], ['pano', 0, 12, ['pano-yayini']], ['barkod-yazicisi', 0, 26, ['yazici-kuyrugu']], ['sayac-ucu', 0, 4100, ['toplayici-girisi']], ]; // Kisisel modda bir agin bir tek ortak sirri vardir; o aga giren her ozne agin butun // kalemlerine ulasir. Ag basina rol dagilimi bir tasarim karari olarak verilir. export const PLAN = [ ['tek-ag', [['saha-teknisyeni', 'sube-personeli', 'bakim', 'pano', 'barkod-yazicisi', 'sayac-ucu']]], ['uc-ag', [['saha-teknisyeni', 'sube-personeli'], ['bakim', 'pano', 'barkod-yazicisi'], ['sayac-ucu']]], ['rol-basina-ag', ROL.map(([r]) => [r])], ]; export const kalemleri = (roller) => [...new Set(roller.flatMap((r) => ROL.find(([a]) => a === r)[3]))]; export const aygitlari = (roller) => roller.reduce((s, r) => s + ROL.find(([a]) => a === r)[2], 0); // Kurumsal modun ek altyapi kalemleri ve her kalemin yillik bakim dokunusu (model). export const ALTYAPI = [ ['kimlik dogrulama sunucusu', 2], ['sunucu kimligi ve guven koku', 1], ['kimlik deposu baglantisi', 2], ['istemci profili dagitimi', 6], ['erisim noktasi paylasilan gizli degeri', 4], ['kimlik iptal listesi', 12], ['yedek dogrulama yolu', 2], ]; // Kurumsal modu destekleyen aygit siniflari (model karari). export const KURUMSAL_DESTEK = ['saha-teknisyeni', 'sube-personeli', 'bakim'];
// kosum1.mjs — bir sir sizdiginda erisilen kalem ve o sirri degistirmenin adim sayisi import { KALEM, ROL, PLAN, kalemleri, aygitlari } from './mod.mjs'; const AYGIT = ROL.reduce((s, [, , n]) => s + n, 0); const ELLE = 4; // aygit basina elle yapilandirma dakikasi (model sabiti) const E = [16, 8, 16, 14, 16, 14]; const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join(''); console.log(`kalem ${KALEM.length}, rol ${ROL.length}, aygit ${AYGIT}`); console.log(yaz(['kisisel mod plani', 'sir', 'en genis kalem', 'ort. kalem', 'en cok aygit', 'sir degisimi'])); for (const [ad, aglar] of PLAN) { const kalem = aglar.map((g) => kalemleri(g).length); const aygit = aglar.map((g) => aygitlari(g)); console.log(yaz([ad, aglar.length, Math.max(...kalem), (kalem.reduce((a, b) => a + b, 0) / aglar.length).toFixed(1), Math.max(...aygit), `${Math.max(...aygit) * ELLE} dk`])); } // Kurumsal mod: kimlik ozne basinadir, yetki kimlige baglidir. const kurumsal = ROL.map(([r, , , k]) => k.length); console.log(yaz(['kurumsal mod', ROL.reduce((s, [, o, a]) => s + (o || a), 0), Math.max(...kurumsal), (kurumsal.reduce((a, b) => a + b, 0) / ROL.length).toFixed(1), 1, `${ELLE} dk`]));
kalem 12, rol 6, aygit 4540 kisisel mod plani sir en genis kalem ort. kalem en cok aygit sir degisimi tek-ag 1 12 12.0 4540 18160 dk uc-ag 3 6 4.3 4100 16400 dk rol-basina-ag 6 5 2.5 4100 16400 dk kurumsal mod 4400 5 2.5 1 4 dk
Birinci satır kişisel modun en yalın biçimidir: tek ağ, tek sır, on iki kalem. Ele geçen bir sır ağın tamamını açar; kalemler arasında hiçbir ayrım yoktur, çünkü ayrımı yapacak bir kimlik yoktur.
Ağı bölmek işe yarıyor. Üç ağa çıkıldığında en geniş sır on iki yerine altı kalem açıyor, ortalama dört virgül üçe iniyor. Rol başına ağ açıldığında ortalama iki virgül beş, yani kurumsal modla aynı değer elde ediliyor. Bu satır dersin ilk sürprizidir: kalem ayrımı için kurumsal mod gerekmiyor, ağı yeterince bölmek aynı ayrımı veriyor.
Fark son iki sütunda. Rol başına ağ altı ayrı yayın, altı ayrı sır ve her erişim noktasında altı ayrı yapılandırma demektir; bunların hiçbiri kalem sayısında görünmez. Asıl fark ise sır değişimi sütunudur. Kişisel modda bir sır değiştiğinde o ağdaki her aygıta dokunulur: en kalabalık ağ dört bin yüz aygıt taşıdığı için on altı bin dört yüz dakika, yaklaşık iki yüz yetmiş üç saat. Kurumsal modda değişen şey tek bir kimliktir ve dokunulan aygıt sayısı birdir.
Kurumsal modun sütununda görünen dört bin dört yüz sayısı bedelin kendisidir: yönetilecek kimlik sayısı bir sırdan dört bin dört yüze çıkıyor. Kalem ayrımı bedava değil; ayrımın bedeli kimlik yönetiminin ölçeğidir.
İptalin Adım Sayısı ve Eklenen İddia
İki modun asıl ayrıldığı yer bir öznenin çıkışıdır. Aşağıdaki koşum önce iddia tablosunu kuruyor, sonra ayrılan bir öznenin bedelini sayıyor.
// kosum2.mjs — iki modun iddia tablosu ve kurumsal modun bedeli import { ROL, ALTYAPI, KURUMSAL_DESTEK, kalemleri, aygitlari } from './mod.mjs'; const G = ['yok', 'zayif', 'var']; const IDDIA = [ ['baglanan taraf gizli degeri biliyor', [2, 2, 2]], ['baglanan taraf belirli bir oznedir', [0, 2, 2]], ['bu kimlik hala gecerli', [0, 2, 2]], ['erisim oznenin kalemiyle sinirli', [0, 2, 2]], ['karsi taraf kurumun kimlik sunucusu', [1, 0, 2]], ['ayrilan ozne kendiliginden disarida', [0, 2, 2]], ['oturum anahtari ozne basina ayri', [0, 2, 2]], ]; const BASLIK = ['kisisel', 'kurumsal (sunucu dogrulanmiyor)', 'kurumsal (guven koku sabit)']; const E = [38, 10, 34, 30]; const yaz = (h) => h.map((d, i) => String(d)[i ? 'padStart' : 'padEnd'](E[i])).join(''); console.log(yaz(['iddia', ...BASLIK])); for (const [ad, d] of IDDIA) console.log(yaz([ad, ...d.map((v) => G[v])])); const say = (i, v) => IDDIA.filter(([, d]) => d[i] === v).length; console.log(yaz(['kanitlanan / acik', ...BASLIK.map((_, i) => `${say(i, 2)} / ${say(i, 1) + say(i, 0)}`)])); // Ayrilan bir ozne: kisisel modda ag sirri, kurumsal modda tek kimlik degisir. const ELLE = 4, DEVIR = 0.14; // aygit basina dakika ve yillik personel devri (model) const OZNE = ROL.reduce((s, [, o]) => s + o, 0); const AG = [['saha-teknisyeni', 'sube-personeli'], ['bakim', 'pano', 'barkod-yazicisi'], ['sayac-ucu']]; const g = AG.find((x) => x.includes('saha-teknisyeni')); const dokunulan = aygitlari(g); console.log(`\nozne ${OZNE}, yillik ayrilma ${Math.round(OZNE * DEVIR)}`); console.log(`kisisel: 1 sir degisir -> ${dokunulan} aygit, ${dokunulan * ELLE} dk, ` + `${kalemleri(g).length} kalem yeniden acilir`); console.log(`kurumsal: 1 kimlik iptal -> 0 aygit, 0 dk, 0 kalem`); console.log(`yillik: kisisel ${Math.round(OZNE * DEVIR) * dokunulan * ELLE} dk, kurumsal 0 dk`); // Bedel: ek altyapi kalemi ve kurumsal modu destekleyemeyen aygitlar. const disarida = ROL.filter(([r]) => !KURUMSAL_DESTEK.includes(r)); console.log(`\nek altyapi kalemi ${ALTYAPI.length}, yillik bakim dokunusu ` + `${ALTYAPI.reduce((s, [, n]) => s + n, 0)}`); for (const [ad, n] of ALTYAPI) console.log(` ${ad.padEnd(38)}${String(n).padStart(3)}`); console.log(`kurumsal modu desteklemeyen sinif ${disarida.length}, aygit ` + `${disarida.reduce((s, [, , n]) => s + n, 0)} -> kisisel modda kalir`);
iddia kisisel kurumsal (sunucu dogrulanmiyor) kurumsal (guven koku sabit) baglanan taraf gizli degeri biliyor var var var baglanan taraf belirli bir oznedir yok var var bu kimlik hala gecerli yok var var erisim oznenin kalemiyle sinirli yok var var karsi taraf kurumun kimlik sunucusu zayif yok var ayrilan ozne kendiliginden disarida yok var var oturum anahtari ozne basina ayri yok var var kanitlanan / acik 1 / 6 6 / 1 7 / 0 ozne 262, yillik ayrilma 37 kisisel: 1 sir degisir -> 393 aygit, 1572 dk, 6 kalem yeniden acilir kurumsal: 1 kimlik iptal -> 0 aygit, 0 dk, 0 kalem yillik: kisisel 58164 dk, kurumsal 0 dk ek altyapi kalemi 7, yillik bakim dokunusu 29 kimlik dogrulama sunucusu 2 sunucu kimligi ve guven koku 1 kimlik deposu baglantisi 2 istemci profili dagitimi 6 erisim noktasi paylasilan gizli degeri 4 kimlik iptal listesi 12 yedek dogrulama yolu 2 kurumsal modu desteklemeyen sinif 3, aygit 4138 -> kisisel modda kalir
Kişisel mod yedi iddiadan birini kanıtlıyor: bağlanan tarafın gizli değeri bildiğini. Geri kalan altısının hiçbir karşılığı yoktur, çünkü sır kişiye değil ağa aittir. “Bu kimlik hâlâ geçerli” sorusunun kişisel modda bir yanıtı yoktur; sırrın geçerliliği vardır, kimliğin geçerliliği diye bir kavram yoktur.
Ayrılma satırı bunu paraya çeviriyor. İki yüz altmış iki öznenin yılda otuz yedisi ayrılıyor. Kişisel modda ayrılan her özne için o ağın sırrı değişmeli; ağdaki üç yüz doksan üç aygıta dokunulur, bin beş yüz yetmiş iki dakika harcanır ve altı kalem yeniden açılır. Yıllık toplam elli sekiz bin yüz altmış dört dakika, yaklaşık dokuz yüz yetmiş saat. Kurumsal modda aynı sayının karşılığı sıfırdır.
Uygulamada bu sayı ödenmez. Bin beş yüz yetmiş iki dakikayı otuz yedi kez harcamak yerine sır değiştirilmez; ayrılan öznenin bildiği dizi ağda kalmaya devam eder. Kişisel modun asıl zayıflığı budur — sır tek olduğu için değil, iptalinin bedeli ödenmeyecek kadar büyük olduğu için.
Model ayrıca bir kaynağı hiç saymıyor. Ayrılan özne yalnız aklında tuttuğu diziyi götürmez; sırrın bir kopyası bıraktığı her aygıtın yapılandırmasında da durur. Kaybolan bir saha terminali, sökülüp alınan bir sayaç ucu ya da elden çıkarılan bir pano ekranı aynı sonucu üretir ve hiçbiri personel devri sayısında görünmez. Kişisel modda aygıt kaybı ile personel ayrılması aynı olaydır, çünkü ikisi de aynı tek güven kökünü dışarı taşır. Kurumsal modda bunlar iki ayrı olaydır ve ikisinin de karşılığı tek bir kaydın iptalidir.
Eklenen İddia ve Ödenen Bedel
Orta sütun bu dersin asıl bulgusudur. Kurumsal mod altı iddiayı kanıta bağlıyor ama yeni bir iddia ekliyor: karşı tarafın kurumun kimlik doğrulama sunucusu olduğu. Kişisel modda bu iddia zayıf bir biçimde karşılanır — ortak sır iki tarafça da bilinir, sırrı bilen ağ ağın kendisi sayılır. Kurumsal modda istemci kimliğini merkezî bir sunucuya sunar ve o sunucunun kim olduğu ayrı bir sorudur.
İstemci, sunucunun kimliğini ve güven kökünü doğrulamıyorsa bu iddianın hiçbir kanıtı olmaz. Tablo bunu açıkça yazıyor: orta sütunda o satır boştur. Kurumsal mod, doğru yapılandırılmadığında kişisel modun tek kanıtını da kaybeder ve karşılığında kimliği sunulacak bir sunucu ekler. Güven kökü sabitlendiğinde yedi iddianın yedisi kanıta bağlanıyor; sabitlenmediğinde açık iddia sayısı bire iniyor ama açık kalan iddia en pahalısıdır. Bir sonraki ders o iddianın açık kalmasının ne demek olduğunu ölçecek.
Son bölüm bedeli sayıyor. Kurumsal mod yedi ek altyapı kalemi getiriyor ve bu kalemler yılda yirmi dokuz kez elle dokunuluyor. En sık dokunulan kalem kimlik iptal listesidir; en kritik olanı ise güven köküdür, çünkü yenilendiğinde her istemci profilinin de yenilenmesi gerekir.
Aygıt tarafı ise kararı sınırlıyor. Altı rolün üçü kurumsal modu destekliyor; kalan üç sınıf, yani dört bin yüz otuz sekiz aygıt, kişisel modda kalmak zorunda. Bunların çoğu sayaç ucu ve her biri tek bir kaleme, toplayıcı girişine bağlanıyor. Bu, kurumsal moda geçişin kısmi bir geçiş olduğu anlamına gelir: özneli roller kurumsal moda, öznesiz aygıtlar rol başına ayrılmış kişisel mod ağlarına gider. Ölçüm bu ayrımı destekliyor — dört bin yüz otuz sekiz aygıtın tamamı için ortalama açılan kalem sayısı zaten birdir.
Özet
- Kişisel modda tek ağ ve tek sır on iki kalemin tamamını açıyor; ağı rol başına bölmek ortalamayı 2,5 kaleme indiriyor ve kurumsal modla aynı ayrımı veriyor. Kalem ayrımı için kurumsal mod zorunlu değil.
- Ayrım bedava değil: kişisel modda bir sır değiştiğinde o ağdaki her aygıta dokunulur (en kalabalık ağda 16.400 dakika), kurumsal modda tek kimlik iptal edilir (4 dakika). Yönetilecek güven kökü sayısı 1’den 4.400’e çıkıyor.
- Ayrılan bir özne kişisel modda 393 aygıta dokunmayı gerektiriyor; yıllık 37 ayrılma 58.164 dakika eder. Bu bedel ödenmediği için sır değiştirilmez ve ayrılan öznenin bildiği dizi ağda kalır.
- Kurumsal mod yedi iddianın altısını kanıta bağlıyor ama bir iddia ekliyor: karşı tarafın kurumun kimlik doğrulama sunucusu olduğu. Güven kökü sabitlenmemişse o iddianın kanıtı yoktur.
- Bedel yedi ek altyapı kalemi ve yılda yirmi dokuz elle dokunuştur; altı rolün üçü, yani 4.138 aygıt kurumsal modu destekleyemediği için kişisel modda kalır.
Sonraki Adım
Bu ders güven kökünü yerine oturttu ve tabloda tek bir satırı açık bıraktı: istemcinin karşı tarafın kim olduğunu doğrulayıp doğrulamadığı. O satır boş kaldığında ne olduğu bir yapılandırma ayrıntısı değildir. Bir istemci bir ağa bağlanmaya karar verirken elinde yalnız o ağın kendisi hakkında yaptığı bildirimler vardır — ilk dersin tablosunda dört kuşakta da kanıtsız kalan ağ adı iddiası tam olarak budur. Sonraki dersin sorusu şudur: bir istemci bir ağın kimliğini neye bakarak kabul ediyor, o işaretlerin kaçı kanıt taşıyor, kaydedilmiş bir ağ profili kaç yolu kendiliğinden açıyor ve karşılıklı doğrulama bu yolların kaçını kapatıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.