---
title: 'Sıfır Güven Ağ Modeli'
source: 'https://academia.sh/tr/kurslar/kablosuz-ve-guvenlik/sifir-guven-ag-modeli'
course: 'Kablosuz Ağlar ve Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:07:22+00:00'
license: 'CC BY-SA 4.0'
---

# Sıfır Güven Ağ Modeli

Konum ölçütü kural dizisinden silindiğinde bir kural örtük evete dönüşür, üç kural gölgelenir ve fazla geçen sıfırdan on sekize çıkar; yerine kimlik ölçütü konduğunda kural sayısı yediden ona, belge koşulu eklendiğinde fazla duran birden dörde çıkar.

Uçtan uca tünelin bütün numarası, dışarıdaki bir ucu kural dizisine içeriden gelmiş gibi
göstermekti. O numaranın zorunlu olmasının nedeni tek bir satırdaydı: kural dizisi `kaynak`
ölçütünü okuyor ve okuyacak bir bölge bekliyor. Tünel bir bölge uyduruyor, çünkü dizinin
sorduğu soru "nereden geliyorsun" idi.

**Sıfır güven (zero trust)** bu soruyu bırakmayı önerir. İlkenin kendisi Siber Güvenlik
müfredatında kuruldu ve burada tekrarlanmaz. Bu dersin sorusu ilke değil, **cerrahidir**:
`kaynak` ölçütü kural dizisinden çıkarıldığında dizide ne kalır, kaç kural gölgelenir, iki
yönlü hata nasıl değişir ve boşalan yere ne konmak zorundadır.

## Konum Ölçütü Neyi Temsil Ediyordu

Kursun dar kural kümesi yedi kuraldan oluşur ve yedisi de `kaynak` ölçütünü taşır. Ölçüt
akışın hangi bölgeden geldiğini söyler ve bölge, kural yazan kişi için bir kısaltmadır:
"iç bölütteki bir makine" ile "kurumun çalışanı" aynı şey sayılmıştır.

Bu kısaltmanın bir bedeli yoktur — kısaltma doğru olduğu sürece. Kablonun ucundaki makine
gerçekten çalışanın makinesiyse, konum kimliğin yerine geçer ve dizi doğru karar verir. Bir
önceki dersin uçtan uca tüneli tam olarak bu kısaltmayı ayakta tutmak için vardı: uzak ucun
bir bölgesi yoktu, tünel ona bir bölge atadı ve kısaltma yeniden çalışır oldu.

Sıfır güvenin iddiası kısaltmanın artık taşımadığıdır. Bu dersin ölçtüğü şey iddianın doğru
olup olmadığı değil — kısaltmayı **kaldırmanın** kural dizisine ne yaptığıdır.

## Ölçütü Silmek

Silme işlemi mekaniktir: her kuralın ölçüt sözlüğünden `kaynak` anahtarı çıkarılır. Kural
sayısı değişmez, eylemler değişmez, sıra değişmez.

```text
# ogretilen dokum , calistirilmamistir

konum ölçütlü dizi                       konum ölçütü silinmiş dizi
1  izin  kaynak=dis  hedef=dmz  bn=80    1  izin  hedef=dmz  bn=80
2  izin  kaynak=dis  hedef=dmz  bn=443   2  izin  hedef=dmz  bn=443
3  izin  kaynak=dmz  hedef=ic   bn=3306  3  izin  hedef=ic   bn=3306
4  izin  kaynak=yonetim                  4  izin  (ölçüt kalmadı)
5  izin  kaynak=ic    hedef=dmz          5  izin  hedef=dmz
6  izin  kaynak=ic    hedef=dis          6  izin  hedef=dis
7  izin  kaynak=ic    hedef=ic           7  izin  hedef=ic
(sonda örtük ret)                        (sonda örtük ret)
```

Dördüncü kural sorunun tamamını taşır. Konum ölçütlü hâlinde tek ölçütü vardı ve o ölçüt
`kaynak` idi; silindiğinde geriye **hiçbir ölçüt kalmaz**. Ölçütsüz bir kural her akışla
eşleşir: "ilk eşleşen kazanır" kuralı gereği dördüncü satır artık bir **örtük evettir** ve
kendisinden sonraki üç kuralı gölgeler. Örtük ret ise hiç sıra bulamaz.

## Yerine Ne Konur

Konum ölçütü, akışın **kim adına** açıldığını dolaylı olarak söylüyordu. Kaldırıldığında
yerine doğrudan söyleyen bir ölçüt konmalıdır. Bu ölçüt akışın kendisiyle gelir ve kabloya
bağlı değildir; dersin kurgusunda adı `kimlik`, aldığı değerler `konuk`, `calisan`, `hizmet`
ve `yonetici` sınıflarıdır.

İkinci bir alan zorunludur: `belge`. Kimlik bir bildirimdir ve bildirimi doğrulayan bir
şeyin bulunması gerekir. Belgesi bulunmayan bir akışın kimliği bilinmiyor sayılır ve dizi
onu örtük rete düşürür. Bu, sıfır güvenin "doğrula, varsayma" cümlesinin kural dizisindeki
karşılığıdır — ve bedeli ölçülecektir.

Kimlik ölçütlü dizi, konum ölçütlü diziden **daha uzundur**. Nedeni dördüncü kuraldır:
`kaynak=yonetim` tek satırda bütün hedefleri açıyordu, çünkü bölge zaten bir güven
bildirimiydi. Kimlik tarafında böyle bir bildirim yoktur; `yonetici` kimliğinin gideceği
her hedef ayrı yazılır ve bir kural dörde çıkar.

Ölçümün varsayımları:

- **AG57** — Kırk akış kursun ortak kurgusundan üretilir. Kâhin `politika` işlevidir ve
  bu derste **değiştirilmez**; niyet kursun sabitidir.
- **AG58** — `politika` konum diliyle yazılmıştır. Kimlik ölçütlü bir diziyi bu kâhine göre
  ölçmek, iki dilin **ayrıldığı akışları** saymaktır; ölçüm kimliğin doğruluğunu değil,
  değişimin büyüklüğünü verir.
- **AG59** — Her akışa bir kimlik sınıfı eklenir. Akışların çoğunda kimlik bölgeyle
  eşleşir; kurgu bir azınlığı bilerek ayırır, çünkü kimlik kabloya bağlı değildir.
- **AG60** — Her akışa bir `belge` durumu eklenir. Kurgu bir azınlığı belgesiz bırakır;
  belge alanı akışın kimlik bildiriminin doğrulanabildiğini söyler, bildirimin içeriğini
  değil.
- **AG61** — Dört dizi karşılaştırılır: konum ölçütlü, konum ölçütü silinmiş, kimlik
  ölçütlü, kimlik ve belge koşullu. Değerlendirme düzeneği dördünde de aynıdır: ilk
  eşleşen kazanır, sonda örtük ret durur.
- **AG62** — Gölgelenen kural sayısı, kendinden önceki bir kuralın ölçütünü tümüyle
  kapsadığı kural sayısıdır; ölçüt kümesi boşalan bir kural, sonrasındaki her kuralı
  gölgeler.
- **AG63** — Küme kırk akıştır; ölçülebilen en küçük fark `1/40 = 0,025`.

## Ölçüm

```python
"""Konum olcutunu kural dizisinden cikarmanin etkisi.

Bolum 1 - kaynak olcutlu dizi, olcut silinmis dizi, kimlik olcutlu dizi.
Bolum 2 - silinen olcutun kural dizisinde biraktigi bosluk.
"""
TOHUM = 20260811
BOLGELER = ("dis", "dmz", "ic", "yonetim")
KIMLIKLER = ("konuk", "calisan", "hizmet", "yonetici")
ESLEME = {"dis": "konuk", "dmz": "hizmet", "ic": "calisan", "yonetim": "yonetici"}


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def akislar(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kaynak": BOLGELER[r(4)],
                      "hedef": BOLGELER[r(4)],
                      "bnokta": (80, 443, 22, 3306, 8080)[r(5)]})
    return liste


def kimlikle(liste, tohum=TOHUM + 6):
    """Her akisa bir kimlik sinifi ve bir belge durumu ekler."""
    r, cikti = uretec(tohum), []
    for a in liste:
        ayrik, aday = r(9) == 0, KIMLIKLER[r(4)]
        cikti.append({**a, "kimlik": aday if ayrik else ESLEME[a["kaynak"]],
                      "belge": r(8) != 0})
    return cikti


def politika(a):
    """Niyet: disaridan yalniz DMZ web kalemine; yonetime disaridan kimse."""
    if a["kaynak"] == "dis":
        return a["hedef"] == "dmz" and a["bnokta"] in (80, 443)
    if a["kaynak"] == "dmz":
        return a["hedef"] == "ic" and a["bnokta"] == 3306
    if a["kaynak"] == "yonetim":
        return True
    return a["hedef"] != "yonetim"


def fark(olaylar, niyet, duzenek):
    d = {"dogru_gecti": 0, "dogru_durdu": 0, "yanlis_gecti": 0, "yanlis_durdu": 0}
    for o in olaylar:
        n, g = niyet(o), duzenek(o)
        if n and g:
            d["dogru_gecti"] += 1
        elif not n and not g:
            d["dogru_durdu"] += 1
        elif g:
            d["yanlis_gecti"] += 1
        else:
            d["yanlis_durdu"] += 1
    return d


def kural_dizisi(kurallar):
    """Ilk eslesen kazanir; sonda ortuk ret."""
    def calis(a):
        for eylem, olcut in kurallar:
            if all(a[k] == v for k, v in olcut.items()):
                return eylem
        return False
    return calis


def golgelenen(kurallar):
    sayi = 0
    for i, (_, olcut) in enumerate(kurallar):
        for _, onceki in kurallar[:i]:
            if all(olcut.get(k) == v for k, v in onceki.items()):
                sayi += 1
                break
    return sayi


DAR = [(True, {"kaynak": "dis", "hedef": "dmz", "bnokta": 80}),
       (True, {"kaynak": "dis", "hedef": "dmz", "bnokta": 443}),
       (True, {"kaynak": "dmz", "hedef": "ic", "bnokta": 3306}),
       (True, {"kaynak": "yonetim"}),
       (True, {"kaynak": "ic", "hedef": "dmz"}),
       (True, {"kaynak": "ic", "hedef": "dis"}),
       (True, {"kaynak": "ic", "hedef": "ic"})]

SILINMIS = [(e, {k: v for k, v in o.items() if k != "kaynak"}) for e, o in DAR]

KIMLIK = [(True, {"kimlik": "konuk", "hedef": "dmz", "bnokta": 80}),
          (True, {"kimlik": "konuk", "hedef": "dmz", "bnokta": 443}),
          (True, {"kimlik": "hizmet", "hedef": "ic", "bnokta": 3306}),
          (True, {"kimlik": "yonetici", "hedef": "dis"}),
          (True, {"kimlik": "yonetici", "hedef": "dmz"}),
          (True, {"kimlik": "yonetici", "hedef": "ic"}),
          (True, {"kimlik": "yonetici", "hedef": "yonetim"}),
          (True, {"kimlik": "calisan", "hedef": "dmz"}),
          (True, {"kimlik": "calisan", "hedef": "dis"}),
          (True, {"kimlik": "calisan", "hedef": "ic"})]


def belge_kosullu(kurallar):
    """Belgesiz akis ortuk rete duser."""
    ic = kural_dizisi(kurallar)
    return lambda a: a["belge"] and ic(a)


ak = kimlikle(akislar())
print(f"akış {len(ak)} | niyetin geçirdiği {sum(1 for a in ak if politika(a))} "
      f"| kimliği konumdan ayrık "
      f"{sum(1 for a in ak if a['kimlik'] != ESLEME[a['kaynak']])} | belgesiz "
      f"{sum(1 for a in ak if not a['belge'])}")
print()
print(f"{'kural dizisi':<24s} {'kural':>5s} {'gölgelenen':>10s} {'doğru':>6s} "
      f"{'fazla geçen':>12s} {'fazla duran':>12s}")
for ad, kurallar, duzenek in (
        ("konum ölçütlü", DAR, kural_dizisi(DAR)),
        ("konum ölçütü silinmiş", SILINMIS, kural_dizisi(SILINMIS)),
        ("kimlik ölçütlü", KIMLIK, kural_dizisi(KIMLIK)),
        ("kimlik ve belge koşullu", KIMLIK, belge_kosullu(KIMLIK))):
    d = fark(ak, politika, duzenek)
    print(f"{ad:<24s} {len(kurallar):5d} {golgelenen(kurallar):10d} "
          f"{d['dogru_gecti'] + d['dogru_durdu']:6d} {d['yanlis_gecti']:12d} "
          f"{d['yanlis_durdu']:12d}")

print()
print("konum ölçütü silinmiş dizinin ölçütleri:")
for i, (_, o) in enumerate(SILINMIS):
    print(f"  {i + 1}. {o if o else '(ölçüt kalmadı)'}")

print()
print("kimliği konumdan ayrık akışlar (no, konum, kimlik, hedef, niyet, kimlik dizisi):")
for a in ak:
    if a["kimlik"] != ESLEME[a["kaynak"]]:
        print(f"  {a['no']:2d} {a['kaynak']:8s} {a['kimlik']:9s} {a['hedef']:8s} "
              f"{str(politika(a)):5s} {str(kural_dizisi(KIMLIK)(a)):5s}")
print("belgesiz akışlarda niyetin geçirdiği:",
      sum(1 for a in ak if not a["belge"] and politika(a)))
```

```
akış 40 | niyetin geçirdiği 22 | kimliği konumdan ayrık 2 | belgesiz 5

kural dizisi             kural gölgelenen  doğru  fazla geçen  fazla duran
konum ölçütlü                7          0     40            0            0
konum ölçütü silinmiş        7          3     22           18            0
kimlik ölçütlü              10          0     38            1            1
kimlik ve belge koşullu     10          0     35            1            4

konum ölçütü silinmiş dizinin ölçütleri:
  1. {'hedef': 'dmz', 'bnokta': 80}
  2. {'hedef': 'dmz', 'bnokta': 443}
  3. {'hedef': 'ic', 'bnokta': 3306}
  4. (ölçüt kalmadı)
  5. {'hedef': 'dmz'}
  6. {'hedef': 'dis'}
  7. {'hedef': 'ic'}

kimliği konumdan ayrık akışlar (no, konum, kimlik, hedef, niyet, kimlik dizisi):
  34 dis      yonetici  dis      False True 
  40 ic       hizmet    dis      True  False
belgesiz akışlarda niyetin geçirdiği: 3
```

## Silmenin Bedeli

İkinci satır dersin en sert sayısını taşıyor. Kural sayısı **7**'de kaldı, tek bir kural
eklenmedi, tek bir kural çıkarılmadı — ve dizi **40 doğrudan 22'ye** düştü. Fazla geçen
**0**'dan **18**'e çıktı; kırk akışın on sekizi, niyetin durduracağı hâlde geçti. Bu, kırk
akışlık kümede `0,450`'lik bir paydır ve ölçüm bandının on sekiz katıdır.

Fazla duran ise **0**'da kaldı ve bu bir iyi haber değil, aynı kusurun öbür yüzüdür.
Dördüncü kural her akışla eşleştiği için hiçbir akış örtük rete ulaşamıyor; dizi artık
"durdur" diyebileceği bir yol taşımıyor. **Tek yönü sayan bir denetim bu diziyi kusursuz
görürdü** — fazla duran sıfır, hiçbir kullanıcı şikâyeti yok.

Gölgelenen kural sayısı **3**'tür ve nedenini alt döküm veriyor: dördüncü satırın ölçüt
kümesi boştur, boş küme her ölçüt kümesini kapsar, dolayısıyla beşinci, altıncı ve yedinci
kurallar hiç değerlendirilmez. Kural gölgelemesi burada bir yazım hatasından değil, **bir
alanın kaldırılmasından** doğuyor.

Örüntü şudur: **konum ölçütü tek başına bir kuralın taşıyıcısı olabilir.** Öyle bir kuraldan
silindiğinde geriye kural kalmaz, evet kalır. Kural sayısı bunu göstermez — dizi hâlâ yedi
satırdır. Kural saymanın politikayı ölçmediğini kurs erişim denetim listelerinde söylemişti;
burada aynı cümlenin daha keskin bir hâli görünüyor: **ölçüt saymak da politikayı ölçmez.**

## Kimlik Ölçütünün İki Yönü

Üçüncü satır kimlik ölçütlü diziyi veriyor: **10 kural, 0 gölgelenen, 38 doğru, 1 fazla
geçen, 1 fazla duran.** Kural sayısı yediden ona çıktı ve bu artışın tamamı dördüncü
kuraldan geliyor — bölgenin taşıdığı örtük güven bildirimi, kimlik tarafında dört ayrı
satır olarak yazılmak zorunda kaldı. **Konum ölçütünü kaldırmanın kural maliyeti budur.**

İki hata kırk akışın hangilerinde doğduğu bilinerek okunabilir; alt döküm ikisini de
gösteriyor. Otuz dördüncü akış dış bölgeden geliyor ama `yonetici` kimliği taşıyor: niyet
onu durduracaktı, kimlik dizisi geçirdi — **fazla geçen**. Kırkıncı akış iç bölütten geliyor
ama `hizmet` kimliği taşıyor: niyet onu geçirecekti, kimlik dizisi durdurdu — **fazla
duran**.

Bu iki sayı bir kusur değil, **iki dilin ayrıldığı yerin ölçüsüdür**. Kâhin konum diliyle
yazılmıştır; kimlik ölçütlü dizi başka bir dille yazılmıştır ve iki dil kırk akışın
otuz sekizinde aynı şeyi söylüyor, ikisinde ayrılıyor. Ayrıldıkları akışlar, konum
kısaltmasının zaten yanlış olduğu akışlardır. Ölçüm bu yüzden "kimlik yanlış karar verdi"
demez; **niyetin kendisinin yeniden yazılması gereken akış sayısını verir** ve bu sayı
`2/40 = 0,050`'dir.

Buradan çıkan kural nettir: **ölçütü değiştirmek kuralı değil, politikayı değiştirmektir.**
Konum diliyle yazılmış bir niyeti kimlik diliyle yazılmış bir diziyle uygulamaya çalışmak,
iki dilin ayrıldığı her akışta bir hata üretir. Sıfır güvene geçiş bir kural dizisi
düzenlemesi değil, niyetin yeniden yazılmasıdır.

## Belge Koşulunun Bedeli

Dördüncü satır tek bir koşul ekliyor: belgesiz akış örtük rete düşer. Fazla geçen **1**'de
kalıyor — belge koşulu bu yönü hiç değiştirmiyor, çünkü otuz dördüncü akışın belgesi
vardır ve kimliği geçerlidir. Fazla duran ise **1**'den **4**'e çıkıyor.

Üç akışlık artışın kaynağı alt satırda: kırk akışın **5**'i belgesizdir ve bunların
**3**'ünü niyet geçirecekti. Doğru sayısı **38**'den **35**'e iniyor. Bu, `3/40 = 0,075`'lik
bir paydır ve bandın üç katıdır; ölçülebilir bir maliyettir.

İki yön burada birbirine karışmıyor ve karışmaması dersin sonucudur. **Belge koşulu yalnız
fazla duranı büyütür.** Doğrulamayı zorunlu kılmak, doğrulanamayanı geçirmemek demektir ve
doğrulanamayanların bir bölümü her zaman meşrudur. Belge kapsamasını genişletmek bu üç
akışı geri kazandırır; kapsamayı gevşetmek, yani belgesiz akışı konuma bakarak geçirmek ise
silinen ölçütü arka kapıdan geri getirir ve ikinci satırın hatasını kısmen geri çağırır.

## Özet

- Konum ölçütü kural dizisinde kimliğin kısaltmasıydı; kısaltma doğru olduğu sürece bedeli
  yoktur ve dar küme kırk akışta **40 doğru, 0 fazla geçen, 0 fazla duran** verir.
- Ölçüt mekanik olarak silindiğinde kural sayısı **7**'de kalır ama tek ölçütü `kaynak` olan
  kural bir **örtük evete** dönüşür: **3** kural gölgelenir, doğru **22**'ye iner, fazla
  geçen **18** olur ve fazla duran **0**'da kalır — tek yönü sayan bir denetim bu diziyi
  kusursuz görürdü.
- Yerine kimlik ölçütü konduğunda kural sayısı **7**'den **10**'a çıkar; artışın tamamı,
  bölgenin taşıdığı örtük güven bildiriminin dört ayrı satır olarak yazılmasından gelir.
- Kimlik ölçütlü dizi **38 doğru, 1 fazla geçen, 1 fazla duran** verir; iki hata kimlikle
  konumun ayrıldığı iki akıştır ve **niyetin yeniden yazılması gereken akış sayısını**
  ölçer, kimliğin yanlışlığını değil.
- Belge koşulu yalnız bir yönü büyütür: fazla duran **1**'den **4**'e çıkar, çünkü belgesiz
  **5** akışın **3**'ünü niyet geçirecekti. Doğrulamayı zorunlu kılmanın bedeli budur.

## Sonraki Adım

Kurs boyunca altı denetim kuruldu: kablosuz tarafta kuşak ve kapsama, güvenlik tarafında
bölütleme, kural dizisi, tespit, tünel ve konumdan kimliğe geçen ölçüt. Her biri kendi
sınırını iki yönde birden ölçtü. Geriye tek bir soru kaldı ve kursun son dersi onu sorar:
bu altı denetim birlikte açıldığında, ağ saldırılarının hangi sınıfı gerçekten kapanır,
kapanmayan kaç sınıf kalır ve kapanmayanlar için elde ne var?
