---
title: 'Uygulama İzin Listeleri'
source: 'https://academia.sh/tr/kurslar/uc-nokta-guvenligi/uygulama-izin-listeleri'
course: 'Uç Nokta ve Sistem Sertleştirme'
language: tr
updated: '2026-08-17T18:08:35+00:00'
license: 'CC BY-SA 4.0'
---

# Uygulama İzin Listeleri

İzin listesi 25 kalemlik bir çalıştırma kümesinde değerlendirilir: yol tabanlı ve imza tabanlı kuralın aynı sayıda ama farklı kalemleri kaçırdığı, birleşim biçiminin yanlış engeli 1'den 7 kaleme çıkardığı, filodaki 1038 tutunma noktasının 972'sinin onaylanmamış kod çalıştıramaz hâle geldiği ve 66'sının açık kaldığı sayılır.

Önceki dersin en pahalı maddesi yazılım kaynağı kısıtlamasıydı: 96 noktanın yazma yetkisini
daraltıyor, yedi meşru işi elle adıma düşürüyordu. Maddenin arkasında tek satırla anılan bir karar
var — uçta hangi yazılımın çalışabileceğine önceden karar verilmesi. **Uygulama izin listesi** bu
kararı bir yapılandırma maddesi olmaktan çıkarıp her çalıştırma denemesinde verilen bir karara
dönüştürür.

Bir yapılandırma maddesi bir kez uygulanır ve uyumluluğu sorulur. Bir izin listesi her çalıştırmada
yeniden değerlendirilir ve doğruluğu ancak **gerçek bir çalıştırma kümesi** üzerinde ölçülebilir:
bir dönemde uçlarda çalışan kalemler tek tek listeye sorulur ve iki tür yanlış sayılır — engellenen
meşru kalem ve geçen meşru olmayan kalem.

## İki Kural Türü

İzin listesi kuralları iki eksende yazılır. **Yol tabanlı kural**, çalıştırılan dosyanın hangi dizin
sınıfında durduğuna bakar: sistem dizini ve program dizini izinli, kullanıcı dizini, geçici dizin,
ağ payı ve taşınabilir ortam değil. **İmza tabanlı kural**, dosyayı kimin imzaladığına bakar:
işletim sistemi sağlayıcısı, iş yazılımı sağlayıcısı ve kurum içi imza izinli, imzasız ve bilinmeyen
imzalı kalemler değil.

İki kural birleştirilebilir. **Ya da** biçiminde bir kalem tek bir ölçütten geçmesi yeterlidir; **ve**
biçiminde ikisinden de geçmesi gerekir. Aynı iki kural, iki farklı birleşimle çok farklı sonuç
üretir ve fark ancak bir kümede ölçüldüğünde görünür.

- **SS19.** Yirmi beş kalemlik çalıştırma kümesi, dönem ve koşum sayıları **modeldir**; gerçek bir
  uçta çalıştırma engellenmiyor.
- **SS20.** Meşru olmayan kalemler yalnız tür, yol sınıfı ve imza sınıfıyla anılır; ne yaptıkları ve
  nasıl geldikleri yazılmaz.
- **SS21.** Yol sınıfı altı, imza sınıfı beş değerlidir. Gerçekte alt dizin ve sertifika ayrıntısı
  kalem sayısını büyütür, kuralların birbirine göre davranışını değiştirmez.
- **SS22.** Karar ikilidir: geçer ya da engellenir. Yalnız uyaran, engellemeyen kip modellenmiyor.
- **SS23.** Betik kalemlerinde karar çalıştırılan yorumlayıcı üzerinde verilir; betik denetimi
  açıkken betiğin kendisi de aynı kuralla değerlendirilir.
- **SS24.** Betik denetiminin iki sınıfta uygulanamaz olması önceki dersten gelir: o iki sınıfta iş
  betikle yürüyor.

