---
title: 'Sürekli Yapılandırma Denetimi'
source: 'https://academia.sh/tr/kurslar/calisma-zamani-guvenligi/surekli-yapilandirma-denetimi'
course: 'Çalışma Zamanı Güvenliği ve Sır Yönetimi'
language: tr
updated: '2026-08-17T18:06:41+00:00'
license: 'CC BY-SA 4.0'
---

# Sürekli Yapılandırma Denetimi

Sürekli denetimin 147 açık bulgusu sahiplik zincirinden geçirilir: sahip etiketi 65'ini, ad alanı sahipliği 24'ünü, depo yolu eşlemesi 18'ini çözer ve 40'ı (yüzde 27,2) sahipsiz kalır. Bulguların 81'i uygulama ekiplerine düşer, 26'sı platformda kalır; sahipsiz 40 bulgunun kapasitesi sıfır olduğu için kuyruk on iki haftada 112'ye çıkarken düzelten ekiplerin yığını erir. Sahipsizliğin 31'i küme dışındaki kaynaktadır ve hiçbir küme düzeneği onu çözemez; 147 bulgunun 122'si daha erken bir aşamada kapatılabilirdi ama sahipsiz 40 bulgunun 25'i için erken aşama yoktur.

Önceki dersin kapısı yalnız gönderilen nesneyi gördü ve on kuralın onu da nesnenin bildirilen
alanlarını okudu. Kapı bugün sıkılaştırılsa bile dün kabul edilmiş nesneler yerinde durur; küme
dışındaki depolama, ağ ve kimlik tanımları ise hiçbir kabul kapısından geçmez. O alanı ancak sürekli
koşan bir denetim tarar.

Bu ders o denetimi ölçer, ama bulgu sayısını değil. Hangi yanlış yapılandırmanın hangi kapıda
kapandığı **Bulut ve Sanallaştırma Güvenliği** kursunda ölçüldü ve burada tekrarlanmıyor. Buradaki
ölçü tek bir sorudur: **bulgu kimin işine düşüyor.** Kaç bulgu bir uygulama ekibine dönüyor, kaçı
platform ekibinde kalıyor ve kaçının hiçbir sahibi yok. Sahipsiz bulgu, ölçülmemiş bulgudan
farklıdır: gösterge tablosunda görünür, sayıya girer, raporlanır ve kimse kapatmaz.

- **AD18.** Denetim kurgusal bölgesel ölçüm ağının tamamını tarar: küme nesneleri ve küme dışındaki
  depolama, ağ, kimlik ve kayıt defteri kaynakları. Bulgu envanteri `node` ile kurulmuş bir
  modeldir.
- **AD19.** Kural kümesinin içeriği ölçülmüyor; sayılar açık bulgu envanterinden okunur. Aynı kaynak
  aynı kuralı ihlal ettiği sürece tek bir bulgu sayılır.
- **AD20.** Sahiplik zinciri üç adımlıdır ve sırayla denenir: kaynağın sahip etiketi, ad alanı
  sahiplik tablosu, depo yolu eşlemesi. İlk eşleşen adım kazanır; hiçbiri eşleşmezse bulgu
  sahipsizdir.
- **AD21.** Bir bulgunun hangi adımda çözüldüğü ve hangi ekibe düştüğü modelde verilmiştir. Üretimde
  bu, envanterin o günkü gerçek durumundan okunur ve zaman içinde değişir.
- **AD22.** Kapasite haftalık sabittir ve yalnız bu bulgular için ayrılan kalemi sayar. Kuyruk
  `max(0, kuyruk + yeni - kapasite)` ile yürür; bulguların kapanma zorluğu farkı modellenmiyor.

## Bulgu Envanteri ve Sahiplik Zinciri

```js
// bulgu.mjs — surekli denetimin acik bulgu envanteri ve sahiplik zinciri. MODELDIR.
// [ad, kaynak turu, acik bulgu, siddet, sahipligin cozuldugu adim, ekip, erken kapatma asamasi]
export const BULGU = [
  ['kapsul kaynak siniri yok', 'kume', 18, 'orta', 'etiket', 'abone', 'dagitim'],
  ['salt okunur kok degil', 'kume', 14, 'orta', 'etiket', 'saha', 'dagitim'],
  ['sir ortam degiskeninde', 'kume', 6, 'yuksek', 'etiket', 'faturalama', 'kod'],
  ['degisken goruntu etiketi', 'kume', 9, 'dusuk', 'adalani', 'abone', 'yapi'],
  ['imzasiz goruntu', 'kayit', 7, 'yuksek', 'adalani', 'saha', 'yapi'],
  ['genis erisimli depolama kovasi', 'depolama', 11, 'yuksek', 'etiket', 'olcum', 'tasarim'],
  ['sifrelenmemis yedek birimi', 'depolama', 5, 'yuksek', 'depo', 'platform', 'tasarim'],
  ['acik yonetim kapisi', 'ag', 9, 'yuksek', 'yok', '-', 'tasarim'],
  ['kullanilmayan kimlik tanimi', 'kimlik', 16, 'dusuk', 'yok', '-', 'yok'],
  ['genis yetkili rol baglantisi', 'kimlik', 8, 'yuksek', 'adalani', 'platform', 'tasarim'],
  ['gunlugu kapali kaynak', 'ag', 13, 'dusuk', 'depo', 'platform', 'dagitim'],
  ['eski calisma zamani surumu', 'kume', 16, 'orta', 'etiket', 'olcum', 'yapi'],
  ['sahipsiz kalan eski ad alani', 'kume', 9, 'orta', 'yok', '-', 'yok'],
  ['elle olusturulmus ag kurali', 'ag', 6, 'orta', 'yok', '-', 'dagitim'],
];

export const ZINCIR = ['etiket', 'adalani', 'depo'];
export const ADIM_ADI = { etiket: 'sahip etiketi', adalani: 'ad alani sahipligi', depo: 'depo yolu esleme' };
// Ekibin haftada guvenlik bulgusu icin ayirdigi kalem; sahipsiz bulgunun kapasitesi yoktur.
export const KAPASITE = { abone: 4, faturalama: 2, saha: 3, olcum: 5, platform: 3, sahipsiz: 0 };
export const YENI = 22; // haftalik yeni bulgu; dagitim hizina bagli, modelde verilmis

export const taraf = (b) => (b[4] === 'yok' ? 'sahipsiz' : b[5] === 'platform' ? 'platform' : 'uygulama');
export const kova = (b) => (b[4] === 'yok' ? 'sahipsiz' : b[5]);
export const top = (f) => BULGU.filter(f).reduce((a, b) => a + b[2], 0);
export const gen = (B) => (h) => h.map((v, j) => j ? String(v).padStart(B[j]) : String(v).padEnd(B[0])).join('');
```

Zincirin üç adımı üç ayrı yerden okur ve üçü de bir **envanter** kararıdır: kaynağa bir etiket
konmuş mu, ad alanı bir ekibe bağlanmış mı, kaynağı tanımlayan dosya bir depo yolunda mı duruyor.
Hiçbiri denetimin kendi kararı değildir.

## Bulgu Kimin İşine Düşüyor

```js
// kosum1.mjs — sahiplik zinciri kosturulur: bulgu kimin isine dusuyor
import { BULGU, ZINCIR, ADIM_ADI, taraf, top, gen } from './bulgu.mjs';

const SID = ['yuksek', 'orta', 'dusuk'];
const T = top(() => true);
console.log(`${BULGU.length} bulgu sinifi; acik bulgu ${T} ` +
  `(${SID.map((s) => `${s} ${top((b) => b[3] === s)}`).join(' / ')})\n`);

const yz = gen([22, 8, 12, 9]);
console.log(yz(['cozum adimi', 'bulgu', 'kumulatif', 'pay']));
let k = 0;
for (const a of ZINCIR) {
  k += top((b) => b[4] === a);
  console.log(yz([ADIM_ADI[a], top((b) => b[4] === a), k, `%${(100 * k / T).toFixed(1)}`]));
}
console.log(yz(['cozulemeyen', T - k, T, `%${(100 * (T - k) / T).toFixed(1)}`]));

const yt = gen([20, 8, 9, 8, 9]);
console.log('\n' + yt(['bulgu kime dusuyor', 'bulgu', ...SID]));
for (const [ad, t] of [['uygulama ekipleri', 'uygulama'], ['platform ekibi', 'platform'], ['sahipsiz', 'sahipsiz']])
  console.log(yt([ad, top((b) => taraf(b) === t), ...SID.map((s) => top((b) => taraf(b) === t && b[3] === s))]));
const sz = BULGU.filter((b) => taraf(b) === 'sahipsiz');
console.log(`sahipsiz bulgu ${sz.length} sinifta: ` + sz.map((b) => `${b[0]} (${b[2]})`).join(', '));
```

```
14 bulgu sinifi; acik bulgu 147 (yuksek 46 / orta 63 / dusuk 38)

cozum adimi              bulgu   kumulatif      pay
sahip etiketi               65          65    %44.2
ad alani sahipligi          24          89    %60.5
depo yolu esleme            18         107    %72.8
cozulemeyen                 40         147    %27.2

bulgu kime dusuyor     bulgu   yuksek    orta    dusuk
uygulama ekipleri         81       24      48        9
platform ekibi            26       13       0       13
sahipsiz                  40        9      15       16
sahipsiz bulgu 4 sinifta: acik yonetim kapisi (9), kullanilmayan kimlik tanimi (16), sahipsiz kalan eski ad alani (9), elle olusturulmus ag kurali (6)
```

Zincirin ilk adımı en güçlü olanıdır: sahip etiketi tek başına altmış beş bulgunun sahibini bulur,
yani envanterin yüzde kırk dördünü. İkinci ve üçüncü adımlar yirmi dört ve on sekiz bulgu daha
çözer. Üç adım birlikte yüzde yetmiş üçe ulaşır ve orada durur. Kalan kırk bulgu, denetimin gördüğü
ama kimseye gönderemediği kalemlerdir.

Alt tablo asıl dağılımı veriyor. Seksen bir bulgu uygulama ekiplerine dönüyor, yirmi altısı platform
ekibinde kalıyor ve kırkı sahipsiz. Şiddet sütunları bu üç kovayı birbirinden ayırıyor: platform
ekibinin bulgularının yarısı yüksek şiddetli, uygulama ekiplerinin bulgularının çoğunluğu orta.
Sahipsiz kovada dokuz yüksek şiddetli bulgu var ve dokuzu da açık yönetim kapısıdır. Bu,
sahipsizliğin düşük şiddetli kalemlerle sınırlı olmadığını gösteriyor — sahipsiz olmanın nedeni
bulgunun önemsizliği değil, kaynağın envanterde kimseye bağlanmamış olmasıdır.

## Kuyruk On İki Hafta Yürütülürse

```js
// kosum2.mjs — kuyrugun on iki haftalik seyri, sahipsizligin kaynagi ve erken asama
import { BULGU, KAPASITE, YENI, kova, top, gen } from './bulgu.mjs';

const T = top(() => true), HAFTA = 12;
const yk = gen([12, 7, 15, 10, 14, 11]);
console.log(yk(['kova', 'acik', 'haftalik yeni', 'kapasite', 'haftalik net', `${HAFTA}. hafta`]));
const son = {};
for (const kv of Object.keys(KAPASITE)) {
  const acik = top((b) => kova(b) === kv), yeni = YENI * acik / T, net = yeni - KAPASITE[kv];
  let q = acik;
  for (let h = 0; h < HAFTA; h++) q = Math.max(0, q + net);
  son[kv] = Math.round(q);
  console.log(yk([kv, acik, yeni.toFixed(1), KAPASITE[kv], net.toFixed(1), son[kv]]));
}
const sahipli = Object.keys(KAPASITE).filter((k) => k !== 'sahipsiz');
const kap = sahipli.reduce((a, k) => a + KAPASITE[k], 0);
const szAcik = top((b) => kova(b) === 'sahipsiz'), gerek = YENI * szAcik / T + szAcik / HAFTA;
console.log(`toplam yigin ${T} -> ${Object.values(son).reduce((a, b) => a + b, 0)}; sahipli kovalar ` +
  `${T - szAcik} -> ${sahipli.reduce((a, k) => a + son[k], 0)}, sahipsiz kova ${szAcik} -> ${son.sahipsiz}`);
console.log(`sahipsiz kovayi ${HAFTA} haftada eritmek haftada ${gerek.toFixed(1)} kalem ister: ` +
  `en buyuk tek ekip kapasitesinin ${(gerek / Math.max(...sahipli.map((k) => KAPASITE[k]))).toFixed(1)} kati, ` +
  `bes ekibin toplam kapasitesinin (${kap}) %${(100 * gerek / kap).toFixed(0)}'i`);

const sz = (f) => top((b) => kova(b) === 'sahipsiz' && f(b));
const ici = sz((b) => b[1] === 'kume'), tumSz = sz(() => true), yuksek = sz((b) => b[3] === 'yuksek');
console.log(`\nsahipsiz ${tumSz} bulgunun ${ici}'u kume nesnesinde, ${tumSz - ici}'i kume disindaki kaynakta ` +
  `(${[...new Set(BULGU.filter((b) => kova(b) === 'sahipsiz' && b[1] !== 'kume').map((b) => b[1]))].join(', ')})`);

const KALDIRAC = [['ad alani sahipligi satiri', ici, yuksek - sz((b) => b[1] === 'kume' && b[3] === 'yuksek'), 'yalniz kume nesnesi'],
  ['kaynak envanterinde sahip alani', tumSz, 0, 'butun kaynaklar'],
  ['dusuk siddetli sinifi susturma', sz((b) => b[3] === 'dusuk'), yuksek, 'bulgu kaybolur, kaynak kalir'],
  ['kabul kapisinda sahip etiketi', 0, yuksek, 'yalniz yeni olusturulan kaynak']];
const yl = gen([34, 10, 8, 15, 32]);
console.log('\n' + yl(['kaldirac', 'cozulen', 'kalan', 'kalan yuksek', 'kapsam']));
for (const [ad, c, y, kap] of KALDIRAC) console.log(yl([ad, c, tumSz - c, y, kap]));
console.log(`kabul kapisi mevcut ${tumSz} bulguya dokunmaz; haftalik yeni sahipsizin kume payini ` +
  `${(YENI * ici / T).toFixed(1)}'ten 0'a indirir`);

const ASAMA = ['tasarim', 'yapi', 'kod', 'dagitim', 'yok'];
const ya = gen([12, 8, 11]);
console.log('\n' + ya(['erken asama', 'bulgu', 'sahipsiz']));
for (const a of ASAMA) console.log(ya([a, top((b) => b[6] === a), sz((b) => b[6] === a)]));
const erken = top((b) => b[6] !== 'yok');
console.log(`${erken} bulgu (%${(100 * erken / T).toFixed(0)}) daha erken bir asamada kapatilabilirdi; ` +
  `sahipsiz ${tumSz} bulgunun ${sz((b) => b[6] === 'yok')}'i icin erken asama yok`);
```

```
kova           acik  haftalik yeni  kapasite  haftalik net  12. hafta
abone            27            4.0         4           0.0         27
faturalama        6            0.9         2          -1.1          0
saha             21            3.1         3           0.1         23
olcum            27            4.0         5          -1.0         15
platform         26            3.9         3           0.9         37
sahipsiz         40            6.0         0           6.0        112
toplam yigin 147 -> 214; sahipli kovalar 107 -> 102, sahipsiz kova 40 -> 112
sahipsiz kovayi 12 haftada eritmek haftada 9.3 kalem ister: en buyuk tek ekip kapasitesinin 1.9 kati, bes ekibin toplam kapasitesinin (17) %55'i

sahipsiz 40 bulgunun 9'u kume nesnesinde, 31'i kume disindaki kaynakta (ag, kimlik)

