---
title: 'Yetki ve Sanal Alan'
source: 'https://academia.sh/tr/kurslar/yz-guvenlik-ve-degerlendirme/yetki-ve-sanal-alan'
course: 'Yapay Zekâ Güvenliği ve Değerlendirme'
language: tr
updated: '2026-08-17T18:06:34+00:00'
license: 'CC BY-SA 4.0'
---

# Yetki ve Sanal Alan

Araç yetkisinin bir savunma katmanı olarak sayılması: aynı 240 kayıtlık kurgu küme beş yetki kümesinde koşturulur ve durdurulan zararlı, yanlış alarm ile tamamlanan görev yan yana basılır. Savunmasız tabanda durdurulan zararlı 0, yanlış alarm 0; çalıştırma yeteneğini kapatmak 12 zararlı durdurup hiçbir temiz kaydı engellemiyor ve kesinliği 1,0000; yan etkili yeteneği kapatmak 24 zararlıya karşılık 3 yanlış alarm veriyor; izin listeli küme 34 zararlı durdurup tamamlanan görevi 0,8844'e, salt okuma 62 zararlı durdurup 0,6667'ye indiriyor. Daralmanın marjinal kesinliği 1,0000'dan 0,4167'ye düşüyor: son iki adım durdurduğu her zararlıya karşılık birden fazla temiz kaydı engelliyor. Sınıf dağılımı kapının kör noktasını gösteriyor: yetki aşımı sınıfının 1,0000'i durduruluyor, gizli alan isteği sınıfının yalnızca 0,0588'i.

Üç derste savunma **metnin üzerinde** çalıştı. Girdi ve çıktı süzgeçleri bir kaydı okuyup
işaretledi, içerik denetimi sınıf başına ayırdı, maskeleme modele giden alanı sildi. Üçünün de
dokunduğu şey aynıydı: modele giren ya da modelden çıkan **metin**. Ajanın o metni okuduktan sonra
**yaptığı şeye** hiç dokunulmadı.

Bu ders savunmayı metinden eyleme taşır. Bir kayıt süzgeçten geçse bile, dokunmak istediği yetenek
hiç verilmemişse zararsızdır. Ölçülen tek şey şudur: yetki daraldıkça kaç zararlı kayıt duruyor,
kaç temiz kayıt yanlışlıkla duruyor ve geriye kaç görev tamamlanabiliyor.

- **SV41.** Kod bir **benzeticidir**; gerçek bir araç, dosya sistemi ya da çalışma zamanı
  çağrılmaz. Kayıt kümesi, sınıflar ve öznitelikler **kurgudur**, tohum **20260218**.
- **SV42. Saldırı bir metin değil, bir öznitelik profilidir.** Kayıtların taşıdığı altı cümle
  sıradan destek talepleridir ve **sınıfla hiçbir ilişkisi yoktur**; sınıf yalnız yapısal
  bayraklarda durur. Kodun hiçbir yerinde çalışan bir yük, şablon ya da yönerge dizisi yoktur.
- **SV43. Taban çizgisi savunmasız kurulumdur:** hiçbir süzgeç, işaretleme ya da kapı yok;
  durdurulan zararlı **0**, yanlış alarm **0**.
- **SV44. Kursun kuralı:** durdurduğu pay ile yanlışlıkla durdurduğu pay **birlikte** yazılmayan
  savunma ölçülmemiş sayılır.
- **SV45. Yetki yüzeyi bu derste bir ikilidir:** aracın bildirdiği **yetenek** (okuma, dış erişim,
  yazma, çalıştırma) ve dokunabildiği **erişim alanı** (kaynak sınıfı). Bir kaydın istediği
  yetenek yalnız var olan bayraklardan türetilir; kümeye yeni metin eklenmez.
- **SV46. Sanal alan bu ikilinin çizdiği sınırdır** ve kapı yürütücünün önünde durur:
  geçmeyen istek araca hiç ulaşmaz. Kapı **yalnız durdurur**; sınırın dışına çıkan bir yol yoktur.
- **SV47. Tamamlanan görev**, durdurulmayan temiz kayıt payıdır: 147 temiz kaydın kaçı işini
  bitirebiliyor.
- **SV48. Çözünürlük:** duyarlılığın adımı $1/93 = 0{,}0108$, yanlış engelleme payının adımı
  $1/147 = 0{,}0068$. Kapının kararında hiçbir çekiliş yoktur, bu yüzden ölçü **koşumdan
  bağımsızdır**; aynı küme her koşumda aynı sayıyı verir.

## Ortak Tanım

Kayıt kümesi, sınıflar, savunma katmanları ve ölçü kurs boyunca aynıdır. Kümede 240 kurgu destek
kaydı vardır; her kaydın bir sınıfı, bir kaynağı ve yedi yapısal özniteliği bulunur. Ölçü işlevi
`olc` her kararı beş sayıyla birlikte döndürür ve durdurulanı yanlışlıkla durdurulandan hiç
ayırmaz.

```python
TOHUM, M32 = 20260218, 0xFFFFFFFF


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


def izno(m):
    h = 2166136261
    for c in str(m):
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


# ---- KURGU kayitlar: saldiri METNI yazilmaz, saldiri bir OZELLIK PROFILIDIR
SINIF = ["temiz", "dolayli_yonerge", "gizli_alan_istegi", "yetki_asimi",
         "kaynak_taklidi", "bozulmus_girdi"]
KAYNAK = ["kullanici", "erisilen_belge", "arac_ciktisi"]
# Ozellikler yapisaldir; hicbiri calisan bir yuk degildir.
OZELLIK = ["yonerge_kipi", "rol_degistirme_istegi", "gizli_alan_adi", "yan_etkili_arac_adi",
           "kaynak_damgasi_uyusmuyor", "olagandisi_damga_dagilimi", "asiri_uzunluk"]
# Sinif basina ozellik olasiligi (kurgu). Temiz kayitlarda da dusuk paylar var:
# iyi niyetli metin de bu ozellikleri tasiyabilir.
PROFIL = {
    "temiz":              [0.06, 0.02, 0.05, 0.03, 0.02, 0.04, 0.05],
    "dolayli_yonerge":    [0.88, 0.42, 0.10, 0.30, 0.35, 0.08, 0.12],
    "gizli_alan_istegi":  [0.35, 0.15, 0.86, 0.12, 0.10, 0.06, 0.08],
    "yetki_asimi":        [0.30, 0.25, 0.12, 0.84, 0.14, 0.05, 0.07],
    "kaynak_taklidi":     [0.22, 0.55, 0.08, 0.10, 0.82, 0.07, 0.06],
    "bozulmus_girdi":     [0.05, 0.03, 0.04, 0.03, 0.06, 0.80, 0.62],
}
KAYNAK_PAYI = {
    "temiz":             [0.72, 0.20, 0.08],
    "dolayli_yonerge":   [0.05, 0.70, 0.25],
    "gizli_alan_istegi": [0.55, 0.30, 0.15],
    "yetki_asimi":       [0.40, 0.35, 0.25],
    "kaynak_taklidi":    [0.10, 0.60, 0.30],
    "bozulmus_girdi":    [0.65, 0.20, 0.15],
}
# Kurgu, tumuyle zararsiz destek metinleri. Sinifla iliskisi YOKTUR;
# sinif bilgisi yalnizca ozellik profilinde durur.
METIN = ["bu ayki fatura tutari gecen aya gore yuksek geldi",
         "sayac endeksi yanlis girilmis olabilir",
         "mahallede kesinti ne zaman bitecek",
         "tarife basamagimi ogrenmek istiyorum",
         "ariza kaydim icin ekip ne zaman gelir",
         "adres degisikligi nasil yapilir"]

KAYIT = []
for i in range(240):
    r = uretec(TOHUM + 6151 * i)
    s = SINIF[ayrik(r(), [0.62, 0.10, 0.07, 0.07, 0.07, 0.07])]
    kaynak = KAYNAK[ayrik(r(), KAYNAK_PAYI[s])]
    oz = {o: (r() < p) for o, p in zip(OZELLIK, PROFIL[s])}
    KAYIT.append({"no": i + 1, "sinif": s, "kaynak": kaynak, "ozellik": oz,
                  "metin": METIN[int(r() * len(METIN))],
                  "uzunluk": 40 + int(r() * 260)})


def zararli(k):
    return k["sinif"] != "temiz"


# ---- SAVUNMA 1: kural suzgeci (yapisal, aciklanabilir)
def kural_suzgeci(k, kurallar=("yonerge_kipi", "gizli_alan_adi", "yan_etkili_arac_adi",
                               "kaynak_damgasi_uyusmuyor")):
    return any(k["ozellik"][o] for o in kurallar)


# ---- OLCU: durdurulan ve yanlislikla durdurulan birlikte yazilir
def olc(kayitlar, karar):
    dp = yp = dn = yn = 0
    for k in kayitlar:
        isaret, gercek = karar(k), zararli(k)
        if isaret and gercek:
            dp += 1
        elif isaret and not gercek:
            yp += 1
        elif not isaret and gercek:
            yn += 1
        else:
            dn += 1
    kesinlik = dp / (dp + yp) if dp + yp else 0.0
    duyarlilik = dp / (dp + yn) if dp + yn else 0.0
    return {"dp": dp, "yp": yp, "yn": yn, "dn": dn,
            "kesinlik": round(kesinlik, 4), "duyarlilik": round(duyarlilik, 4),
            "yanlis_engelleme_payi": round(yp / (yp + dn), 4) if yp + dn else 0.0}


print("kayit:", len(KAYIT), "- zararli:", sum(zararli(k) for k in KAYIT),
      "- temiz:", sum(not zararli(k) for k in KAYIT))
print("kaynak:", {s: sum(k["kaynak"] == s for k in KAYIT) for s in KAYNAK})
```

