İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat