---
title: 'Denetim Günlükleri'
source: 'https://academia.sh/tr/kurslar/bulut-yonetisimi/denetim-gunlukleri'
course: 'Bulut Yönetişimi, Güvenlik ve Maliyet'
language: tr
updated: '2026-08-17T18:06:55+00:00'
license: 'CC BY-SA 4.0'
---

# Denetim Günlükleri

Bir olay kümesi denetim kaydına düşürülür ve kaç sorunun yanıtlandığı sayılır: 480 olayın 273'ü dört soruyu birden yanıtlıyor, varsayılan yapılandırmada 88'i. Sekiz soruşturmanın 3'ü yanıtlanıyor. Kaydı 11 özne silebiliyor; ayrı hesaba taşımak 6 meşru işi durduruyor ve veri düzlemi kaydı yönetim düzleminin 772 katına mal oluyor.

Önceki üç derste aynı cümle defalarca geçti: "hepsi denetim kaydında". Anahtar kullanımı kayda
düşüyordu, sır okumaları kayda düşüyordu, politika değişiklikleri kayda düşüyordu. O cümle şimdiye
kadar hiç sınanmadı. Bu ders onu sınar ve ölçüyü tek bir biçime indirir: bir olay kümesi denetim
kaydına düşürülür ve **kaç soru yanıtlanabiliyor** sayılır. Sorular dörttür — kim, ne zaman, hangi
kaynak, hangi kimlikten.

Kaydın kapsamadığı bir işlem türü var ve adı yazılmalıdır: **veri düzlemi okumaları ve yazmaları.**
Yönetim düzlemi çağrıları (politika değişikliği, anahtar kullanımı, kaynak oluşturma) varsayılan
olarak kaydedilir; nesne okuma, nesne yazma ve kuyruk tüketimi kaydedilmez. Bu kayıt ayrı açılır ve
**ayrıca ücretlendirilir**. İkinci konu kaydın kendisidir: bir denetim günlüğü de bir yüzeydir — kim
silebiliyor, nereye yazılıyor, değiştirilemezliği nasıl sağlanıyor.

Ölçüm **bölgesel ölçüm ağı** üzerindedir, **kurgudur** ve `node` ile yazılmış bir **modeldir**.
Para birimi de kurgudur: "b" birimi uydurmadır, gerçek bir fiyat değildir.

**BG19.** Olay örneklemi 480 işlemdir; günlük hacim yönetim düzleminde 2.400, veri düzleminde
1.860.000 olaydır (kurgu).
**BG20.** Yönetim düzlemi kaydı varsayılan olarak açıktır; veri düzlemi kaydı ayrı açılır ve ayrıca
ücretlendirilir.
**BG21.** Olayın kimliği dört türdendir: kullanıcı, rol üstlenmiş kullanıcı, iş yükü kimliği,
otomatik servis. Rol üstlenmede tekil özne ancak **oturum etiketi** varsa okunur.
**BG22.** Toplu işlemler kaynağı tek tek adlandırmaz; kaynak alanı kapsayıcı adıyla dolar ve "hangi
kaynak" sorusu yanıtsız kalır.
**BG23.** Kaydın yazıldığı hedef için silebilen, değiştirebilen ve okuyan özne sayıları ile
değiştirilemezlik kilidi modelde yazılıdır.
**BG24.** Maliyet kurgu birimle hesaplanır: bin olay alımı 0,4 b, GB-ay saklama 12 b, olay boyutu
1,4 KB. Örneklemli kayıt tekil kaynak sorularını yanıtlamaz. Üreteç kendi yazılmıştır; tohum
20260722'dir.

## Kaç Soru Yanıtlanabiliyor

```js
// olay.mjs — denetim kaydina dusen olaylar ve yanitlanabilen sorular. MODELDIR.
// Bolgesel olcum agi KURGUDUR. Uretec kendi yazilmistir; tohum asagida gorunur.
export const TOHUM = 20260722;
const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };

export const YONETIM = ["politika-degisikligi", "anahtar-kullanma", "rol-ustlenme",
  "ag-kurali-degisikligi", "sir-okuma", "kaynak-olusturma"];
export const VERI = ["nesne-okuma", "nesne-yazma", "nesne-silme", "kuyruk-tuketimi"];
export const GUNLUK = { yonetim: 2400, veri: 1860000 };    // gunluk olay hacmi (kurgu)

const r = uretec(TOHUM);
export const OLAY = Array.from({ length: 480 }, () => {
  const veriMi = r() < 0.72;
  const islem = veriMi ? VERI[Math.floor(r() * VERI.length)]
    : YONETIM[Math.floor(r() * YONETIM.length)];
  const u = r();
  const kimlik = u < 0.18 ? "kullanici" : u < 0.52 ? "rol-ustlenme"
    : u < 0.86 ? "is-yuku" : "otomatik-servis";
  return { duzlem: veriMi ? "veri" : "yonetim", islem, kimlik,
    etiket: kimlik === "rol-ustlenme" ? r() < 0.38 : true,   // oturum etiketi tekil ozneyi verir
    ayrinti: r() > (veriMi ? 0.34 : 0.12) };                 // toplu islem kaynagi adlandirmaz
});

// Dort soru: kayitta duran bir olay hangilerini yanitliyor.
export const SORU = {
  "ne zaman": () => true,
  "hangi kimlikten": () => true,
  "hangi kaynak": (o) => o.ayrinti,
  "kim (tekil ozne)": (o) => o.kimlik !== "rol-ustlenme" || o.etiket,
};
export const kayitta = (o, veriAcik) => o.duzlem === "yonetim" || veriAcik;

// Sorusturma: bir soru bir isleme, bir alana ve geriye bakis suresine baglidir.
export const SORUSTURMA = [
  ["uretim politika belgesini kim degistirdi", "politika-degisikligi", "kim (tekil ozne)", 12],
  ["arsivden hangi nesneler okundu", "nesne-okuma", "hangi kaynak", 5],
  ["musteri anahtarini hangi kimlik kullandi", "anahtar-kullanma", "hangi kimlikten", 40],
  ["olcum kaydini kim sildi", "nesne-silme", "kim (tekil ozne)", 3],
  ["ag kurali ne zaman gevsetildi", "ag-kurali-degisikligi", "ne zaman", 210],
  ["bakim kimligi hangi sirri okudu", "sir-okuma", "hangi kaynak", 60],
  ["is ortagi jetonunu kim okudu", "sir-okuma", "kim (tekil ozne)", 150],
  ["yedek hangi kaynaga yazildi", "nesne-yazma", "hangi kaynak", 400],
];
export const yanit = (s, veriAcik, saklama) => {
  const [, islem, alan, gun] = s;
  const l = OLAY.filter((o) => o.islem === islem && kayitta(o, veriAcik) && SORU[alan](o));
  if (gun > saklama) return ["hayir", `saklama ${saklama} gun < ${gun}`];
  if (l.length === 0) {
    const kapali = OLAY.some((o) => o.islem === islem) && VERI.includes(islem) && !veriAcik;
    return ["hayir", kapali ? "veri duzlemi kaydi kapali" : `${alan} alani bos`];
  }
  return ["evet", `${l.length} olay`];
};

const gen = (B) => (h) => h.map((v, j) => j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))
  .join("");
const yz = gen([20, 12, 14, 18, 12]);

if (import.meta.url === `file://${process.argv[1]}`) {
  const y = OLAY.filter((o) => o.duzlem === "yonetim").length;
  console.log(`model (tohum ${TOHUM}): ${OLAY.length} olay orneklemi — ${y} yonetim duzlemi, ` +
    `${OLAY.length - y} veri duzlemi; gunluk hacim ${GUNLUK.yonetim} / ${GUNLUK.veri} (kurgu)`);
  console.log("\n" + yz(["soru", "varsayilan", "veri de acik", "kayit disi kalan", "oran"]));
  for (const [ad, f] of Object.entries(SORU)) {
    const v = OLAY.filter((o) => kayitta(o, false) && f(o)).length;
    const t = OLAY.filter((o) => kayitta(o, true) && f(o)).length;
    console.log(yz([ad, v, t, OLAY.length - t, `${Math.round(100 * t / OLAY.length)}%`]));
  }
  const dort = (va) => OLAY.filter((o) => kayitta(o, va) &&
    Object.values(SORU).every((f) => f(o))).length;
  console.log(yz(["dordu birden", dort(false), dort(true), OLAY.length - dort(true),
    `${Math.round(100 * dort(true) / OLAY.length)}%`]));

  for (const [va, sk, ad] of [[false, 90, "varsayilan (yonetim, 90 gun)"],
    [true, 90, "veri duzlemi acik (90 gun)"], [true, 365, "veri duzlemi acik (365 gun)"]]) {
    const s = SORUSTURMA.map((x) => yanit(x, va, sk));
    console.log(`\n${ad}: ${s.filter((x) => x[0] === "evet").length}/${SORUSTURMA.length} soru ` +
      `yanitlaniyor`);
    if (ad.startsWith("varsayilan")) for (const [i, x] of SORUSTURMA.entries())
      console.log(`  ${x[0].padEnd(42)} ${s[i][0].padEnd(6)} ${s[i][1]}`);
  }
}
```

```
model (tohum 20260722): 480 olay orneklemi — 132 yonetim duzlemi, 348 veri duzlemi; gunluk hacim 2400 / 1860000 (kurgu)

soru                  varsayilan  veri de acik  kayit disi kalan        oran
ne zaman                     132           480                 0        100%
hangi kimlikten              132           480                 0        100%
hangi kaynak                 119           352               128         73%
kim (tekil ozne)              99           374               106         78%
dordu birden                  88           273               207         57%

varsayilan (yonetim, 90 gun): 3/8 soru yanitlaniyor
  uretim politika belgesini kim degistirdi   evet   16 olay
  arsivden hangi nesneler okundu             hayir  veri duzlemi kaydi kapali
  musteri anahtarini hangi kimlik kullandi   evet   17 olay
  olcum kaydini kim sildi                    hayir  veri duzlemi kaydi kapali
  ag kurali ne zaman gevsetildi              hayir  saklama 90 gun < 210
  bakim kimligi hangi sirri okudu            evet   15 olay
  is ortagi jetonunu kim okudu               hayir  saklama 90 gun < 150
  yedek hangi kaynaga yazildi                hayir  saklama 90 gun < 400

veri duzlemi acik (90 gun): 5/8 soru yanitlaniyor

veri duzlemi acik (365 gun): 7/8 soru yanitlaniyor
```

İlk sütun varsayılan yapılandırmanın kapsamıdır ve 480 olayın 348'i o sütunda hiç yoktur — veri
düzlemi kaydı kapalıdır. "Ne zaman" ve "hangi kimlikten" soruları kalan 132 olayın hepsinde
yanıtlanıyor; kayıt bu iki alanı her zaman taşır.

Diğer iki soru taşımıyor. Veri düzlemi de açıldığında "hangi kaynak" 480 olayın 352'sinde
yanıtlanıyor: kalan 128 olay **toplu işlemdir** ve kaynak alanı tek tek nesneleri değil kapsayıcıyı
adlandırır. "Kim" sorusu 374'te yanıtlanıyor; eksik 106 olay rol üstlenmiş çağrılardır ve oturum
etiketi taşımıyorlar. Kayıtta rolün adı var, o rolü üstlenen insanın adı yok — rol paylaşımlıysa
soru orada biter.

Dört soruyu **birden** yanıtlayan olay sayısı 273'tür, yani %57. Varsayılan yapılandırmada aynı sayı
88'dir: 480 olayın %18'i. Bu, "hepsi denetim kaydında" cümlesinin ölçülmüş karşılığıdır.

Soruşturma listesi aynı sonucu somut sorularla veriyor: sekiz sorunun **üçü** yanıtlanıyor.
Başarısızlıklar iki sınıfta toplanıyor ve ikisi ayrı kararlara bakıyor. İki soru veri düzlemi kaydı
kapalı olduğu için, üç soru saklama süresi yetmediği için yanıtsız. Veri düzlemi açılınca 5/8, üstüne
saklama 365 güne çıkınca 7/8 olur. Hangisinin önce yapılacağı bir maliyet sorusudur ve sonraki
bölümde sayılıdır.

## Kaydın Kendi Yüzeyi ve Saklamanın Faturası

```js
// kayit.mjs — kaydin kendi yuzeyi (silme, degistirilemezlik) ve saklama-maliyet taramasi.
// Para birimi KURGUDUR: "b" birimi uydurmadir, gercek fiyat degildir.
import { GUNLUK, SORUSTURMA, yanit } from "./olay.mjs";

const HEDEF = [                                           // kayit nereye yaziliyor. MODEL.
  ["ayni hesap, ayni kova", 11, 11, 14, "yok", 0, 0],
  ["ayni hesap, kilitli kova", 3, 0, 14, "saklama kilidi", 4, 2],
  ["ayri hesap, kilitli kova", 1, 0, 5, "saklama kilidi", 9, 6],
  ["ayri hesap + ikinci kopya", 0, 0, 5, "kilit + kopya", 14, 6],
].map(([ad, sil, degis, oku, kilit, ek, duran]) => ({ ad, sil, degis, oku, kilit, ek, duran }));

const OLAY_KB = 1.4, ALIM_BIN = 0.4, SAKLAMA_GB = 12;     // kurgu birim (b)
const gb = (n, gun) => (n * gun * OLAY_KB) / (1024 * 1024);
const aylik = (n, gun) => Math.round((n * 30 / 1000) * ALIM_BIN + gb(n, gun) * SAKLAMA_GB);

const gen = (B) => (h) => h.map((v, j) => j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))
  .join("");
const yh = gen([27, 11, 16, 9, 19, 10, 12]);
const ym = gen([14, 12, 14, 14, 14, 13, 13]);

console.log(yh(["kayit hedefi", "silebilen", "degistirebilen", "okuyan", "degistirilemezlik",
  "ek kalem", "duran is"]));
for (const h of HEDEF)
  console.log(yh([h.ad, h.sil, h.degis, h.oku, h.kilit, h.ek, h.duran]));

console.log("\n" + ym(["saklama(gun)", "yonetim GB", "yonetim(b/ay)", "veri GB", "veri(b/ay)",
  "%5 orneklem", "kapsanan"]));
for (const gun of [30, 90, 180, 365, 730]) {
  const t = SORUSTURMA.map((x) => yanit(x, true, gun)).filter((x) => x[0] === "evet").length;
  console.log(ym([gun, gb(GUNLUK.yonetim, gun).toFixed(2), aylik(GUNLUK.yonetim, gun),
    Math.round(gb(GUNLUK.veri, gun)), aylik(GUNLUK.veri, gun),
    aylik(GUNLUK.veri * 0.05, gun), `${t}/${SORUSTURMA.length}`]));
}

const kapsam = (va, gun) => SORUSTURMA.map((x) => yanit(x, va, gun))
  .filter((x) => x[0] === "evet").length;
const tut = (va, gun) => aylik(GUNLUK.yonetim, gun) + (va ? aylik(GUNLUK.veri, gun) : 0);
console.log(`\nkapsam ve maliyet (kurgu birim b): varsayilan ${kapsam(false, 90)}/8 -> ` +
  `${tut(false, 90)} b/ay; veri duzlemi acik 90 gun ${kapsam(true, 90)}/8 -> ${tut(true, 90)} b/ay; ` +
  `365 gun ${kapsam(true, 365)}/8 -> ${tut(true, 365)} b/ay`);
console.log(`veri duzlemi kaydini acmak: +${tut(true, 90) - tut(false, 90)} b/ay ve ` +
  `+${kapsam(true, 90) - kapsam(false, 90)} soru. Saklamayi 90 -> 365 gun: ` +
  `+${tut(true, 365) - tut(true, 90)} b/ay ve +${kapsam(true, 365) - kapsam(true, 90)} soru`);
console.log(`ayni kapsamin iki yolu: yalniz yonetim duzlemi 365 gun ${kapsam(false, 365)}/8 -> ` +
  `${tut(false, 365)} b/ay; veri duzlemi acik 90 gun ${kapsam(true, 90)}/8 -> ${tut(true, 90)} b/ay`);
console.log(`veri duzlemi kaydi yonetim duzlemi kaydinin ` +
  `${(aylik(GUNLUK.veri, 365) / aylik(GUNLUK.yonetim, 365)).toFixed(0)} katidir; %5 orneklem bu ` +
  `farki 20'ye boler ama tekil kaynak sorularini yanitlamaz`);
```

```
kayit hedefi                 silebilen  degistirebilen   okuyan  degistirilemezlik  ek kalem    duran is
ayni hesap, ayni kova               11              11       14                yok         0           0
ayni hesap, kilitli kova             3               0       14     saklama kilidi         4           2
ayri hesap, kilitli kova             1               0        5     saklama kilidi         9           6
ayri hesap + ikinci kopya            0               0        5      kilit + kopya        14           6

saklama(gun)    yonetim GB yonetim(b/ay)       veri GB    veri(b/ay)  %5 orneklem     kapsanan
30                    0.10            30            75         23214         1161          3/8
90                    0.29            32           224         25002         1250          5/8
180                   0.58            36           447         27684         1384          6/8
365                   1.17            43           906         33197         1660          7/8
730                   2.34            57          1813         44074         2204          8/8

