---
title: 'En Az Yetki'
source: 'https://academia.sh/tr/kurslar/siber-guvenlige-giris/en-az-yetki'
course: 'Siber Güvenliğe Giriş'
language: tr
updated: '2026-08-17T18:08:38+00:00'
license: 'CC BY-SA 4.0'
---

# En Az Yetki

Aynı erişim grafiğinin her adımı bir izin kalemine bağlanır ve her kalemin açtığı yol ile taşıdığı günlük meşru istek yan yana sayılır. Meşru trafik taşımayan kalemlerin bedelsiz kaldırılması ölçülür, ardından yol başına durdurulan istek eşiği taranarak daraltmanın durduğu yer bulunur.

Önceki ders beş savunma katmanını aynı grafiğe ekledi ve elli beş yolun elli ikisini kapattı.
Kapanan yolların hepsi bir adımın geçilememesiyle kapandı: süzgeç geçirmedi, kimlik tanınmadı,
girdi kabul edilmedi. Katmanların hiçbiri ikinci bir soruyu sormadı — adımı atan özne hedef
kaleme dokunma **iznine** sahip mi? Bu ders o soruyu sorar ve grafiği izin kümesi olarak yeniden
okur.

**En az yetki** (least privilege), her özneye işini yapmaya yeten en dar izin kümesinin
verilmesidir. Bulut Yönetişimi, Güvenlik ve Maliyet kursunda aynı ilke verilen izin ile kullanılan
izin oranı üzerinden ölçülmüştü; burada ölçü birimi yol sayısıdır. Bir izin kalemi kaldırıldığında
grafikten bir adım düşer ve o adımdan geçen bütün yollar kapanır. Aynı adımdan meşru işler de
geçtiği için her kaldırma iki sayı üretir: kapanan yol ve duran günlük istek. İlke ancak ikisi
birlikte yazıldığında ölçülmüş sayılır.

- **SI7.** İzin kalemi `(özne, kalem, eylem)` üçlüsüdür ve grafikteki bir adıma birebir karşılık
  gelir. Yirmi iki kenar, yirmi iki izin kalemi demektir.
- **SI8.** Eylem eşlemesi bir model kararıdır: her adıma `oku`, `yaz` ya da `yonet` atandı.
  Gerçekte bir adım birden çok eylem gerektirebilir; bu kalem sayısını büyütür, ölçünün yönünü
  değiştirmez.
- **SI9.** Bir izin kalemi ya verilmiştir ya verilmemiştir. Koşul ifadesi, kayıt düzeyinde
  daraltma ve süreli izin modellenmiyor.
- **SI10.** Günlük meşru istek sayıları önceki dersteki akış modelinden gelir; ölçülmedi, seçildi.
- **SI11.** Bir meşru akış, adımlarından biri kapandığında tamamen durur. Yedek yol üzerinden
  devam etme modellenmiyor; bu, durma sayısını yüksek gösterir.

## Adımın İkinci Koşulu

Grafik değişmedi; üzerine ikinci bir okuma bindi. Her kenar artık bir izin kaleminin adıdır ve o
kalem kaldırıldığında kenar da düşer.

```js
// ag.mjs — kurgusal bolgesel olcum aginin erisim grafigi ve mesru akislari (model)
export const GIRIS = ['saha-uc', 'sube-agi', 'genel-uc', 'bakim-uc'];
export const VARLIK = ['olcum-deposu', 'fatura-vt', 'abone-kayit', 'yapilandirma'];
export const KENAR = [
  ['saha-uc', 'toplayici'], ['saha-uc', 'is-emri'], ['sube-agi', 'toplayici'],
  ['sube-agi', 'is-emri'], ['sube-agi', 'yonetim'], ['genel-uc', 'toplayici'],
  ['bakim-uc', 'yonetim'], ['bakim-uc', 'kuyruk'], ['toplayici', 'kuyruk'],
  ['toplayici', 'olcum-deposu'], ['kuyruk', 'dogrulayici'], ['kuyruk', 'faturalama'],
  ['dogrulayici', 'olcum-deposu'], ['dogrulayici', 'fatura-vt'], ['faturalama', 'fatura-vt'],
  ['faturalama', 'abone-kayit'], ['is-emri', 'kuyruk'], ['is-emri', 'abone-kayit'],
  ['yonetim', 'toplayici'], ['yonetim', 'dogrulayici'], ['yonetim', 'is-emri'],
  ['yonetim', 'yapilandirma'],
];
// Mesru akis: gunluk kosan is; adim dizisi ayni grafigin kenarlarindan gecer.
export const AKIS = [
  ['saha-okuma', ['saha-uc', 'toplayici', 'kuyruk'], 1440],
  ['dogrulama', ['kuyruk', 'dogrulayici', 'olcum-deposu'], 1440],
  ['genel-okuma', ['genel-uc', 'toplayici', 'olcum-deposu'], 300],
  ['sube-sorgu', ['sube-agi', 'toplayici', 'olcum-deposu'], 210],
  ['fatura-yazimi', ['kuyruk', 'faturalama', 'fatura-vt'], 48],
  ['is-emri-acma', ['sube-agi', 'is-emri', 'abone-kayit'], 32],
  ['is-emri-kuyruk', ['sube-agi', 'is-emri', 'kuyruk'], 32],
  ['abone-guncelleme', ['faturalama', 'abone-kayit'], 6],
  ['yapilandirma-degisikligi', ['sube-agi', 'yonetim', 'yapilandirma'], 2],
  ['bakim-oturumu', ['bakim-uc', 'yonetim', 'toplayici'], 1],
  ['kuyruk-bakimi', ['bakim-uc', 'kuyruk'], 1],
  ['mutabakat', ['yonetim', 'dogrulayici', 'fatura-vt'], 1],
];
export const ad = (a, b) => `${a}>${b}`;
export const adimlar = (d) => d.slice(0, -1).map((x, i) => ad(x, d[i + 1]));
export function yollar(kapali = new Set()) {
  const komsu = new Map();
  for (const [a, b] of KENAR) if (!kapali.has(ad(a, b))) komsu.set(a, [...(komsu.get(a) || []), b]);
  const s = [];
  const yuru = (d, y) => {
    if (VARLIK.includes(d)) return void s.push(y);
    for (const k of komsu.get(d) || []) if (!y.includes(k)) yuru(k, [...y, k]);
  };
  for (const g of GIRIS) yuru(g, [g]);
  return s;
}
export const kesilen = (kapali) => AKIS.filter(([, d]) => adimlar(d).some((k) => kapali.has(k)));
```

```js
// yetki.mjs — her adimin gerektirdigi izin kalemi: (ozne, kalem, eylem)
export const EYLEM = {
  'saha-uc>toplayici': 'yaz', 'saha-uc>is-emri': 'yaz', 'sube-agi>toplayici': 'oku',
  'sube-agi>is-emri': 'yaz', 'sube-agi>yonetim': 'yonet', 'genel-uc>toplayici': 'oku',
  'bakim-uc>yonetim': 'yonet', 'bakim-uc>kuyruk': 'yonet', 'toplayici>kuyruk': 'yaz',
  'toplayici>olcum-deposu': 'yaz', 'kuyruk>dogrulayici': 'oku', 'kuyruk>faturalama': 'oku',
  'dogrulayici>olcum-deposu': 'yaz', 'dogrulayici>fatura-vt': 'yaz', 'faturalama>fatura-vt': 'yaz',
  'faturalama>abone-kayit': 'yaz', 'is-emri>kuyruk': 'yaz', 'is-emri>abone-kayit': 'yaz',
  'yonetim>toplayici': 'yonet', 'yonetim>dogrulayici': 'yonet', 'yonetim>is-emri': 'yonet',
  'yonetim>yapilandirma': 'yaz',
};
export const kalemAdi = (k) => `${k.split('>')[0]}.${k.split('>')[1]}.${EYLEM[k]}`;
```

```js
// kosum1.mjs — izin matrisi: her kalem kac yol aciyor, kac gunluk mesru istek tasiyor
import { AKIS, KENAR, ad, adimlar, yollar } from './ag.mjs';
import { kalemAdi } from './yetki.mjs';

const y = yollar(), kalem = KENAR.map(([a, b]) => ad(a, b));
const yolu = (k) => y.filter((p) => adimlar(p).includes(k)).length;
const istek = (k) => AKIS.filter(([, d]) => adimlar(d).includes(k)).reduce((s, [, , n]) => s + n, 0);
console.log(`izin kalemi ${kalem.length}, yol ${y.length}, gunluk mesru istek ${AKIS.reduce((s, [, , n]) => s + n, 0)}`);
console.log('\nizin kalemi                   actigi yol  gunluk mesru istek');
for (const [k, a, i] of kalem.map((k) => [k, yolu(k), istek(k)]).sort((p, q) => q[1] - p[1]))
  console.log(`${kalemAdi(k).padEnd(30)}${String(a).padEnd(12)}${i}`);
const bos = kalem.filter((k) => istek(k) === 0);
console.log(`\nmesru trafik tasimayan kalem ${bos.length}: ${bos.map(kalemAdi).join(', ')}`);
```

```
izin kalemi 22, yol 55, gunluk mesru istek 3513

izin kalemi                   actigi yol  gunluk mesru istek
toplayici.kuyruk.yaz          20          1440
kuyruk.dogrulayici.oku        20          1440
kuyruk.faturalama.oku         20          48
is-emri.kuyruk.yaz            16          32
sube-agi.yonetim.yonet        13          2
bakim-uc.yonetim.yonet        13          1
dogrulayici.olcum-deposu.yaz  12          1440
dogrulayici.fatura-vt.yaz     12          1
faturalama.fatura-vt.yaz      10          48
faturalama.abone-kayit.yaz    10          6
yonetim.toplayici.yonet       10          1
yonetim.is-emri.yonet         10          0
saha-uc.toplayici.yaz         5           1440
saha-uc.is-emri.yaz           5           0
sube-agi.toplayici.oku        5           210
sube-agi.is-emri.yaz          5           64
genel-uc.toplayici.oku        5           300
toplayici.olcum-deposu.yaz    5           510
bakim-uc.kuyruk.yonet         4           1
is-emri.abone-kayit.yaz       4           32
yonetim.dogrulayici.yonet     4           1
yonetim.yapilandirma.yaz      2           2

mesru trafik tasimayan kalem 2: saha-uc.is-emri.yaz, yonetim.is-emri.yonet
```

Tablo iki sütunu yan yana koyduğu için okunması gerekenden farklı okunur. Sol sütun yüksek olan
kalem tehlikeli, sağ sütun yüksek olan kalem vazgeçilmez değildir; karar iki sütunun **oranına**
bağlıdır. Kuyruğa yazma izni yirmi yol açıyor ama günde bin dört yüz kırk meşru isteği de taşıyor.
Doğrulayıcının fatura veritabanına yazma izni de on iki yol açıyor ve günde yalnız bir meşru istek
taşıyor. İki kalem yakın sayıda yol açar, ama biri kaldırıldığında ağ durur, diğeri kaldırıldığında
günde bir mutabakat işi durur.

Aynı satır çiftini karşılaştırmak ilkeyi somutlaştırıyor. Şube ağının yönetim istasyonuna yönetme
izni on üç yol açıyor ve günde iki istek taşıyor; bakım ucununki de on üç yol açıyor, bir istek
taşıyor. Yirmi iki kalemin sekizi günde beşten az istek taşıyor ve bunlar toplamda yolların çoğunu
açan kalemlerdir. En az yetki ilkesinin işe yaradığı yer tam olarak burasıdır: seyrek kullanılan
ama geniş açan kalemler.