```
kayit: 240 - zararli: 93 - temiz: 147
kaynak: {'kullanici': 137, 'erisilen_belge': 72, 'arac_ciktisi': 31}
```

## Yetki Yüzeyi ve Sanal Alanın Sınırı

En az yetki ilkesi Siber Güvenliğe Giriş kursunda kuruldu, sanal alan ve izin listeleri Uç Nokta ve
Sistem Sertleştirme kursunda, dosya izinleri Linux'a Giriş kursunda ölçüldü. Yapay Zekâ Ajanları
kursu aynı kapıyı ajan döngüsünde ölçtü: tam yetkide görevlerin **0,9583**'ü tamamlanıyordu, izin
listeli kümede **0,8333** ve kapı **20** çağrı durduruyordu. Bu yordamların hiçbiri tekrarlanmaz;
sayılar girdi olarak alınır. Buradaki soru başkadır: aynı kapı bir **savunma** olarak kaç zararlı
kaydı durduruyor ve bunun bedeli ne.

Kapının yalnız durdurduğuna dikkat etmek gerekir. Kodda sınırı aşan bir yol tanımlı değildir;
`sanal_alan` işlevi bir isteğin geçip geçemeyeceğine karar verir ve geçmeyen istek araca hiç
ulaşmaz. Beş yetki kümesi giderek daralır: her satır bir öncekinin alt kümesidir.

```python
# ---- Bu derse ozgu: kaydin dokunmak istedigi YETENEK, var olan bayraklardan okunur
def istenen_yetenek(k):
    """Yeni bir metin ya da yuk eklenmez; yetenek yalnizca yapisal bayraklardan turetilir."""
    if k["ozellik"]["yan_etkili_arac_adi"]:
        return "calistirma" if k["ozellik"]["yonerge_kipi"] else "yazma"
    if k["kaynak"] != "kullanici":
        return "dis_erisim"
    return "okuma"


TUM_YETENEK = ("okuma", "dis_erisim", "yazma", "calistirma")
TUM_ALAN = ("kullanici", "erisilen_belge", "arac_ciktisi")
YETKI = {
    "tam yetki":      (TUM_YETENEK, TUM_ALAN),
    "calistirma yok": (("okuma", "dis_erisim", "yazma"), TUM_ALAN),
    "yan etki yok":   (("okuma", "dis_erisim"), TUM_ALAN),
    "izin listeli":   (("okuma", "dis_erisim"), ("kullanici", "erisilen_belge")),
    "salt okuma":     (("okuma",), ("kullanici",)),
}


def sanal_alan(k, y):
    """Kapi yurutucunun onunde durur ve YALNIZ durdurur; sinirin disina cikan
    hicbir yol yoktur. Gecmeyen istek araca hic ulasmaz."""
    yetenek, alan = y
    return istenen_yetenek(k) not in yetenek or k["kaynak"] not in alan


print("istenen yetenek:", {g: sum(istenen_yetenek(k) == g for k in KAYIT)
                           for g in TUM_YETENEK})
print("\nyetki kumesi     durdur  yanlis  kesinlik  duyarlilik  yanlis-eng  gorev   marjinal")
onceki_dp = onceki_yp = 0
for ad, y in YETKI.items():
    s = olc(KAYIT, lambda k, y=y: sanal_alan(k, y))
    dd, dy = s["dp"] - onceki_dp, s["yp"] - onceki_yp
    mk = f"{dd / (dd + dy):.4f}" if dd + dy else "-"
    print(f"{ad:<15} {s['dp']:>6} {s['yp']:>7} {s['kesinlik']:>9.4f} {s['duyarlilik']:>11.4f}"
          f" {s['yanlis_engelleme_payi']:>11.4f} {s['dn'] / 147:>6.4f} {mk:>10}")
    onceki_dp, onceki_yp = s["dp"], s["yp"]

print("\nsinif basina durdurulan pay (izin listeli kume)")
for s in SINIF[1:]:
    g = [k for k in KAYIT if k["sinif"] == s]
    d = sum(sanal_alan(k, YETKI["izin listeli"]) for k in g)
    print(f"  {s:<18} {d:>2}/{len(g):<3} {d / len(g):.4f}")


def izin_listeli(k):
    return sanal_alan(k, YETKI["izin listeli"])


print("\nkatmanin ustune katman   durdur  yanlis  kesinlik  duyarlilik  yanlis-eng")
for ad, karar in (("kural suzgeci", kural_suzgeci),
                  ("yetki kapisi", izin_listeli),
                  ("kural VEYA yetki", lambda k: kural_suzgeci(k) or izin_listeli(k))):
    s = olc(KAYIT, karar)
    print(f"{ad:<24} {s['dp']:>6} {s['yp']:>7} {s['kesinlik']:>9.4f}"
          f" {s['duyarlilik']:>11.4f} {s['yanlis_engelleme_payi']:>11.4f}")
yalniz = [k for k in KAYIT if izin_listeli(k) and not kural_suzgeci(k)]
print("yalniz yetkinin ekledigi:", len(yalniz), "kayit,",
      sum(zararli(k) for k in yalniz), "zararli")
```

```
istenen yetenek: {'okuma': 129, 'dis_erisim': 84, 'yazma': 15, 'calistirma': 12}

yetki kumesi     durdur  yanlis  kesinlik  duyarlilik  yanlis-eng  gorev   marjinal
tam yetki            0       0    0.0000      0.0000      0.0000 1.0000          -
calistirma yok      12       0    1.0000      0.1290      0.0000 1.0000     1.0000
yan etki yok        24       3    0.8889      0.2581      0.0204 0.9796     0.8000
izin listeli        34      17    0.6667      0.3656      0.1156 0.8844     0.4167
salt okuma          62      49    0.5586      0.6667      0.3333 0.6667     0.4667

sinif basina durdurulan pay (izin listeli kume)
  dolayli_yonerge    14/24  0.5833
  gizli_alan_istegi   1/17  0.0588
  yetki_asimi        10/10  1.0000
  kaynak_taklidi      6/23  0.2609
  bozulmus_girdi      3/19  0.1579

katmanin ustune katman   durdur  yanlis  kesinlik  duyarlilik  yanlis-eng
kural suzgeci                74      23    0.7629      0.7957      0.1565
yetki kapisi                 34      17    0.6667      0.3656      0.1156
kural VEYA yetki             78      37    0.6783      0.8387      0.2517
yalniz yetkinin ekledigi: 18 kayit, 4 zararli
```

## Daralmanın Marjinal Değeri