kapsam ve maliyet (kurgu birim b): varsayilan 3/8 -> 32 b/ay; veri duzlemi acik 90 gun 5/8 -> 25034 b/ay; 365 gun 7/8 -> 33240 b/ay
veri duzlemi kaydini acmak: +25002 b/ay ve +2 soru. Saklamayi 90 -> 365 gun: +8206 b/ay ve +2 soru
ayni kapsamin iki yolu: yalniz yonetim duzlemi 365 gun 5/8 -> 43 b/ay; veri duzlemi acik 90 gun 5/8 -> 25034 b/ay
veri duzlemi kaydi yonetim duzlemi kaydinin 772 katidir; %5 orneklem bu farki 20'ye boler ama tekil kaynak sorularini yanitlamaz
```

Üstteki tablo dersin en rahatsız edici satırıyla başlıyor. Varsayılan yerleşimde denetim kaydı,
kaydettiği olayların gerçekleştiği hesabın içinde duruyor ve **11 özne onu silebiliyor, 11'i
değiştirebiliyor.** Kaydın anlamı buradan gelir: bir olayı yapabilen özne, o olayın kaydını da
kaldırabiliyorsa kayıt bir kanıt değil, bir kolaylıktır. Saklama kilidi değiştirebileni sıfıra,
silebileni 3'e indiriyor; bedeli 4 kalem yapılandırma ve **2 meşru işin durmasıdır** — kova üzerinde
doğrudan çalışan iki iş kilitle uyuşmuyor.

Ayrı hesaba taşımak silebileni 1'e indirir, ama okuyan özne sayısını 14'ten 5'e düşürür ve **6 meşru
iş durur**: kaydı doğrudan sorgulayan ekipler erişimlerini kaybeder ve hesaplar arası okuma ayrıca
kurulmadan geri gelmez. Daraltmanın bedeli budur ve 9 yapılandırma kalemiyle birlikte gelir. Son
satır silebileni sıfırlar: kilit ve ikinci kopya, 14 kalem. Değiştirilemezlik ücretsiz bir özellik
değil, 14 kalemlik bir yapılandırma ve 6 durmuş iştir.

Alt tablo saklama ile maliyeti aynı satırda tutuyor. Yönetim düzlemi kaydı ucuzdur: 365 günde ayda
43 b, 1,17 GB. Veri düzlemi kaydı aynı sürede 33.197 b ve 906 GB — **772 kat**. "Kaydın kapsamadığı
işlem türü" ücretsiz olduğu için kapsam dışında değildir; kapsam dışıdır çünkü açıldığında fatura
üç basamak büyür. Yüzde beşlik örneklem bu farkı yirmiye böler, ama tekil kaynak sorularını
yanıtlamaz: "arşivden hangi nesneler okundu" sorusu örneklemli bir kayıtta yanıtsızdır.

Marjinal hesap sıralamayı belirliyor. Veri düzlemini açmak ayda 25.002 b ekliyor ve 2 soru
kazandırıyor: soru başına 12.501 b. Saklamayı 90 günden 365 güne çıkarmak 8.206 b ekliyor ve yine 2
soru kazandırıyor: soru başına 4.103 b. Son satır kararı kesinleştiriyor — **yalnız yönetim düzlemi
kaydını 365 gün saklamak 5/8 soruyu ayda 43 b'ye yanıtlıyor**, veri düzlemini açıp 90 gün saklamak
aynı 5/8 için 25.034 b istiyor. Beş yüz seksen kat fark, tek bir yapılandırma sırasından doğuyor.

## Özet

- 480 olayın 273'ü dört soruyu birden yanıtlıyor (%57); varsayılan yapılandırmada bu sayı 88'dir
  (%18), çünkü 348 olay veri düzlemindedir ve hiç kaydedilmez.
- "Ne zaman" ve "hangi kimlikten" kayıtlı her olayda yanıtlanıyor; "hangi kaynak" 128 toplu işlemde,
  "kim" ise oturum etiketi taşımayan 106 rol üstlenme çağrısında yanıtsız kalıyor.
- Sekiz soruşturmanın 3'ü varsayılan yapılandırmada yanıtlanıyor; iki soru veri düzlemi kapalı
  olduğu, üç soru saklama süresi yetmediği için düşüyor.
- Kaydı varsayılan yerleşimde 11 özne silebiliyor ve 11'i değiştirebiliyor; kilit ve ayrı hesap bunu
  0'a indiriyor, karşılığında 14 yapılandırma kalemi ve **6 meşru işin durması** geliyor.
- Veri düzlemi kaydı yönetim düzlemi kaydının 772 katına mal oluyor (365 gün, kurgu birim);
  yüzde beşlik örneklem farkı yirmiye böler ama tekil kaynak sorularını yanıtlamaz.
- Marjinal bedel sırayı veriyor: soru başına saklama uzatması 4.103 b, veri düzlemi açması 12.501 b;
  yalnız yönetim düzlemini 365 gün saklamak 5/8 soruyu ayda 43 b'ye yanıtlıyor.

## Sonraki Adım

Şifreleme, döndürme ve kayıt kurulduğunda ortaya bir sorun çıkıyor: bunların hepsi **yapılandırma**
olarak duruyor ve yapılandırma zamanla kayıyor. Bir kova kilidi kaldırılıyor, bir kayıt hedefi
değiştiriliyor, bir bacak muafiyeti kalıcı hale geliyor. Bir sonraki ders bu kaymayı kural kümesiyle
ölçer: kaç kaynak uyum kurallarından geçiyor, kaç tanesi geçmiyor ve otomatik düzeltme devreye
girdiğinde kaç meşru yapılandırma bozuluyor.
