İçeriğe geç
academia.sh

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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat