Ders 17 / 21
Çoklu Oturum Açma
Federasyonun iddia belgesi ekseninde ölçülmesi: 18 uygulamanın 15'inin tek sağlayıcıya bağlı olması ve 1562 kullanıcı bağlantısının 90 kaleme dayanması, iptal penceresini belgenin 5 dakikalık ömrünün değil uygulamanın 72 saate çıkan yerel oturumunun belirlemesi, anahtar döndürmenin 5 uygulamada elle kalem ve kesinti üretmesi.
İçindekiler
Önceki ders erişim kararını ağa girişte ölçtü: 80 aygıt, 1348 bağlanma noktası, tek servis. Ağa girmiş bir kullanıcı ise gün boyunca onlarca uygulamaya bağlanır ve her birinde ayrı ayrı doğrulanması istenmez. Çoklu oturum açma (single sign-on) bu isteği karşılar: kullanıcı bir kez doğrulanır, doğrulamanın sonucu uygulamalara iddia belgesi (assertion) olarak taşınır ve her uygulama belgeyi kendi başına doğrular.
Belgenin üretimi, imza ile yayıncı denetimi, hedef kitle ve süre penceresi ile öznitelikten role çevrim Kimlik Doğrulama ve Yetkilendirme kursunda ölçüldü; burada tekrarlanmaz. Bu dersin ölçtüğü şey kurum ölçeğidir: kaç uygulama tek sağlayıcıya bağlı, kök kırılırsa kaç uygulama düşer, belgenin ömrü ne kadar ve bir hesabın kapatılması hangi uygulamada ne kadar sürede etkili oluyor.
Tek Kök, On Beş Uygulama
KK11: çoklu oturum açmada uygulama kullanıcıyı kendisi doğrulamaz; kimlik sağlayıcısının imzaladığı bir belgeyi kabul eder. Sağlayıcının imzalama anahtarı, ona bağlı bütün uygulamaların ortak güven köküdür. KK12: iddia belgesinin ömrü ile uygulamanın kendi oturumunun ömrü ayrı sayılardır; iptalin ne kadar sürede etkili olduğunu belirleyen ikincisidir. KK13: kök anahtarın döndürülmesi, anahtarı kendisi çeken uygulamada bedavadır; elle yüklenen ya da yapılandırmaya sabitlenen uygulamada bir elle kalem ve bir kesintidir.
KK11 kurumsal kimliğin en büyük tek kazancıdır. Kullanıcı tek bir parola tutar, hesap kapatma tek yerde yapılır ve çok etmenli doğrulama tek noktada uygulanır. Aynı tasarım, kursun ölçüsünü en keskin biçimde gösterir: kazancın kaynağı ile kırılganlığın kaynağı aynı kalemdir.
On Sekiz Uygulama
Aşağıdaki envanter bir modeldir: kurgu bölgesel ölçüm ağı kurumunun uygulamaları. Gerçek bir kurum, gerçek bir sağlayıcı ya da gerçek bir anahtar yoktur.
// coklu/uygulama.mjs — kurgu bolgesel olcum agi kurumunun uygulamalari ve merkezi kimlik // saglayicisina baglanma bicimi (model): gercek bir kurum, gercek bir saglayici ya da gercek // bir anahtar yok. Rastgelelik yok. // KK11: coklu oturum acmada uygulama kullaniciyi kendisi dogrulamaz; kimlik saglayicisinin // imzaladigi bir iddia belgesini kabul eder. Saglayicinin imzalama anahtari, ona bagli // butun uygulamalarin ortak guven kokudur. // Sutunlar: kip = federe (yalniz saglayiciyla girilir), karma (federe ve yerel hesap birlikte), // yerel (saglayiciya bagli degil); belgeDk = iddia belgesinin gecerlilik suresi, dakika; // oturumSaat = uygulamanin kendi oturumunu tuttugu sure; anahtar = imzalama anahtarinin // uygulamaya nasil ulastigi (kume: anahtar kumesinden cekilir; elle: elle yuklenir; // sabit: parmak izi yapilandirmaya sabitlenmis). export const UYGULAMA = ` faturalama federe 142 5 8 kume is-emri federe 118 5 12 kume olcum-arsivi federe 64 5 4 kume rapor-portali federe 173 5 8 kume saha-mobil-uc federe 140 5 72 elle varlik-envanteri federe 47 5 8 kume ik-portali federe 206 2 2 kume gider-onayi federe 88 5 8 sabit belge-arsivi federe 151 5 24 kume egitim-portali federe 96 10 24 elle tedarik-portali karma 39 5 8 elle bakim-plani karma 55 5 12 kume cagri-merkezi karma 104 5 4 sabit bilet-sistemi federe 77 5 8 kume veri-panosu federe 62 5 2 kume bellenim-sunucusu yerel 11 0 0 yok yedekleme-konsolu yerel 7 0 0 yok eski-scada-konsolu yerel 9 0 0 yok` .trim().split("\n").map((r) => { const p = r.trim().split(/\s+/); return { ad: p[0], kip: p[1], kul: +p[2], belgeDk: +p[3], oturumSaat: +p[4], anahtar: p[5] }; }); // KK12: iddia belgesinin omru ile uygulamanin kendi oturumunun omru ayri sayilardir; iptalin // etkili olma suresini belirleyen ikincisidir. // KK13: kok anahtarin dondurulmesi, anahtari kendisi ceken uygulamada bedava, elle yuklenen // ya da sabitlenen uygulamada elle kalem ve kesintidir. export const ZINCIR = ["imzalama anahtari", "anahtar dagitim noktasi", "hedef kitle kaydi", "oznitelik eslemesi", "saat penceresi", "yerel oturum kaydi"]; export const federe = (u) => u.kip !== "yerel";
// coklu/sayim.mjs — kac uygulama tek saglayiciya bagli, kok kirilirsa kac uygulama duser, // iddia belgesinin omru ne, iptal kac saatte etkili oluyor ve anahtar dondurme ne tutar. import { UYGULAMA, ZINCIR, federe } from "./uygulama.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 = UYGULAMA) => s.reduce((a, x) => a + f(x), 0); const bagli = UYGULAMA.filter(federe); const yerel = UYGULAMA.filter((u) => !federe(u)); console.log(`${UYGULAMA.length} uygulama, ${bagli.length} tanesi tek saglayiciya bagli, ` + `${topla((u) => u.kul, bagli)} kullanici baglantisi, zincir ${ZINCIR.length} kalem`); console.log(`koke bagli kalem ${bagli.length * ZINCIR.length}, ` + `koke bagli olmayan uygulama ${yerel.length} (${topla((u) => u.kul, yerel)} hesap)`); const A = [-8, 10, 10, 13, 14]; console.log("\n1. baglanma kipine gore"); yaz(A, "kip", "uygulama", "kullanici", "kok kirilsa", "belge dk ort"); for (const k of ["federe", "karma", "yerel"]) { const s = UYGULAMA.filter((u) => u.kip === k); const dk = s.filter((u) => u.belgeDk > 0); yaz(A, k, s.length, topla((u) => u.kul, s), k === "yerel" ? 0 : s.length, dk.length ? (topla((u) => u.belgeDk, dk) / dk.length).toFixed(1) : "-"); } const B = [-14, 10, 11, 15, 16]; console.log("\n2. iptal penceresi: hesap devre disi birakildiktan sonra erisim ne kadar surer"); yaz(B, "pencere", "uygulama", "kullanici", "kalan belge dk", "kalan oturum sa"); for (const [ad, alt, ust] of [["0-4 saat", 0, 4], ["5-12 saat", 5, 12], ["13-24 saat", 13, 24], ["25 saat ustu", 25, 999]]) { const s = bagli.filter((u) => u.oturumSaat >= alt && u.oturumSaat <= ust); yaz(B, ad, s.length, topla((u) => u.kul, s), topla((u) => u.belgeDk, s), topla((u) => u.oturumSaat, s)); } const enUzun = bagli.reduce((a, u) => (u.oturumSaat > a.oturumSaat ? u : a)); console.log(`en uzun pencere ${enUzun.oturumSaat} saat (${enUzun.ad}), ` + `belge omru ${enUzun.belgeDk} dakika; oran ${(enUzun.oturumSaat * 60 / enUzun.belgeDk)}x`); const C = [-8, 10, 11, 12, 12]; console.log("\n3. imzalama anahtarini dondurmek ne tutar"); yaz(C, "anahtar", "uygulama", "kullanici", "elle kalem", "kesinti uyg"); for (const a of ["kume", "elle", "sabit"]) { const s = bagli.filter((u) => u.anahtar === a); yaz(C, a, s.length, topla((u) => u.kul, s), a === "kume" ? 0 : s.length, a === "kume" ? 0 : s.length); } const D = [-24, 8, 10, 20]; console.log("\n4. kok kirilirsa dusen kalem"); yaz(D, "kalem", "sayi", "dusen", "yenileme"); const elle = bagli.filter((u) => u.anahtar !== "kume").length; for (const s of [ ["saglayiciya bagli uyg", bagli.length, bagli.length, "yeniden guvenilir"], ["kullanici baglantisi", topla((u) => u.kul, bagli), topla((u) => u.kul, bagli), "yeniden giris"], ["imzalama anahtari", 1, 1, "1 kalem uretilir"], ["elle tasinan anahtar", elle, elle, `${elle} uygulama elle`], ["yerel hesapli uygulama", yerel.length, 0, "etkilenmez"], ]) yaz(D, ...s);
18 uygulama, 15 tanesi tek saglayiciya bagli, 1562 kullanici baglantisi, zincir 6 kalem koke bagli kalem 90, koke bagli olmayan uygulama 3 (27 hesap) 1. baglanma kipine gore kip uygulama kullanici kok kirilsa belge dk ort federe 12 1364 12 5.2 karma 3 198 3 5.0 yerel 3 27 0 - 2. iptal penceresi: hesap devre disi birakildiktan sonra erisim ne kadar surer pencere uygulama kullanici kalan belge dk kalan oturum sa 0-4 saat 4 436 17 12 5-12 saat 8 739 40 72 13-24 saat 2 247 15 48 25 saat ustu 1 140 5 72 en uzun pencere 72 saat (saha-mobil-uc), belge omru 5 dakika; oran 864x 3. imzalama anahtarini dondurmek ne tutar anahtar uygulama kullanici elle kalem kesinti uyg kume 10 1095 0 0 elle 3 275 3 3 sabit 2 192 2 2 4. kok kirilirsa dusen kalem kalem sayi dusen yenileme saglayiciya bagli uyg 15 15 yeniden guvenilir kullanici baglantisi 1562 1562 yeniden giris imzalama anahtari 1 1 1 kalem uretilir elle tasinan anahtar 5 5 5 uygulama elle yerel hesapli uygulama 3 0 etkilenmez
Sayılar ölçüm sınıfındadır; girdileri KK11–KK13 ile uygulama envanteridir.
Kaç Uygulama Tek Köke Bağlı
Başlık satırları kapsamı verir: 18 uygulamanın 15’i tek sağlayıcıya bağlıdır, 1562 kullanıcı bağlantısı o bağın üzerinden geçer ve uygulama başına altı kalem sayıldığında toplam 90 kalem aynı anda doğru olmalıdır. Kalan üç uygulama sağlayıcıya bağlı değildir ve 27 hesabı kendi listesinde tutar.
Birinci tablo kipleri ayırır. On iki uygulama yalnız sağlayıcıyla girilir, üçü hem sağlayıcıyı hem kendi yerel hesabını kabul eder. Karma kip bir kesinti önlemi olarak konur — sağlayıcı düştüğünde 198 kullanıcı yerel hesapla girebilir. Aynı kalem ters yönde de çalışır: bir kişi sağlayıcıda kapatıldığında o üç uygulamadaki yerel hesabı kapanmaz. Karma kip erişilebilirliği artırır ve iptali eksiltir; ikisi aynı satırdan çıkar.
Yerel kip aynı örüntünün ilk derste görülen biçimidir. Üç uygulama kökten bağımsızdır ve kök kırıldığında sıfır düşer; buna karşılık 27 hesabın kapatılması merkezî hiçbir işlemle olmaz. Kökün dışında kalmak korunmak değildir; ayrı bir kırılma noktası eklemektir. Bu üç uygulamanın 27 hesabı, kurumun kimlik envanterinde hiçbir merkezî raporda görünmez ve kapatma listesi hazırlanırken elle hatırlanmak zorundadır; hatırlanmadıklarında geride kalan hesap sayısı 27’dir ve bu sayı hiçbir gösterge panosunda okunmaz.
Zincirin Altı Kalemi
Uygulama başına sayılan altı kalemin yalnız biri anahtardır; kalan beşi anahtarın çevresinde duran ve aynı anda tutması gereken kayıtlardır. Anahtar dağıtım noktası, uygulamanın imzalama anahtarını nereden aldığını söyler; o adres ulaşılamazsa doğrulama yapılamaz. Hedef kitle kaydı, belgenin hangi uygulama için üretildiğini bağlar; yanlış yazıldığında bir uygulamaya üretilmiş belge başka bir uygulamada kabul edilir.
Öznitelik eşlemesi, sağlayıcıdan gelen alan adlarını uygulamanın beklediği alanlara çevirir ve yanlış eşleme kimliği doğru, yetkiyi yanlış kurar. Saat penceresi bu konuda üçüncü kez çıkar: belgenin beş dakikalık ömrü iki tarafın saatine göre ölçülür ve saatler ayrıldığında geçerli belge reddedilir. Altıncı kalem, uygulamanın kendi oturum kaydıdır ve bir sonraki bölümün tamamı onun üzerinedir.
On beş uygulama için toplam 90 kalem, kurumun tek bir kişiyi tek bir uygulamaya sokabilmesi için doğru tutması gereken bağımsız kayıt sayısıdır. Bu kalemlerin hiçbiri kriptografik değildir; yalnız biri, listenin başındaki anahtar, kırılma yüzeyini oluşturur. Kök tek kalemdir, kökün çevresi seksen dokuz kalemdir ve işletim yükünün tamamı ikincisindedir.
İptal Penceresi
İkinci tablo bu dersin merkezidir. İddia belgesinin ömrü uygulamaların çoğunda beş dakikadır ve bu sayı çoğu kez “kimlik sağlayıcısıyla bağ beş dakikada bir tazeleniyor” diye okunur. Öyle değildir. Belge yalnız girişi taşır; uygulama girişi kabul ettikten sonra kendi oturumunu açar ve sonraki her istekte belgeye değil o oturuma bakar.
Bu yüzden bir hesap devre dışı bırakıldığında erişimin bitme süresini belirleyen sayı, belgenin ömrü değil uygulamanın oturum ömrüdür. Dört uygulamada bu süre dört saatin altındadır ve 436 kullanıcıyı kapsar; sekiz uygulamada beş ile on iki saat arasındadır. En uzun pencere saha mobil ucundadır: 72 saat. Aynı uygulamada belgenin ömrü beş dakikadır; iki sayı arasındaki oran 864 katıdır.
Sayının anlamı doğrudandır. Kurumdan ayrılan ya da hesabı askıya alınan bir kişi, merkezî depoda kaydı kapatılmış olmasına rağmen o uygulamada üç gün daha çalışmaya devam eder ve hiçbir kayıt bunu hata olarak göstermez. Federasyonun iptal hızı, en uzun oturum ömrünü tutan uygulamanın hızıdır; ortalamalar bu ölçüde bir şey söylemez. Kurum ölçeğinde iptali hızlandırmanın yolu belgeyi kısaltmak değil, uygulamaların oturum ömrünü kısaltmak ya da düzenli bir yeniden doğrulama istemektir; ikisi de kullanıcıya günde birkaç ek adım olarak yazılır.
Anahtarı Döndürmenin Bedeli
Üçüncü tablo KK13’ü sayar. On uygulama imzalama anahtarını sağlayıcının yayımladığı anahtar kümesinden kendisi çeker; sağlayıcı yeni bir anahtar eklediğinde bu uygulamalarda hiçbir işlem yapılmaz ve elle kalem sıfırdır. Kalan beş uygulamada anahtar ya elle yüklenmiştir ya da parmak izi yapılandırmaya sabitlenmiştir; döndürme bu beşinde birer elle kalem ve birer kesinti üretir.
Beş sayısı 1562 kullanıcının 467’sini kapsar. Döndürmenin planı bu beş uygulamanın etrafında kurulur: yeni anahtar yayımlanır, beş uygulamada yapılandırma güncellenir, sonra eski anahtar kaldırılır. Bu üç adımın ortasında bir pencere vardır ve pencere kapanmadan eski anahtar düşürülürse beş uygulamada giriş durur.
Sayı, kurumun kökü ne sıklıkta yenilediğini belirler. Sıfır elle kalemli bir portföyde anahtar döndürme rutin bir işlemdir; beş elle kalemli bir portföyde planlanmış bir bakım penceresi gerektirir ve ertelenir. Kök yenileme sıklığı, kökün özelliği değil, ona bağlı kalemlerin otomasyon oranının özelliğidir.
Kök Kırılırsa
Dördüncü tablo kırılmayı sayar. İmzalama anahtarı ele geçtiğinde sağlayıcıya bağlı 15 uygulamanın 15’i ve 1562 kullanıcı bağlantısının tamamı düşer. Belge, hangi kullanıcı için üretildiğini kendisi söyler; anahtarı bilen taraf istediği kullanıcı için geçerli belge üretebilir ve bunu yapmak için hiçbir parolaya, hiçbir ikinci etmene ihtiyaç duymaz. Bu, ikinci derste bilet veren servisin anahtarında görülen örüntünün uygulama katmanındaki karşılığıdır.
Yenileme faturası şaşırtıcı biçimde küçüktür: üretilen anahtar bir kalemdir. Faturanın gerçek kalemi, yeni anahtarın 15 uygulamaya ulaştırılmasıdır — onunda otomatik, beşinde elle. Kırılma anında beş elle kalem, bakım penceresi beklenerek değil hemen yapılır ve o beş uygulamada kesinti kaçınılmazdır.
Üç yerel uygulama yine sıfır düşer. Kök kırılmasında bu bir avantaj gibi görünür, ama aynı kırılmada kurumun yapması gereken ilk iş 1562 bağlantıyı yeniden doğrulamaktır ve o üç uygulamanın 27 hesabı bu işlemin dışında kalır: ne düşerler ne de yenilenirler. Merkezî denetimin dışında olmak, olayın dışında olmak değildir. Kırılma sonrası yapılan envanterde bu üç uygulama listeye hiç girmez ve girmediği için de yeniden gözden geçirilmez; kökün kapsamı dışında kalan kalem, kök kırılmasının soruşturmasının da dışında kalır.
Özet
- 18 uygulamanın 15’i tek kimlik sağlayıcısına bağlıdır; 1562 kullanıcı bağlantısı 90 kalemlik bir zincire dayanır.
- Karma kip erişilebilirliği artırır ve iptali eksiltir: sağlayıcı düştüğünde 198 kullanıcı girebilir, sağlayıcıda kapatılan hesap ise o uygulamalarda açık kalır.
- İptalin etkili olma süresini belgenin 5 dakikalık ömrü değil uygulamanın oturum ömrü belirler; en uzun pencere 72 saattir ve iki sayının oranı 864 katıdır.
- İmzalama anahtarını döndürmek 10 uygulamada sıfır, 5 uygulamada birer elle kalem ve birer kesinti tutar; kök yenileme sıklığını bu oran belirler.
- Kök kırıldığında 15 uygulama ve 1562 bağlantı düşer; üretilen yeni anahtar 1 kalemdir ama 5 uygulamaya elle taşınır.
Sonraki Adım
Bu ders tek bir doğrulamanın 15 uygulamaya taşındığını saydı; o tek doğrulamanın kendisi ise hâlâ bir parolaya dayanıyor. Parola bilinirse 1562 bağlantının tamamı tek adımda açılır. Bu yüzden kurumsal girişe ikinci bir etmen eklenir ve eklenen etmenin hangi yolu kapattığı ayrı bir sorudur: her etmen türü aynı yolları kapatmaz ve hiçbiri hepsini kapatmaz. Sonraki ders etmen türlerini kapattıkları yol cinsinden ölçer ve atlatma yollarının kaçının açık kaldığını sayar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.