```js
// izin/liste.mjs — uygulama izin listesinin bir calistirma kumesi uzerinde degerlendirilmesi
// MODELIDIR. Gercek bir uc noktada calistirma engellenmez; kalemler tur duzeyinde yazilir.
export const YOL_IZIN = ['sistem', 'program'];
export const IMZA_IZIN = ['isletim', 'is-saglayici', 'ic-imza'];
// satir: ad | tur | yol sinifi | imza sinifi | mesru mu | kac makinede kostu | donemdeki kosum
export const KALEM = `
  olcut-ajani              ikili sistem      isletim       e  102  91800
  gunluk-aktarici          ikili sistem      isletim       e  102   3060
  yama-ajani               ikili program     is-saglayici  e  102    408
  surucu-guncelleyici      ikili program     isletim       e  102    204
  arsiv-araci              ikili program     is-saglayici  e  102   1224
  belge-duzenleyici        ikili program     is-saglayici  e   84   5040
  saha-olcum-uygulamasi    ikili program     is-saglayici  e   60   7200
  veri-tabani-istemcisi    ikili program     is-saglayici  e   18    540
  ic-rapor-araci           ikili program     imzasiz       e   24    480
  bakim-betigi             betik sistem      ic-imza       e  102   3060
  tanilama-araci           ikili gecici      ic-imza       e   30     90
  yeni-surum-yukleyici     ikili gecici      is-saglayici  e   40     40
  ic-yardimci-arac         ikili kullanici   imzasiz       e   18    360
  sayac-okuma-araci        ikili tasinabilir is-saglayici  e   12    720
  saha-kurulum-betigi      betik kullanici   imzasiz       e   60    180
  ceyrek-raporu-betigi     betik ag-payi     ic-imza       e   24     96
  bilinmeyen-ikili-1       ikili gecici      imzasiz       h    4     11
  bilinmeyen-ikili-2       ikili kullanici   imzasiz       h    7     23
  bilinmeyen-ikili-3       ikili ag-payi     bilinmeyen    h    2      4
  bilinmeyen-ikili-4       ikili tasinabilir bilinmeyen    h    1      1
  yorumlanan-kalem-1       betik kullanici   imzasiz       h    6     19
  yorumlanan-kalem-2       betik gecici      imzasiz       h    3      8
  imzali-arac-kotuye-kullanim ikili program  is-saglayici  h    2      5
  izinli-yolda-imzasiz     ikili program     imzasiz       h    5     14
  imzali-kalem-kullanici-yolunda ikili kullanici is-saglayici h  3      9`
  .trim().split('\n').map((r) => {
    const [ad, tur, yol, imza, m, makine, kosum] = r.trim().split(/\s+/);
    return { ad, tur, yol, imza, mesru: m === 'e', makine: Number(makine), kosum: Number(kosum) };
  });

export const KURAL = {
  yol: { satir: YOL_IZIN.length, gecer: (k) => YOL_IZIN.includes(k.yol) },
  imza: { satir: IMZA_IZIN.length, gecer: (k) => IMZA_IZIN.includes(k.imza) },
  'yol-veya-imza': { satir: YOL_IZIN.length + IMZA_IZIN.length,
    gecer: (k) => YOL_IZIN.includes(k.yol) || IMZA_IZIN.includes(k.imza) },
  'yol-ve-imza': { satir: YOL_IZIN.length + IMZA_IZIN.length,
    gecer: (k) => YOL_IZIN.includes(k.yol) && IMZA_IZIN.includes(k.imza) },
};
// Betik kalemleri: karar calistirilan yorumlayici uzerinde verilir, betigin kendisi degerlendirilmez.
// Betik denetimi acikken betik de ayni kuralla degerlendirilir.
export const gecer = (k, kural, betikDenetimi) =>
  (k.tur === 'betik' && !betikDenetimi ? true : KURAL[kural].gecer(k));

export function olc(kural, betikDenetimi) {
  const engel = KALEM.filter((k) => k.mesru && !gecer(k, kural, betikDenetimi));
  const kacan = KALEM.filter((k) => !k.mesru && gecer(k, kural, betikDenetimi));
  const say = (l, alan) => l.reduce((a, k) => a + k[alan], 0);
  return { engelKalem: engel.length, engelMakine: say(engel, 'makine'),
    engelKosum: say(engel, 'kosum'), kacanKalem: kacan.length,
    kacanMakine: say(kacan, 'makine'), kacanKosum: say(kacan, 'kosum'),
    satir: KURAL[kural].satir + (betikDenetimi ? 1 : 0) + engel.length };
}

// Filodaki tutunma noktalarinin kaci izin listesiyle kullanilamaz hale geliyor.
// Betik tasiyabilen nokta, izinli bir yorumlayiciyi cagirabildigi icin kapanmaz.
export const SINIF = [
  { ad: 'saha-dizustu', makine: 60, kalan: 9, betikli: 3, betikDenetimi: true },
  { ad: 'sube-ucu', makine: 24, kalan: 12, betikli: 3, betikDenetimi: true },
  { ad: 'toplayici', makine: 12, kalan: 12, betikli: 4, betikDenetimi: false },
  { ad: 'islem-sunucusu', makine: 6, kalan: 11, betikli: 3, betikDenetimi: false },
];
export const noktaOlc = (s) => ({
  nokta: s.kalan * s.makine,
  kapanan: (s.betikDenetimi ? s.kalan : s.kalan - s.betikli) * s.makine,
  acik: (s.betikDenetimi ? 0 : s.betikli) * s.makine,
});
```

## Dört Kural Kümesi, Aynı Küme

```js
// izin/olc.mjs — dort kural kumesi ayni calistirma kumesinde degerlendirilir
import { KALEM, KURAL, SINIF, gecer, olc, noktaOlc } from './liste.mjs';

const y = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd());
const say = (f, alan) => KALEM.filter(f).reduce((a, k) => a + k[alan], 0);

console.log(`${KALEM.length} calistirma kalemi, ${say(() => true, 'kosum')} kosum; ` +
  `${KALEM.filter((k) => !k.mesru).length} kalem mesru degil, ` +
  `${KALEM.filter((k) => k.tur === 'betik').length} kalem betik`);

const A = [-16, 7, 10, 14, 10, 14, 13, 8];
console.log('\n1. kural kumeleri (betik denetimi yok / var)');
y(A, 'kural', 'betik', 'engel k.', 'engel makine', 'kacan k.', 'kacan makine', 'kacan kosum', 'satir');
for (const kural of Object.keys(KURAL))
  for (const bd of [false, true]) {
    const o = olc(kural, bd);
    y(A, kural, bd ? 'var' : 'yok', o.engelKalem, o.engelMakine, o.kacanKalem,
      o.kacanMakine, o.kacanKosum, o.satir);
  }

const B = [-32, 8, 13, 14, 8, 9];
console.log('\n2. yol-veya-imza kuralinda yanlis karar verilen kalemler (betik denetimi var)');
y(B, 'kalem', 'tur', 'yol', 'imza', 'mesru', 'sonuc');
for (const k of KALEM) {
  const g = gecer(k, 'yol-veya-imza', true);
  if (g === k.mesru) continue;                      // dogru karar verilen kalemler atlanir
  y(B, k.ad, k.tur, k.yol, k.imza, k.mesru ? 'evet' : 'hayir', g ? 'gecti' : 'engel');
}

const C = [-16, 8, 10, 8, 16];
console.log('\n3. izin listesinin tutunma noktalarina etkisi');
y(C, 'sinif', 'nokta', 'kapanan', 'acik', 'betik denetimi');
let t = { nokta: 0, kapanan: 0, acik: 0 };
for (const s of SINIF) {
  const o = noktaOlc(s);
  for (const a of Object.keys(t)) t[a] += o[a];
  y(C, s.ad, o.nokta, o.kapanan, o.acik, s.betikDenetimi ? 'var' : 'yok');
}
y(C, 'toplam', t.nokta, t.kapanan, t.acik, '');
console.log('\nsecilen kural kumesi: yol-veya-imza');
for (const bd of [false, true]) {
  const v = olc('yol-veya-imza', bd);
  console.log(`  betik denetimi ${bd ? 'var' : 'yok'}: engel ${v.engelKalem} kalem / ` +
    `${v.engelMakine} makine / ${v.engelKosum} kosum; kacan ${v.kacanKalem} kalem / ` +
    `${v.kacanMakine} makine; ${v.satir} satir`);
}
console.log(`  betik denetimi uygulanabilen sinif: ` +
  `${SINIF.filter((s) => s.betikDenetimi).length}/${SINIF.length}`);
```

```
25 calistirma kalemi, 114596 kosum; 9 kalem mesru degil, 5 kalem betik

1. kural kumeleri (betik denetimi yok / var)
kural             betik  engel k.  engel makine  kacan k.  kacan makine  kacan kosum   satir
yol                 yok         4           100         4            16           46       6
yol                 var         6           184         2             7           19       9
imza                yok         2            42         4            14           41       5
imza                var         3           102         2             5           14       7
yol-veya-imza       yok         1            18         5            19           55       6
yol-veya-imza       var         2            78         3            10           28       8
yol-ve-imza         yok         5           124         3            11           32      10
yol-ve-imza         var         7           208         1             2            5      13

2. yol-veya-imza kuralinda yanlis karar verilen kalemler (betik denetimi var)
kalem                                tur          yol          imza   mesru    sonuc
ic-yardimci-arac                   ikili    kullanici       imzasiz    evet    engel
saha-kurulum-betigi                betik    kullanici       imzasiz    evet    engel
imzali-arac-kotuye-kullanim        ikili      program  is-saglayici   hayir    gecti
izinli-yolda-imzasiz               ikili      program       imzasiz   hayir    gecti
imzali-kalem-kullanici-yolunda     ikili    kullanici  is-saglayici   hayir    gecti

3. izin listesinin tutunma noktalarina etkisi
sinif              nokta   kapanan    acik  betik denetimi
saha-dizustu         540       540       0             var
sube-ucu             288       288       0             var
toplayici            144        96      48             yok
islem-sunucusu        66        48      18             yok
toplam              1038       972      66

secilen kural kumesi: yol-veya-imza
  betik denetimi yok: engel 1 kalem / 18 makine / 360 kosum; kacan 5 kalem / 19 makine; 6 satir
  betik denetimi var: engel 2 kalem / 78 makine / 540 kosum; kacan 3 kalem / 10 makine; 8 satir
  betik denetimi uygulanabilen sinif: 2/4
```

## Aynı Sayı, Farklı Kalemler

Betik denetimi kapalıyken yol tabanlı kural 4 meşru olmayan kalemi kaçırıyor; imza tabanlı kural da
4 kaçırıyor. İki sayı eşit, kalemler değil. Yol kuralı, izinli bir dizinde duran imzasız bir kalemi
geçiriyor — izinli yol sınıfı içinde yazılabilir bir alt dizin bulunduğu anda kural o alt dizini de
kapsar. İmza kuralı ise kullanıcı dizininde duran, tanınan bir imzayla imzalanmış bir kalemi
geçiriyor — imza dosyanın kim tarafından üretildiğini söyler, nereye konduğunu değil.

Bu, "hangi kural türü daha iyi" sorusunun yanıtsız olduğu anlamına gelir. Sorulacak soru hangi
kalemleri kaçırdıklarıdır ve iki liste birbirini kapsamaz. İki kuralı **ve** ile birleştirmek kaçan
kalemi 4'ten 3'e indiriyor; her iki ölçütten de geçmek gerektiği için tek başına birinden geçenler
duruyor.

Birleşim biçiminin bedeli aynı satırlarda okunuyor. **Ya da** biçimi yanlış engeli 1 kaleme ve 18
makineye indiriyor ama kaçan kalemi 5'e çıkarıyor. **Ve** biçimi kaçanı 3'e indirirken yanlış engeli
5 kaleme ve 124 makineye çıkarıyor. Aynı iki kural, aynı beş satır, iki farklı birleşimle beş kat
farklı yanlış engel üretiyor. Kural sayısı bu kararı hiç anlatmaz; anlatan şey birleşim biçimidir.

## Her İki Kuralın da Geçirdiği Kalem

İkinci tablo seçilen kural kümesinde yanlış karar verilen beş kalemi listeliyor. Üçüncü satır bu
dersin sınırıdır: izinli bir dizinde duran ve tanınan bir imzayla imzalanmış bir aracın kötüye
kullanımı. Bu kalem `yol-ve-imza` dâhil bütün kural kümelerinden geçiyor ve betik denetimi de onu
durdurmuyor.

Nedeni kuralda bir eksiklik değil, sorunun kendisidir. İzin listesi "bu ikili çalışabilir mi"
sorusuna yanıt verir; "bu ikili şu anda ne yapıyor" sorusuna bakmaz. Onaylı bir aracın onaylanmamış
bir iş için çağrılması, izin listesinin tanım gereği göremediği kalemdir. Sayısı küçüktür — iki
makine, beş koşum — ama bütün kural kümelerinde aynı kalır ve daha sıkı bir liste onu azaltmaz. Bu
kalemin ölçümü sonraki konuya, davranışa bakan denetimlere aittir.

## Engellenen Meşru İş

En sıkı yapılandırma — `yol-ve-imza` artı betik denetimi — kaçan kalemi 1'e, kaçan koşumu 5'e
indiriyor. Aynı satırda yanlış engel 7 kaleme ve 208 makineye çıkıyor. Yüz iki makinelik bir filoda
208 makine-kalem, bazı makinelerin birden çok engelle karşılaştığı anlamına gelir.

Engellenen kalemler adıyla okunduğunda hepsinin bir gerekçesi var. Tanılama aracı geçici dizinden
çalışıyor, çünkü olay sırasında oraya indiriliyor. Yeni sürüm yükleyicisi tanım gereği geçici
dizindedir. Sayaç okuma aracı taşınabilir ortamdan çalışıyor, çünkü sahada ağ yok. Kurum içi rapor
aracı imzasız, çünkü imzalayacak bir süreç kurulmamış. Saha kurulum betiği kullanıcı dizininde ve
imzasız. Bunların hiçbiri bir hata değil; hepsi listenin varsaydığı düzenin dışında kalan gerçek
işlerdir.