Eylem sütunu okunmadığı hâlde tabloyu açıklıyor. Altı kalem `yonet` eylemi taşıyor ve bu altısının
taşıdığı günlük meşru istek toplamı yedidir; buna karşılık dördü onun üzerinde yol açıyor. Yönetme
izni doğası gereği geniştir: bir düğümü yönetebilen özne o düğümün bütün çıkış adımlarını da
kullanabilir. Tabloda yönetim istasyonunun üç ayrı yönetme izni ayrı satırlar hâlinde duruyor ama
üçü de aynı öznenin elinde toplanıyor. İzin kalemlerini tek tek saymak bu yığılmayı gizler; yol
sayımı ise gizlemez, çünkü aynı öznenin izinleri aynı yollarda birleşir.

Son satır ise ilkenin en ucuz kısmını veriyor. İki kalem hiçbir meşru istek taşımıyor: saha ucunun
iş emri servisine yazma izni ve yönetim istasyonunun iş emri servisini yönetme izni. İkisi de
verildi, ikisi de kullanılmıyor.

## Daraltma Sınırı

Kaldırma sırası önemlidir. Önce bedelsiz kalemler, sonra yol başına durdurduğu istek oranına göre
sıralanmış kalemler kaldırılıyor. Eşik, bir kalemin kaldırılmasının kabul edildiği en düşük
`açtığı yol / taşıdığı istek` değeridir.

```js
// kosum2.mjs — daraltma: once bedelsiz kalemler, sonra yol/istek esigi taranir
import { AKIS, KENAR, ad, adimlar, yollar } from './ag.mjs';

const y = yollar(), tum = y.length, kalem = KENAR.map(([a, b]) => ad(a, b));
const yolu = (k) => y.filter((p) => adimlar(p).includes(k)).length;
const istek = (k) => AKIS.filter(([, d]) => adimlar(d).includes(k)).reduce((s, [, , n]) => s + n, 0);
const bos = kalem.filter((k) => istek(k) === 0);
console.log(`bedelsiz daraltma: ${bos.length} kalem kaldirildi, kalan yol ${yollar(new Set(bos)).length}, duran mesru istek 0`);
console.log('\nesik  kaldirilan  kalan  duran  duran   kapanan yol basina');
console.log('      kalem       yol    akis   gunluk  duran istek');
for (const t of [Infinity, 10, 4, 1, 0.4, 0.1, 0]) {
  const kap = new Set([...bos, ...kalem.filter((k) => istek(k) > 0 && yolu(k) / istek(k) >= t)]);
  const kalan = yollar(kap).length;
  const kes = AKIS.filter(([, d]) => adimlar(d).some((k) => kap.has(k)));
  const dur = kes.reduce((s, [, , n]) => s + n, 0);
  console.log(`${(t === Infinity ? '-' : String(t)).padEnd(6)}${String(kap.size).padEnd(12)}${String(kalan).padEnd(7)}` +
    `${String(kes.length).padEnd(7)}${String(dur).padEnd(8)}${(dur / (tum - kalan)).toFixed(1)}`);
}
```

```
bedelsiz daraltma: 2 kalem kaldirildi, kalan yol 40, duran mesru istek 0

esik  kaldirilan  kalan  duran  duran   kapanan yol basina
      kalem       yol    akis   gunluk  duran istek
-     2           40     0      0       0.0
10    5           21     2      2       0.1
4     8           16     4      5       0.1
1     10          12     5      11      0.3
0.4   12          7      7      91      1.9
0.1   14          6      8      123     2.5
0     22          0      12     3513    63.9
```