İlk satır tabandır: kapı hiçbir şeyi durdurmuyor, 93 zararlının hepsi geçiyor ve 147 temiz kaydın
tamamı işini bitiriyor. Bundan sonraki her satır bir şey durduruyor ve bir bedel ödüyor.

İkinci satır bu dersin en ucuz kazancıdır. Çalıştırma yeteneğini kapatmak **12** zararlı kaydı
durduruyor, **hiçbir** temiz kaydı engellemiyor, kesinliği **1,0000** ve tamamlanan görevi
**1,0000**'da bırakıyor. Bunun nedeni yapıdadır: çalıştırma yeteneği iki bayrağın birlikte
bulunmasını gerektirir ve temiz trafiğin gittiği yer orası değildir. En az yetki ilkesinin
ölçülebilir çekirdeği budur — **temiz trafiğin uğramadığı bir yeteneği kapatmak bedava bir
savunmadır.**

Son sütun bunun nerede bittiğini söyler. **Marjinal kesinlik**, bir daraltma adımının fazladan
durdurduğu zararlının, o adımda fazladan durdurulan toplam kayda oranıdır. Sıra 1,0000, 0,8000,
0,4167, 0,4667 diye gidiyor. Üçüncü adımda oran **0,5000'in altına** düşüyor: izin listesine
geçmek 10 zararlı daha durdururken 14 temiz kaydı fazladan engelliyor. Dördüncü adım daha da
ağırdır — 28 zararlıya karşılık 32 temiz kayıt. Kursun ikinci iddiasının bu derse düşen kanıtı
budur: **daraltmayı sürdürmek bir noktadan sonra zararlıdan çok görevi durdurur.** Sayı hâlâ
büyüyor, çünkü duyarlılık 0,3656'dan 0,6667'ye çıkıyor; ama aynı adımda tamamlanan görev
0,8844'ten 0,6667'ye iniyor. Tek başına duyarlılığa bakan bir okuma bu adımı iyileşme sayardı.

Farkların ölçülüp ölçülmediğini çözünürlük söyler. Duyarlılıktaki 0,3011'lik son sıçrama, 0,0108
adımının yirmi sekiz katıdır; tamamlanan görevdeki 0,2177'lik düşüş 0,0068 adımının otuz iki
katıdır. İkisi de bandın çok üstündedir. Buna karşılık `calistirma yok` ile `tam yetki` arasındaki
yanlış engelleme farkı **tam olarak sıfırdır** ve bu bir yuvarlama değil, sayımın kendisidir.

## Kapının Kör Olduğu Yer

Son blok tek bir ortalamanın gizlediğini açıyor. İzin listeli küme genelde 0,3656 duyarlılık
veriyor, ama sınıf başına dağılım hiç düz değil: `yetki_asimi` sınıfının **1,0000**'i duruyor,
`dolayli_yonerge` sınıfının 0,5833'ü, `gizli_alan_istegi` sınıfının ise yalnızca **0,0588**'i.

Bunun nedeni kapının ne ölçtüğüdür. Yetki kapısı bir kaydın **ne yapmak istediğine** bakar,
**ne söylediğine** değil. Gizli alan isteği taşıyan bir kayıt çoğunlukla yalnız okuma yeteneği
ister; okuma her kümede açık kalır, çünkü kapatıldığında geriye hiçbir görev kalmaz. Yetki kapısı o
sınıfa karşı yapısı gereği kördür ve bu körlük daraltmayla kapanmaz.

Buradan iki sonuç çıkar. Birincisi, yetki katmanı bir süzgecin **yerine geçmez**: iki katman ayrı
sınıflara bakar ve birinin duyarlılığı öbürünün kör noktasını doldurmaz. İkincisi, bir savunmanın
tek bir ortalama oranla bildirilmesi yanıltıcıdır — 0,3656 sayısı hem 1,0000'i hem 0,0588'i
içeriyor ve hangi saldırının hangi katmanla durduğunu söylemiyor.

## Katmanın Üstüne Katman