Her engellenen kalem bir istisna satırı ya da her koşumda bir elle onay üretir. Satır sütunu bunu
sayıyor: en gevşek yapılandırmada 6 satır, en sıkısında 13. Bakım maliyeti listenin kendisinden
değil, istisnalardan gelir ve her yeni araç, her yeni sürüm ve her yeni saha yordamı bu listeyi
yeniden açar.

## Yorumlanan Kalem ve Tutunma Noktası

Beş kalem betiktir ve bunların kararı çalıştırılan yorumlayıcı üzerinde verilir. Betik denetimi
kapalıyken her kural kümesi bu beş kalemi geçirir, çünkü yorumlayıcı izinli bir ikilidir ve listeye
sorulan şey odur. Betik denetimi açıldığında kaçan kalem her kural kümesinde yarıya iniyor: `yol`
kuralında 4'ten 2'ye, `ve` kuralında 3'ten 1'e.

Üçüncü tablo bunun tutunma noktalarına karşılığını veriyor ve ilk dersten beri ilk kez kapatılan
sütununa büyük bir sayı yazılıyor. Filodaki 1038 noktanın 972'si onaylanmamış kod çalıştıramaz hâle
geliyor: bir açılış girişi, servis tanımı ya da zamanlanmış görev yerinde durur ama çağırdığı şey
listeden geçmezse çalışmaz.

Açık kalan 66 nokta ise iki sınıftan geliyor. Toplayıcı makinede ve işleme sunucusunda betik denetimi
uygulanamıyor, çünkü önceki derste ölçüldüğü gibi o iki sınıfta işin kendisi betikle yürüyor. Bu
sınıflarda betik taşıyabilen noktalar izinli bir yorumlayıcıyı çağırarak listeyi atlayabilir. Sayı
küçüktür (1038'in yüzde 6'sı) ve tam olarak listenin uygulanamadığı yerde durur. Kapatılamayan
noktanın kuralı burada da geçerlidir: 66 nokta en azından taban çizgisine yazılır ve değişip
değişmediği karşılaştırılır.

## Özet

- İzin listesi bir yapılandırma maddesi değil, her çalıştırmada verilen bir karardır; doğruluğu
  ancak gerçek bir çalıştırma kümesinde ölçülür. Yirmi beş kalemin 9'u meşru değil, 5'i betiktir.
- Yol tabanlı ve imza tabanlı kural aynı sayıda (4) kalem kaçırır ama aynı kalemleri değil: biri
  izinli dizindeki imzasız kalemi, öteki kullanıcı dizinindeki imzalı kalemi geçirir.
- Birleşim biçimi kural sayısından daha çok karar taşır: aynı beş satır **ya da** biçiminde 1 kalem
  yanlış engelleyip 5 kaçırır, **ve** biçiminde 5 kalem yanlış engelleyip 3 kaçırır.
- En sıkı yapılandırma kaçan kalemi 1'e indirir, karşılığında 7 meşru kalemi 208 makinede engeller
  ve istisna satırını 6'dan 13'e çıkarır. Engellenen kalemlerin hepsinin geçerli bir gerekçesi vardır.
- İzinli dizinde duran ve tanınan bir imzayla imzalanmış bir aracın kötüye kullanımı bütün kural
  kümelerinden geçer; izin listesi "ne çalışabilir" sorusuna bakar, "ne yapıyor" sorusuna değil.
- İzin listesi 1038 tutunma noktasının 972'sini onaylanmamış kod çalıştıramaz hâle getirir; 66'sı
  betik denetiminin uygulanamadığı iki sınıfta açık kalır ve yalnız taban çizgisine yazılabilir.

## Sonraki Adım

Bu ders bir kalemin çalışıp çalışamayacağına yol ve imzaya bakarak karar verdi. Her iki ölçüt de
kalemin **ne yaptığını** hiç sormuyor ve tam olarak orada kaçıran bir kalem bıraktı. Bir kalemin ne
yaptığını öğrenmenin tek yolu onu çalıştırmaktır — ama uçta çalıştırmak, kararın kendisini
gereksiz kılar. Sonraki dersin konusu bu çıkmazın karşılığıdır: **sanal alan**, şüpheli bir kalemi
üretim ortamından yalıtılmış bir yerde çalıştırıp davranışını gözlemleme kararıdır. Ölçülecek olan
yalıtımın gücü değil — o önceki kursta ölçüldü ve burada girdi olarak alınır — çalıştırma kararının
kendisidir: kaç şüpheli kalem yalıtımda gerçekten çalıştırılabiliyor, gözlem penceresinde kaç
davranış görünüyor, kaç davranış hiç ortaya çıkmıyor ve karar kaç kalemde elle incelemeye düşüyor.