İlk satır ilkenin bedava kısmıdır. İki kullanılmayan kalem kaldırıldığında elli beş yolun on beşi
kapanıyor ve hiçbir meşru iş durmuyor. Yolların yüzde yirmi yedisi sıfır bedelle gitti; bu iki
kalem, kimsenin fark etmediği ve hiç kullanılmadığı için de fark edilemeyecek olan kalemlerdi.

İkinci ve üçüncü satırlar ilkenin ucuz kısmıdır. Eşik on olduğunda beş kalem kaldırılıyor, kalan
yol kırktan yirmi bire iniyor ve karşılığında günde iki istek duruyor. Eşik dörde indiğinde kalan
yol on altı, duran istek beş. Otuz dokuz yol, günde beş isteğin bedeliyle kapandı — kapanan yol
başına onda bir istek.

Duran akış sütunu hangi işlerin sırayla düştüğünü söylüyor ve sıra rastgele değil. Eşik on iken
duran iki akış, günde bir ve iki istek taşıyan bakım oturumu ve mutabakattır; eşik dörde inince
kuyruk bakımı ve yapılandırma değişikliği eklenir. Yüksek eşikte kaldırılan kalemler seyrek
kullanılanlar olduğu için, ilk duran işler de seyrek koşan işlerdir: bakım, mutabakat, elle
yapılan yapılandırma. Bunlar günlük hacimde görünmez ama gerekli oldukları anda gereklidir ve o
an genellikle bir arıza anıdır. Kalan sekiz akış — okuma yükleme, doğrulama, sorgu, faturalama —
ancak eşik sıfır virgül dördün altına inince düşmeye başlar.

Dördüncü satırdan sonra eğri kırılıyor. Eşik birden sıfır virgül dörde inerken kalan yol on ikiden
yediye düşüyor, ama duran günlük istek on birden doksan bire çıkıyor. Beş yol daha kapatmanın
bedeli seksen istek, yani yol başına on altı istek — bir önceki adımın kırk katı. Eşik sıfıra
indirildiğinde bütün yollar kapanıyor ve on iki meşru akışın tamamı, günde üç bin beş yüz on üç
istek duruyor. Ağ artık güvenlidir ve artık ağ değildir.

## Kırk Üç Yolun Fiyatı

Tablo bir eğri çiziyor ve eğrinin adı en az yetkinin gerçek şeklidir. Elli beş yolun kırk üçü
günde on bir isteğin bedeliyle kapatılabiliyor; geri kalan on iki yol için ödenmesi gereken üç bin
beş yüz iki istektir. Yolların yüzde yetmiş sekizi bedelin yüzde sıfır virgül üçüyle kapanıyor.

Aynı eğri, en az yetkinin neden yarım bırakıldığını da açıklıyor. Kolay kısmı bittiğinde geriye
kalan iş, her adımda bir meşru akışı durdurmayı göze almayı gerektirir; bu da bir güvenlik kararı
değil, işletme kararıdır ve güvenlik ekibinin tek başına veremeyeceği bir karardır. Eşiğin nerede
durduğu bu yüzden ölçümden değil, durdurulmasına razı olunan işten çıkar.

Bu oran ilkenin nasıl uygulanacağını da söylüyor. Daraltmayı "hangi izin fazla" sorusuyla
başlatmak yanlış sıralamadır; doğru sıralama "hangi izin çok yol açıp az iş taşıyor" sorusudur.
İki soru aynı cevabı vermez: kuyruğa yazma izni yirmi yolla listenin en tepesindedir ama günde bin
dört yüz kırk istek taşıdığı için son kaldırılacak kalemler arasındadır. Yönetim istasyonunun iş
emri servisini yönetme izni ise on yolla listenin ortasındadır ve ilk kaldırılacak kalemdir, çünkü
hiçbir iş taşımaz.