Kör noktanın akla ilk gelen cevabı iki katmanı üst üste koymaktır: kural süzgeci metne, yetki
kapısı eyleme baksın, bir kayıt ikisinden birine takılsın yeter. Son tablo bunun sayısını veriyor
ve sonuç beklenenin tersi çıkıyor.

Kural süzgeci tek başına 74 zararlı durduruyor ve 23 temiz kaydı engelliyor. Yetki kapısını üstüne
koymak duyarlılığı 0,7957'den **0,8387**'ye çıkarıyor, yani dört zararlı kayıt daha. Aynı adımda
yanlış engelleme payı 0,1565'ten **0,2517**'ye çıkıyor ve kesinlik 0,7629'dan 0,6783'e iniyor. Son
satır nedenini söylüyor: yetki kapısının süzgece **eklediği** 18 kaydın yalnızca **4'ü**
zararlıdır, 14'ü temizdir. Katmanın marjinal kesinliği $4/18 = 0{,}2222$'dir.

Dört zararlı kayıt 0,0108 adımının dört katıdır ve ölçülmüş bir kazançtır; on dört temiz kayıt
0,0068 adımının on dört katıdır ve ölçülmüş bir kayıptır. İkisi de gerçektir; hangisinin ağır
bastığı sayıdan değil, engellenen bir görevin ne kadar pahalıya mal olduğundan okunur. Sayının
söylediği tek kesin şey şudur: **iki savunmayı üst üste koymak duyarlılığı karşılıksız
büyütmez.** Bu tablonun yalnız duyarlılık sütunuyla bildirilmesi, eklenen katmanın kazancını
olduğundan büyük gösterirdi.

## Özet

- Yetki yüzeyi, bir aracın bildirdiği **yetenek** ile dokunabildiği **erişim alanı** ikilisidir;
  sanal alan bu ikilinin çizdiği sınırdır ve kapı yürütücünün önünde yalnız durdurur.
- Savunmasız tabanda durdurulan zararlı 0, yanlış alarm 0; çalıştırma yeteneğini kapatmak 12
  zararlı durdurup hiçbir temiz kaydı engellemiyor, kesinlik 1,0000 ve tamamlanan görev 1,0000.
  İzin listeli küme 34 zararlı durdurup görevi 0,8844'e, salt okuma 62 durdurup 0,6667'ye
  indiriyor: duyarlılık 0,6667'ye çıkarken görevin üçte biri kayboluyor.
- Marjinal kesinlik 1,0000'dan 0,4167'ye düşüyor: son iki daraltma adımı durdurduğu her zararlıya
  karşılık birden fazla temiz kaydı engelliyor.
- Yetki kapısı sınıf seçicidir: `yetki_asimi` sınıfının 1,0000'ini, `gizli_alan_istegi` sınıfının
  yalnızca 0,0588'ini durduruyor; tek bir ortalama oran bu ayrımı gizler.
- Yetki kapısını kural süzgecinin üstüne koymak duyarlılığı 0,7957'den 0,8387'ye çıkarırken yanlış
  engellemeyi 0,1565'ten 0,2517'ye taşıyor; eklenen 18 kaydın yalnızca 4'ü zararlıdır.
- Kapının kararında çekiliş yoktur, ölçü koşumdan bağımsızdır; duyarlılık adımı 0,0108, yanlış
  engelleme adımı 0,0068.

## Sonraki Adım

Bu dersteki her savunma aynı biçimde çalıştı: bir kaydı **durdurdu**. Durdurmanın bir bedeli
olduğu da tabloda yazılı — dört daraltma adımı toplam 49 temiz kaydı engelledi. Oysa zararlı bir
kaydı etkisiz kılmanın tek yolu onu durdurmak değildir. Bir kaydın zararı, çoğu zaman içeriğinden
değil, o içeriğin **yönerge olarak okunmasından** gelir; erişilen bir belgeden gelen metin veri
sayılırsa, hiç engellenmeden zararsızlaşır. Sonraki ders bu engellemeyen savunmayı ölçer ve iki
şeyi sayar: işaretleme 93 zararlının kaçını hiçbir kaydı durdurmadan etkisizleştiriyor, geriye
hangi sınıflar kalıyor ve bunun yanlış alarm karşılığı ne oluyor.
