Ders 02 / 11
İşletim Sistemi Aileleri
İşletim sistemi ailelerinin ürün adıyla değil güvenlik modeliyle ayrılması: 14 sistem isteğinin üç ailede 4, 11 ve 12 kalemde farklı sonuç vermesi, yönetici sınırını geçmenin 1, 2 ve 3 kaleme mal olması, sınır düştüğünde erişilen isteğin 13, 9 ve 5 olması ve yönetici olunsa da erişilemeyen isteğin 1, 1 ve 9'a çıkması.
İçindekiler
Önceki ders donanımın çizdiği sınırları saydı ve bir ayrım bıraktı: donanım sınırı yalnız mümkün kılar. İşlemci ayrıcalık kipini sunar, o kipte hangi kodun koşacağına karar vermez; kalıcı depolama izin bitlerini saklar, onlara uyup uymamak diski takan yazılımın işidir. Kararı veren katman işletim sistemidir.
Bu katman anıldığında genellikle ürün adları sıralanır. Ürün adı bir karar taşımaz: adlar değişir, sürümler birbirinin özelliğini alır ve aynı ad altındaki iki kurulum bambaşka davranabilir. Karar taşıyan şey ailenin güvenlik modelidir — aynı isteğe hangi yanıtı verdiği, o yanıtı değiştirmenin kaç kaleme mal olduğu.
Üç Aile, Üç Model
Bu derste aileler modelleriyle anılır.
Ayrık kullanıcı ve grup izni taşıyan aile. Her nesnenin bir sahibi ve bir grubu vardır; erişim, sahip–grup–diğerleri sınıflarına verilen bitlerle belirlenir. Ayrıcalık tek bir üstün kimlikte toplanır: o kimliğe geçen her şeyi yapar.
Erişim denetim listesi (access control list) taşıyan aile. Nesne başına, özne başına giriş tutulur; ayrıca sistem ayrıcalıkları bölünmüştür — saati değiştirme, tüm diski okuyan yedek alma, günlüğe dokunma ayrı ayrı verilebilen kalemlerdir. Yönetici olmak bunların hepsini kendiliğinden vermez.
İmzalı uygulama deposuna dayanan aile. Çalıştırılabilir kod yalnız imzalı bir kaynaktan gelir ve her uygulama kendi yalıtılmış alanında koşar. Bazı istekler, kullanıcı yönetici olsa da, modelde hiçbir yolla verilmez.
Üç tanımın ortak noktası, hepsinin aynı donanım üzerinde koşabilmesidir. Önceki dersteki sekiz sınır bu üç ailede de aynı yerdedir; değişen şey, o sınırların üstünde hangi isteğin hangi koşulla geçtiğidir. Bu yüzden aileler ancak aynı istek kümesi üzerinde karşılaştırılabilir: farklı istek listeleriyle yapılan karşılaştırma, ailelerin değil listelerin farkını ölçer.
Aynı İstek Kümesi Üç Ailede
Örnek, kurgu bölgesel ölçüm ağındaki saha ekiplerinin dizüstü bilgisayarıdır. Ekip ve istek kümesi kurgudur; aşağıdaki matris bir modeldir, gerçek bir dağıtım, ürün ya da satıcı yoktur.
DI7: istek kümesi 14 kalemdir ve üç ailede aynı biçimde sorulur. DI8: sonuç dört değerlidir
— izin doğrudan verilir, onay yönetici sınırı aşılarak verilir, ayri kendi ayrıcalık kalemiyle
tam yönetici olunmadan verilir, ret o ailede hiçbir yolla verilmez. DI9: yönetici sınırını
geçmek ayrık izin ailesinde 1, erişim denetim listesi ailesinde 2, imzalı depo ailesinde 3 kalem
ister. DI10: ayri sonuçlu her istek kendi kalemini ayrıca ister. DI11: senaryo iki
aşamalıdır — önce standart bir hesap ele geçer, sonra yönetici sınırı düşer.
// bt/aile.mjs — ayni sistem istegi kumesinin uc isletim sistemi ailesindeki sonucu (model): // gercek bir dagitim, urun ya da satici yok. Rastgelelik yok. // Aileler guvenlik modeliyle anilir. gec: yonetici sinirini gecmek icin gereken kalem; // ekKalem: "ayri" sonuclu her istek icin ayrica gereken kalem. export const AILE = [ { kod: "ayrik-izin", gec: 1, ekKalem: 0 }, // ayrik kullanici ve grup izni tasiyan aile { kod: "erisim-listesi", gec: 2, ekKalem: 1 }, // erisim denetim listesi tasiyan aile { kod: "imzali-depo", gec: 3, ekKalem: 1 }, // imzali uygulama deposuna dayanan aile ]; // Sonuc: izin (dogrudan), onay (yonetici sinirinin asilmasiyla), ayri (kendi ayricalik // kalemiyle, tam yonetici gerekmeden), ret (bu ailede hicbir yolla verilmez). export const ISTEK = ` kendi-belgesini-okuma izin izin izin baska-kullanici-belgesi ret ret ret sistem-dizinine-yazma onay onay ret depodan-yazilim-kurma onay onay izin imzasiz-yazilim-calistirma izin izin ret surucu-yukleme onay onay ret baslangic-ogesi-ekleme izin izin onay ayricalikli-uc-acma onay onay ret baska-surecin-bellegini-okuma onay onay ret sistem-saatini-degistirme onay ayri ret gunluk-silme onay ayri ret disk-birimi-takma onay ayri onay kamera-ve-mikrofon izin izin onay tum-diski-okuyan-yedek onay ayri ret` .trim().split("\n").map((r) => { const [ad, ...s] = r.trim().split(/\s+/); return { ad, s: Object.fromEntries(AILE.map((a, i) => [a.kod, s[i]])) }; }); export const SONUC = ["izin", "onay", "ayri", "ret"]; export const say = (a, c) => ISTEK.filter((i) => i.s[a.kod] === c).length; // Iki asamali senaryo: once standart hesap ele gecer, sonra yonetici siniri duser. export function asama(a) { const izin = say(a, "izin"); const onay = say(a, "onay"); const ayri = say(a, "ayri"); return { izin, sinirDuser: izin + onay, hepsi: izin + onay + ayri, gec: a.gec, kalem: a.gec + ayri * a.ekKalem, ret: say(a, "ret") }; }
// bt/aileolc.mjs — ayni istek kumesi uc ailede kac kalemde ayrisiyor, sinir dusunce ne aciliyor. import { AILE, ISTEK, SONUC, say, asama } from "./aile.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 K = AILE.map((a) => a.kod); console.log(`${ISTEK.length} sistem istegi x ${AILE.length} aile; sonuc: ` + "izin dogrudan, onay yonetici sinirini asarak, ayri kendi ayricalik kalemiyle, ret hicbir yolla"); const A = [-32, 15, 16, 13]; console.log("\n1. ayni istek kumesi uc ailede"); yaz(A, "istek", ...K); for (const i of ISTEK) yaz(A, i.ad, ...K.map((k) => i.s[k])); const B = [-32, 15, 16, 13]; console.log("\n2. aile basina sayim"); yaz(B, "olcu", ...K); for (const c of SONUC) yaz(B, `${c} sonuclu istek`, ...AILE.map((a) => say(a, c))); const R = AILE.map(asama); for (const [ad, f] of [["yonetici sinirini gecmek: kalem", (r) => r.gec], ["tumune erismek icin: kalem", (r) => r.kalem], ["standart hesapta erisilen istek", (r) => r.izin], ["sinir dusunce erisilen istek", (r) => r.sinirDuser], ["her kalem alinsa erisilen istek", (r) => r.hepsi], ["yonetici olsa da erisilemeyen", (r) => r.ret]]) yaz(B, ad, ...R.map(f)); const C = [-32, 15]; console.log("\n3. ikili karsilastirma (kac istekte sonuc farkli)"); yaz(C, "cift", "farkli istek"); for (let x = 0; x < K.length; x++) for (let y = x + 1; y < K.length; y++) yaz(C, `${K[x]} - ${K[y]}`, ISTEK.filter((i) => i.s[K[x]] !== i.s[K[y]]).length); yaz(C, "uc ailede de ayni", ISTEK.filter((i) => new Set(K.map((k) => i.s[k])).size === 1).length); yaz(C, "uc ailede de farkli", ISTEK.filter((i) => new Set(K.map((k) => i.s[k])).size === 3).length);
14 sistem istegi x 3 aile; sonuc: izin dogrudan, onay yonetici sinirini asarak, ayri kendi ayricalik kalemiyle, ret hicbir yolla 1. ayni istek kumesi uc ailede istek ayrik-izin erisim-listesi imzali-depo kendi-belgesini-okuma izin izin izin baska-kullanici-belgesi ret ret ret sistem-dizinine-yazma onay onay ret depodan-yazilim-kurma onay onay izin imzasiz-yazilim-calistirma izin izin ret surucu-yukleme onay onay ret baslangic-ogesi-ekleme izin izin onay ayricalikli-uc-acma onay onay ret baska-surecin-bellegini-okuma onay onay ret sistem-saatini-degistirme onay ayri ret gunluk-silme onay ayri ret disk-birimi-takma onay ayri onay kamera-ve-mikrofon izin izin onay tum-diski-okuyan-yedek onay ayri ret 2. aile basina sayim olcu ayrik-izin erisim-listesi imzali-depo izin sonuclu istek 4 4 2 onay sonuclu istek 9 5 3 ayri sonuclu istek 0 4 0 ret sonuclu istek 1 1 9 yonetici sinirini gecmek: kalem 1 2 3 tumune erismek icin: kalem 1 6 3 standart hesapta erisilen istek 4 4 2 sinir dusunce erisilen istek 13 9 5 her kalem alinsa erisilen istek 13 13 5 yonetici olsa da erisilemeyen 1 1 9 3. ikili karsilastirma (kac istekte sonuc farkli) cift farkli istek ayrik-izin - erisim-listesi 4 ayrik-izin - imzali-depo 11 erisim-listesi - imzali-depo 12 uc ailede de ayni 2 uc ailede de farkli 3
Sayılar ölçüm sınıfındadır; girdileri DI7–DI11’dir.
Yönetici Sınırı Kaç Kalem
İkinci tablonun beşinci ve altıncı satırları bu dersin ölçüsünü verir. Yönetici sınırını geçmek ayrık izin ailesinde 1, erişim denetim listesi ailesinde 2, imzalı depo ailesinde 3 kalemdir. Ama alt satır farklıdır: her isteğe erişmek için gereken kalem 1, 6 ve 3’tür.
Aradaki fark ayrıcalığın bölünmesinden gelir. Ayrık izin ailesinde üstün kimliğe geçmek bir kalemdir ve o kalem her şeyi verir; sınırı geçme maliyeti ile tümüne erişme maliyeti aynı sayıdır. Erişim denetim listesi ailesinde yönetici olmak dört isteği daha vermez; her biri kendi ayrıcalık kalemini ister ve toplam 6’ya çıkar. Bölünmüş ayrıcalık, sınırın yüksekliğini değil, sınırdan sonraki mesafeyi uzatır.
Bu ayrımı görmek için iki sayının ayrı yazılması gerekir. Tek bir “yönetici olmak zor mu” sorusu 1, 2, 3 dizisini verir ve üç aileyi neredeyse eşit gösterir; ikinci sayı eklendiğinde dizi 1, 6, 3 olur ve sıralama değişir.
Sınır Düştüğünde Ne Açılır
Üçüncü sütun grubu senaryonun ikinci aşamasını okur. Standart bir hesap ele geçtiğinde doğrudan erişilen istek üç ailede 4, 4 ve 2’dir — neredeyse aynı. Yönetici sınırı düştüğünde sayılar ayrışır: 13, 9 ve 5.
Ayrık izin ailesinde 14 isteğin 13’ü açılır. Tek kalem, envanterin tamamına yakınını verir; bu, önceki derste bellenim satırında görülen örüntünün yazılım tarafındaki karşılığıdır. Erişim denetim listesi ailesinde aynı anda açılan istek 9’dur ve kalan 4 istek için dört ayrı kalem daha gerekir. İmzalı depo ailesinde sınır düşse bile açılan istek 5’te kalır, çünkü kalan 9 istek modelde hiçbir kalem alınarak açılmaz.
Son satır bunu doğrudan yazar: yönetici olunsa da erişilemeyen istek sayısı 1, 1 ve 9’dur. Bu, üç ailenin en keskin farkıdır ve tek bir tasarım kararından çıkar — ayrıcalığın en üst noktasının her şeyi verip vermemesi.
Senaryonun ikinci aşaması, bir hesabın taşıdığı yetkinin sistemin izin verdiğinden fazlasına çevrilmesidir; bu adıma yetki yükseltme (privilege escalation) denir. Burada ölçülen şey yükseltmenin nasıl yapıldığı değil, yapıldığı varsayıldığında açılan istek sayısıdır; adımın kendisi bir modeldir ve bu derste hiçbir çalışan örneği yoktur. Bir sistemde yükseltme denemesi, yazılı yetki ve tanımlı kapsam olmadan yapıldığında hem yasadışı hem de meslek dışıdır.
Modelin Görmediği Kalem
Tablodaki ret değeri modelde mutlaktır: o istek hiçbir kalem alınarak açılmaz. Gerçek bir
kurulumda mutlak değildir. İmzalı depo ailesinde imzalayan anahtarın kendisi, kuruma özel kayıt
profilleri, geliştirme kipi ve depo dışı kurulum izni birer kalemdir; bunlardan biri açıksa
ret sonuçlarının bir bölümü onaya döner ve son satırdaki 9 düşer.
Bu, modelin kusuru değil sınırıdır ve nasıl kullanılacağını belirler. Tablo bir aileyi değil, bir
ailenin varsayılan yapılandırmasını ölçer. Sayıyı bir makineye uygularken önce iki soru sorulur:
ret sonuçlarını onaya çeviren kaç kalem bu makinede açık, ve o kalemleri kim değiştirebiliyor.
İkinci sorunun yanıtı “yönetici” ise, imzalı depo ailesinin 9’u gerçekte 9 değildir.
Aynı sınırlama ters yönde de işler. Ayrık izin ailesinde 1 olarak yazılan “yönetici olunsa da erişilemeyen istek” sayısı, zorunlu erişim denetimi katmanı eklenmiş bir kurulumda yükselir; o katman ayrıcalığı bölmenin başka bir yoludur. Aile adı bir üst sınır verir, kurulum ise gerçek sayıyı. Bu yüzden bir sonraki ders ailenin değil kurulumun kendisini ölçer.
Aynı Aile, İki Kurulum
Ölçüm ağındaki saha dizüstü bilgisayarlarının hepsi aynı ailedendir, ama ikisi aynı sayıyı vermez. Birinde standart kullanıcı hesabı, ötekinde günlük iş yönetici hesabıyla yapılıyorsa senaryonun ilk aşaması ikincisinde doğrudan ikinci aşamadan başlar: ele geçen hesap zaten sınırın öte yanındadır ve yönetici sınırını geçmek için gereken kalem 1 değil 0’dır.
Bu, önceki dersteki sıfır eşiğin yazılım tarafındaki karşılığıdır. Sıfır, sınırın zayıf olduğunu
değil, kurulmadığını söyler. Aile seçimi bu durumda hiçbir şey değiştirmez: en sıkı modelde bile
günlük işin yönetici hesabıyla yapılması, tablodaki onay sütununu izin sütununa taşır ve üç
ailenin arasındaki 4, 11, 12 farkı büyük ölçüde silinir.
Bedel: Yapılamayan Meşru İş
Aynı satır, ters yönden okunduğunda savunmanın bedelini verir. İmzalı depo ailesinde erişilemeyen 9 isteğin içinde sürücü yükleme, tüm diski okuyan yedek alma ve başka bir sürecin belleğini okuma vardır. Bu üç iş de meşru bir yönetim işidir: ölçüm ağında bir sayaç okuyucu aygıtın sürücüsü yüklenmek zorundadır, saha dizüstü bilgisayarının tam yedeği alınmak zorundadır, bir çökme incelenirken sürecin belleği okunmak zorundadır.
Model bu işleri “yapılamaz” saymaz, başka yerde yapılır sayar: sürücü imzalanıp depoya girer, yedek uygulama başına verilen bir izinle alınır, çökme kaydı işletim sisteminin kendi düzeneğiyle toplanır. Bedel, işin ortadan kalkması değil, her birinin ayrı bir onaylı yola bağlanmasıdır — ve o yolların sayısı 9’dur. Ayrık izin ailesinde bu bedel 1’dir; buna karşılık sınır düştüğünde açılan istek 13’tür.
Üçüncü tablo bu ödünleşimin nerede yoğunlaştığını gösterir. İlk iki aile birbirinden yalnız 4 istekte ayrılır ve bu dördü de ayrıcalığın bölünmesiyle ilgilidir. İmzalı depo ailesi ötekilerden 11 ve 12 istekte ayrılır. Üç ailede de aynı sonucu veren istek yalnızca 2’dir: kendi belgesini okuma ve başka kullanıcının belgesini okuma. Ortak taban, bir kullanıcının kendi verisiyle başkasının verisi arasındaki ayrımdan ibarettir; onun ötesindeki her şey aileye bağlıdır.
Ödünleşim tek yönlü okunmaz. Ölçüm ağında saha dizüstü bilgisayarı ile şube sunucusu aynı tabloya
farklı yerlerden bakar. Dizüstü bilgisayarda çalıştırılan kod büyük ölçüde dışarıdan gelir ve
kullanıcı sistemin bakımını yapmaz; orada ret sayısının yüksek olması bedel değil kazançtır.
Şube sunucusunda ise sürücü yükleme, tam yedek ve bellek incelemesi işin kendisidir; aynı 9 sayısı
orada dokuz ayrı istisna yolu demektir ve her istisna yolu kendi başına bir kalemdir. Aynı sayı
bir makinede kapanan yol, ötekinde yeni açılan yapılandırma kalemidir. Aile seçimi bu yüzden
makine sınıfı başına yapılır, kurum başına değil.
Özet
- İşletim sistemi ailesi ürün adıyla değil güvenlik modeliyle ayrılır: aynı isteğe verdiği yanıt ve o yanıtı değiştirmenin kaç kaleme mal olduğu.
- 14 istek üç ailede 4, 11 ve 12 kalemde farklı sonuç verir; üçünde de aynı sonucu veren istek yalnızca 2’dir.
- Yönetici sınırını geçmek 1, 2 ve 3 kalemdir; her isteğe erişmek 1, 6 ve 3 kalemdir. Bölünmüş ayrıcalık sınırın yüksekliğini değil, sınırdan sonraki mesafeyi uzatır.
- Sınır düştüğünde erişilen istek 13, 9 ve 5’tir. Ayrıcalığın en üst noktası her şeyi veriyorsa tek kalem 14 isteğin 13’ünü açar.
- Bedel, yönetici olunsa da erişilemeyen istek sayısıdır: 1, 1 ve 9. İmzalı depo ailesinde kapatılan dokuz isteğin çoğu meşru yönetim işidir ve her biri ayrı bir onaylı yola bağlanır.
- Tablo bir aileyi değil, ailenin varsayılan yapılandırmasını ölçer. Günlük iş yönetici hesabıyla yapılıyorsa yönetici sınırını geçmek için gereken kalem 0’a iner ve aileler arasındaki fark silinir.
Sonraki Adım
Üç aile de kendi modelini bir kurulumla getirir; tablodaki sonuçlar o kurulumun varsayılan değerleridir. Ama varsayılan değer bir seçim değildir: kurulumu yapan kişi hiçbir şey seçmediğinde kalan durumdur.
Sonraki ders bu ana bakar. Temiz bir kurulum bittiğinde kaç kalem açık kalıyor, ilk sertleştirmede kaçı kapanıyor ve kaçı ancak makine yeniden kurulursa kapatılabiliyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.