Kalan on iki yolun neden pahalı olduğu da tablodan okunuyor. O yollar meşru akışların üzerinden
geçtiği kenarlardan oluşuyor: saha ucundan toplayıcıya, toplayıcıdan kuyruğa, kuyruktan
doğrulayıcıya. Bir saldırı yolu ile bir iş akışı burada aynı kenarı paylaşıyor ve izin kalemi
ikisini ayırt edemiyor, çünkü izin kalemi yalnız "kim, neye, ne yapabilir" sorusunu yanıtlar.
En az yetkinin sınırı bu ayırt edememedir. Daraltma yolları meşru kanalın genişliğine indirir ve
orada durur — önceki derste beş katmanın durduğu yerin aynısı, farklı bir yoldan.

Tablonun göstermediği iki şey de kararın parçasıdır. Birincisi, daraltma bir kez yapılıp bitmez:
ağa bir servis eklendiğinde kenar sayısı büyür, yeni kenarların açtığı yollar ilk gün geniş
verilir ve eşik yeniden taranana kadar açık kalır. Ölçüm bir andaki fotoğraftır, sürekli bir
durum değil. İkincisi, kaldırılan her kalem bir yapılandırma değişikliğidir ve o değişikliğin
kendisi yanlış yazılabilir. Bedelsiz görünen ilk iki kalem gerçekte de bedelsizdir, ancak eşik
birin altına indiğinde kaldırılan kalemlerin çoğu seyrek koşan işlere aittir — bir kalem yanlış
kaldırıldığında bunun anlaşılması, o işin bir sonraki koşma zamanını bekler. Yol sayısı anında
düşer, durma haftalar sonra görünür.

## Özet

- Grafiğin yirmi iki kenarı yirmi iki izin kalemine karşılık geliyor. Her kalem iki sayı taşır:
  açtığı yol ve taşıdığı günlük meşru istek; karar bu ikisinin oranıyla verilir.
- Yakın sayıda yol açan iki kalem çok farklı olabilir: kuyruğa yazma izni 20 yol açıyor ve günde
  1.440 istek taşıyor, doğrulayıcının fatura yazma izni 12 yol açıyor ve günde 1 istek taşıyor.
- İki izin kalemi hiçbir meşru istek taşımıyor. Kaldırıldıklarında 55 yolun 15'i sıfır bedelle
  kapanıyor — yolların %27'si, kimsenin fark etmediği iki kalemden geliyordu.
- Eşik taraması eğrinin kırıldığı yeri veriyor: 43 yol günde 11 isteğin bedeliyle kapanıyor,
  kalan 12 yol için 3.502 istek gerekiyor. Yolların %78'i bedelin %0,3'üyle kapanıyor.
- Bütün izinler kaldırıldığında kalan yol 0, duran günlük istek 3.513: on iki meşru akışın
  tamamı. Tam daraltma, ağın işlevini kaldırmakla aynı şeydir.
- Daraltma sıralaması "hangi izin fazla" ile değil "hangi izin çok yol açıp az iş taşıyor" ile
  yapılır; iki soru farklı sıralama üretir.

## Sonraki Adım

Bu ders izin kalemlerini tek tek kaldırdı ve her kaldırmanın bedelini saydı. Ama bütün ölçüm bir
varsayım üzerinde durdu: bir adım kapandığında yalnız o adım kapanıyor, düğümlerin kendisi yerinde
kalıyor. Gerçek bir olayda kapanan şey bir adım değil, bir düğümdür — bir servis ele geçirilir ve
o servisin sahip olduğu bütün izinler saldırganın eline geçer. Kırk üç yolu kapatan daraltma, ele
geçirilen düğümün kendi izinleriyle açtığı yolları kapatmaz. Sonraki dersin sorusu bu yüzden
düğümlerin nasıl gruplandığıdır: ağ bölmelere ayrıldığında bir bölme düştüğünde kaç kaleme
erişiliyor, bölme sayısı arttıkça bu sayı nasıl azalıyor ve bölmeler arasında koşan meşru
trafiğin bedeli kaç geçit ediyor.