kaldirac                             cozulen   kalan   kalan yuksek                          kapsam
ad alani sahipligi satiri                  9      31              9             yalniz kume nesnesi
kaynak envanterinde sahip alani           40       0              0                 butun kaynaklar
dusuk siddetli sinifi susturma            16      24              9    bulgu kaybolur, kaynak kalir
kabul kapisinda sahip etiketi              0      40              9  yalniz yeni olusturulan kaynak
kabul kapisi mevcut 40 bulguya dokunmaz; haftalik yeni sahipsizin kume payini 1.3'ten 0'a indirir

erken asama    bulgu   sahipsiz
tasarim           33          9
yapi              32          0
kod                6          0
dagitim           51          6
yok               25         25
122 bulgu (%83) daha erken bir asamada kapatilabilirdi; sahipsiz 40 bulgunun 25'i icin erken asama yok
```

Üst tablo altı kovanın altısını farklı yönlere gönderiyor. Faturalama ve ölçüm ekiplerinin
kapasitesi gelen yükün üstünde olduğu için yığınları eriyor: faturalama on iki haftada sıfırlanıyor,
ölçüm yirmi yediden on beşe iniyor. Abone ekibi tam dengede duruyor. Saha ve platform ekipleri her
hafta biraz geriye düşüyor ve platformun yığını yirmi altıdan otuz yediye çıkıyor. Bunların hepsi
yönetilebilir sayılardır ve hepsinin ortak yanı bir sahibinin olmasıdır.

Altıncı satır başka bir şey. Sahipsiz kovada kapasite sıfırdır, çünkü kapasite bir ekibe ait bir
kavramdır ve bu kovanın ekibi yoktur. Kırk bulgu her hafta altı yeni bulgu alıyor, hiç kapanmıyor ve
on iki haftada yüz on ikiye çıkıyor. Sahibi olan beş kovanın toplam yığını aynı sürede yüz yediden
yüz ikiye inerken toplam envanter yüz kırk yediden iki yüz on dörde çıkıyor: artışın tamamı tek bir
kovadan geliyor ve o kova hiçbir düzeltme çabasına yanıt vermiyor.

Son satır bunun fiyatını yazıyor. Sahipsiz kovayı on iki haftada eritmek haftada dokuz virgül üç
kalemlik bir kapasite ister. Bu sayı en büyük tek ekip kapasitesinin bir virgül dokuz katı ve beş
ekibin **toplam** kapasitesinin yüzde elli beşidir. Yani sahipsiz bulgular bir ekibe toptan
verilseydi o ekibin bütün kapasitesi yetmezdi; iki ekibin kapasitesi gerekirdi ve o iki ekip kendi
bulgularını bırakmak zorunda kalırdı. Sahipsizliğin bedeli, kimsenin bakmaması değil, bakacak
birinin bulunması hâlinde ödenmesi gereken sayının bu kadar büyük olmasıdır.

## Sahipliği Kim Verecek

Orta blok sahipsizliğin nereden geldiğini ayırıyor: kırk bulgunun yalnız dokuzu bir küme
nesnesindedir, otuz biri ağ ve kimlik kaynaklarındadır. Bu ayrım kaldıraç tablosunun tamamını
belirliyor. Ad alanı sahipliği tablosuna bir satır yazmak dokuz bulguyu çözer ve otuz biri yerinde
bırakır — çünkü o kaynaklar bir ad alanında değildir. Bir önceki dersin kabul kapısına eklenen sahip
etiketi kuralı mevcut kırk bulgunun **hiçbirine** dokunmaz; yalnız yeni oluşturulan küme nesnelerini
etkiler ve haftalık yeni sahipsizin küme payını bir virgül üçten sıfıra indirir. Düşük şiddetli
sınıfı susturmak envanteri kırktan yirmi dörde indirir ama kalan yüksek şiddetli dokuz bulguya hiç
dokunmaz; kaynak yerinde durur, yalnız görünmez olur.

Kırk bulgunun kırkını çözen tek satır ikincisidir: kaynak envanterinde bir sahip alanı. O alan
kümenin bir düzeneği değildir, denetimin bir çıktısı da değildir — kaynak oluşturulurken doldurulan
bir metadır. Sürekli denetim sahipliği **üretemez**; yalnız yokluğunu raporlar.

## Daha Erken Nerede Kapanırdı

Son tablo iki sütunla bakıldığında dersin sonucunu veriyor. Yüz kırk yedi bulgunun yüz yirmi ikisi —
yüzde seksen üçü — daha erken bir aşamada kapatılabilirdi: elli biri dağıtım aşamasında bir manifest
denetimiyle, otuz üçü tasarımda bir erişim kararıyla, otuz ikisi yapı aşamasında bir yeniden
inşayla, altısı kodda. Sürekli denetim bu yüz yirmi ikiyi her taramada yeniden bulur ve her taramada
yeniden raporlar.

İkinci sütun ise ters yönde okunur. Sahipsiz kırk bulgunun yirmi beşi için erken aşama **yoktur** ve
bu bir rastlantı değildir: kullanılmayan kimlik tanımları ile sahipsiz kalan eski ad alanı, bir
aşamada doğup unutulmuş kaynaklardır. Onları üreten karar bir aşamaya ait değil, bir kaydın hiç
tutulmamış olmasına aittir. Bu kursun ölçüsü — bir kalemi daha erken kapatmanın kaç kat ucuz olduğu
— burada başka bir biçim alır: sahiplik bir aşamada kapatılabilecek bir kalem değil, kaynağın var
olduğu ilk andan itibaren taşıması gereken bir alandır. Alan boş bırakıldığında ortaya çıkan bulgu
hiçbir aşamada ucuzlamaz; yalnızca kimsenin bakmadığı bir listede birikir.

## Özet

- 147 açık bulgunun sahipliği üç adımlı bir zincirle çözülüyor: sahip etiketi 65, ad alanı sahipliği
  24, depo yolu eşlemesi 18. Zincir yüzde 72,8'de duruyor ve 40 bulgu (yüzde 27,2) sahipsiz kalıyor.
- Bulguların 81'i uygulama ekiplerine düşüyor, 26'sı platform ekibinde kalıyor. Sahipsiz kovada 9
  yüksek şiddetli bulgu var; sahipsizlik düşük şiddetle sınırlı değil.
- Sahipsiz kovanın kapasitesi sıfırdır: 40 bulgu on iki haftada 112'ye çıkarken sahibi olan beş
  kovanın toplam yığını 107'den 102'ye iniyor. Bu kovayı aynı sürede eritmek haftada 9,3 kalem, yani
  beş ekibin toplam kapasitesinin yüzde 55'i kadar bir pay ister.
- Sahipsiz 40 bulgunun 31'i küme dışındaki ağ ve kimlik kaynaklarındadır; ad alanı sahipliği yalnız
  9'unu çözer, kabul kapısı mevcut hiçbirine dokunmaz, susturma 16'sını görünmez yapar ve kaynağı
  yerinde bırakır. Kırkını çözen tek şey kaynak envanterindeki bir sahip alanıdır.
- 147 bulgunun 122'si (yüzde 83) daha erken bir aşamada kapatılabilirdi; sahipsiz 40 bulgunun 25'i
  için erken aşama yoktur, çünkü sahiplik bir aşamanın değil kaynak oluşturmanın kararıdır.

## Sonraki Adım

Erken aşama sütununda otuz iki bulgu **yapı** yazıyor: değişken görüntü etiketi, imzasız görüntü ve
eski çalışma zamanı sürümü. Bu üç sınıfın ortak yanı, hiçbirinin yerinde düzeltilememesidir —
kapanmaları için yeni bir görüntü inşa edilip otuz bir kopyanın yeniden dağıtılması gerekir. Denetim
onları her taramada yeniden bulur, çünkü tarama ile düzeltme arasındaki mesafe bir yapılandırma
değişikliği değil, bir sürüm döngüsüdür. Sonraki ders o döngüyü ölçer: bir düzeltme yayımlandıktan
sonra kopyalara ulaşması kaç gün alıyor, yerinde yama ile yeniden inşa arasındaki gün farkı nedir ve
yeniden inşanın karşılığında getirdiği kesinti kaç kopyaya değiyor.
