---
title: 'İş Yükü Kimliği'
source: 'https://academia.sh/tr/kurslar/calisma-zamani-guvenligi/is-yuku-kimligi'
course: 'Çalışma Zamanı Güvenliği ve Sır Yönetimi'
language: tr
updated: '2026-08-17T18:06:42+00:00'
license: 'CC BY-SA 4.0'
---

# İş Yükü Kimliği

İş yükü kimliği tek bir sayıyla ölçülür: kaç statik sırrın yerini alıyor. Otuz bir kalemin yirmisi ortadan kalkıyor, on biri kalıyor ve kalanların tamamı altı sırda toplanıyor — imzayı doğrulayan tarafta duran anahtarlar ile federasyonu desteklemeyen dış sağlayıcılar. Dokuz uygulamanın yalnız ikisi hiçbir statik sır taşımaz hâle geliyor, yedisi en az bir tane taşımaya devam ediyor. Sırrın yerini alan güven ilişkisi kalem sayısını düşürmüyor; kalemin sızabilir olmasını düşürüyor — ve grup düzeyinde yazıldığında yirmi çift yerine otuz altı çift açıyor.

İki ders boyunca ölçülen şey aynı nesnenin iki özelliğiydi: sırrın ömrü ve sırrın değişme
maliyeti. İkisi de sırrın **var olduğunu** varsayıyordu. Bu ders o varsayımı kaldırır.

Bir uygulamanın veri tabanına bağlanmak için taşıdığı değer, aslında o uygulamanın kim olduğunu
kanıtlamanın bir yoludur. Kanıt uygulamanın kendi taşıdığı bir değerden değil, uygulamayı
çalıştıran platformdan gelirse, taşınacak bir değer kalmaz. İş yükü kimliğinin mekaniği —
kimliğin nasıl verildiği, nasıl doğrulandığı, hangi bileşenlerin işe karıştığı — daha önceki bir
kursta ölçüldü ve burada tekrarlanmıyor. Buranın ölçüsü tek bir sayıdır: **kaç statik sırrın
yerini alıyor, kaç tanesinin alamıyor.**

- **SR18.** Önceki üç dersin modeli sürüyor: dokuz uygulama, otuz bir kalem, on yedi sır. Ortam
  **kurgudur**, ölçülen şey `node` ile yazılmış bir **modeldir** ve **gerçek sır değeri
  taşımaz**.
- **SR19.** Bir hedef sistemin iş yükü kimliğini doğrudan doğrulayıp doğrulayamadığı model
  tablosunda verilir ve gerekçesiyle yazılır. İki gerekçe var: kanıtın doğrulayan tarafta durması
  gerekmesi, ve sağlayıcının federasyonu desteklememesi.
- **SR20.** İmza anahtarları özel bir durumdur. Belge ve oturum imzasını doğrulayan taraf
  anahtarın kendisine ihtiyaç duyar; iş yükü kimliği bir çağrıyı yetkilendirir, bir imzayı
  doğrulatmaz. Buna karşılık **servisler arası çağrı** imzası yetkilendirmedir ve iş yükü
  kimliğiyle karşılanır.
- **SR21.** Jeton ömrü on beş dakika alınıyor; bu bir kurgu değerdir ve iş yükü kimliği
  jetonunun süresi dolmadan iptal edilemediği varsayılıyor.
- **SR22.** Rastgelelik yok; bütün sayılar model tablolarından türetiliyor ve çıktı koşumdan
  koşuma aynı.

## Kaç Kalem Ortadan Kalkıyor

```js
// kimlik.mjs — is yuku kimliginin ortadan kaldirdigi statik sir ve geriye kalan kalem. MODELDIR.
// Ortam KURGUDUR; GERCEK SIR DEGERI YOKTUR, yalniz sir yollari ve kabul ozellikleri modellenir.
export const OKUR = {
  "portal-onyuz": ["imza/oturum-imzalama"],
  "portal-api": ["veri/portal-birincil", "veri/portal-okuma", "imza/oturum-imzalama",
    "imza/ic-cagri-imzalama", "altyapi/onbellek", "altyapi/gunluk-yazma"],
  "abone-kayit": ["veri/portal-birincil", "dis/eposta-gecidi", "dis/kisa-mesaj-gecidi"],
  "fatura-servisi": ["veri/fatura-birincil", "veri/portal-okuma", "veri/arsiv",
    "dis/odeme-gecidi", "imza/belge-imzalama"],
  "odeme-koprusu": ["dis/odeme-gecidi"],
  "saha-api": ["veri/saha-birincil", "kuyruk/is-emri-kuyrugu", "dis/harita-servisi",
    "imza/ic-cagri-imzalama"],
  "is-emri": ["veri/saha-birincil", "kuyruk/is-emri-kuyrugu", "kuyruk/bildirim-kuyrugu",
    "dis/harita-servisi"],
  "bildirim": ["kuyruk/bildirim-kuyrugu", "dis/eposta-gecidi", "dis/kisa-mesaj-gecidi"],
  "rapor-uretici": ["veri/portal-okuma", "veri/arsiv", "altyapi/nesne-deposu",
    "dis/eposta-gecidi"],
};
// kabul: hedef sistem is yuku kimligini dogrudan dogrulayabiliyor mu (evet/hayir + gerekce).
// dondurme: kimlik alamayan sirrin bugunku dondurme periyodu (gun).
const ALANVAR = { veri: [true, "-", 180], kuyruk: [true, "-", 180], altyapi: [true, "-", 180],
  imza: [false, "dogrulayan-tarafta", 90], dis: [false, "saglayici-desteklemiyor", 365] };
const ISTISNA = { "altyapi/onbellek": [false, "saglayici-desteklemiyor", 180],
  "imza/ic-cagri-imzalama": [true, "-", 90], "dis/harita-servisi": [true, "-", 365],
  "dis/odeme-gecidi": [false, "saglayici-desteklemiyor", 90] };
export const SIR = Object.fromEntries([...new Set(Object.values(OKUR).flat())].map((s) => {
  const [kabul, gerekce, dondurme] = ISTISNA[s] || ALANVAR[s.split("/")[0]];
  return [s, { kabul, gerekce, dondurme }];
}));
export const AD = Object.keys(OKUR);
export const KALEM = AD.flatMap((a) => OKUR[a].map((s) => [a, s]));
export const kalan = (a) => OKUR[a].filter((s) => !SIR[s].kabul);
export const gen = (B) => (h) => h.map((v, j) => j ? String(v).padStart(B[j])
  : String(v).padEnd(B[0])).join("");

if (import.meta.url === `file://${process.argv[1]}`) {
  const yz = gen([10, 8, 10, 8, 12, 26]);
  console.log(`model: ${KALEM.length} (uygulama, sir) kalemi, ${Object.keys(SIR).length} sir, ` +
    `${AD.length} uygulama (kurgu uretim ortami)\n`);
  console.log(yz(["alan", "sir", "kalkan", "kalan", "kalan sir", "kalma gerekcesi"]));
  for (const al of ["veri", "kuyruk", "altyapi", "imza", "dis"]) {
    const k = KALEM.filter(([, s]) => s.startsWith(al + "/"));
    const kl = k.filter(([, s]) => !SIR[s].kabul);
    const g = [...new Set(kl.map(([, s]) => SIR[s].gerekce))];
    console.log(yz([al, [...new Set(k.map(([, s]) => s))].length, k.length - kl.length, kl.length,
      [...new Set(kl.map(([, s]) => s))].length, g.length ? g.join(",") : "-"]));
  }
  const K = KALEM.filter(([, s]) => !SIR[s].kabul);
  console.log(yz(["toplam", Object.keys(SIR).length, KALEM.length - K.length, K.length,
    [...new Set(K.map(([, s]) => s))].length, ""]));

  const yz2 = gen([16, 10, 10, 34]);
  console.log(`\n${yz2(["uygulama", "kalem", "kalan", "kalan sirlar"])}`);
  for (const a of AD)
    console.log(yz2([a, OKUR[a].length, kalan(a).length,
      kalan(a).map((s) => s.split("/")[1]).join(",") || "yok"]));
  const temiz = AD.filter((a) => kalan(a).length === 0);
  console.log(`\nhic statik sir tasimayan uygulama: ${temiz.length} / ${AD.length} ` +
    `(${temiz.join(", ")})`);
  console.log(`en az bir statik sir tasiyan uygulama: ${AD.length - temiz.length} / ${AD.length}`);
  const G = K.reduce((t, [, s]) => t + SIR[s].dondurme, 0);
  const T = KALEM.reduce((t, [, s]) => t + SIR[s].dondurme, 0);
  console.log(`toplam acik pencere: ${Math.round(T / 2)} -> ${Math.round(G / 2)} kalem-gun ` +
    `(%${(100 - 100 * G / T).toFixed(0)} dusus); kalem basina ortalama ` +
    `${(T / KALEM.length / 2).toFixed(0)} -> ${(G / K.length / 2).toFixed(0)} gun`);
}
```

```
model: 31 (uygulama, sir) kalemi, 17 sir, 9 uygulama (kurgu uretim ortami)

alan           sir    kalkan   kalan   kalan sir           kalma gerekcesi
veri             5        10       0           0                         -
kuyruk           2         4       0           0                         -
altyapi          3         2       1           1   saglayici-desteklemiyor
imza             3         2       3           2        dogrulayan-tarafta
dis              4         2       7           3   saglayici-desteklemiyor
toplam          17        20      11           6                          

uygulama             kalem     kalan                      kalan sirlar
portal-onyuz             1         1                   oturum-imzalama
portal-api               6         2          oturum-imzalama,onbellek
abone-kayit              3         2   eposta-gecidi,kisa-mesaj-gecidi
fatura-servisi           5         2       odeme-gecidi,belge-imzalama
odeme-koprusu            1         1                      odeme-gecidi
saha-api                 4         0                               yok
is-emri                  4         0                               yok
bildirim                 3         2   eposta-gecidi,kisa-mesaj-gecidi
rapor-uretici            4         1                     eposta-gecidi

hic statik sir tasimayan uygulama: 2 / 9 (saha-api, is-emri)
en az bir statik sir tasiyan uygulama: 7 / 9
toplam acik pencere: 3123 -> 1228 kalem-gun (%61 dusus); kalem basina ortalama 101 -> 112 gun
```

Üst tablonun ilk iki satırı beklenen sonucu veriyor: veri tabanı ve kuyruk kalemlerinin tamamı,
on dört kalem, ortadan kalkıyor. Bunlar iç sistemlerdir ve iş yükünün kim olduğunu platformdan
öğrenip doğrudan yetkilendirebilirler. Sır yönetimi açısından bu kalemler artık yoktur — ne
saklanır, ne döndürülür, ne sızar.

İmza satırı ayrımı kuruyor. Üç imza sırrından biri, servisler arası çağrı imzası, kalkıyor;
çünkü o imza bir yetkilendirme kanıtıdır ve iş yükü kimliği aynı işi yapar. Diğer ikisi kalıyor:
oturum imzasını doğrulayan taraf ile belge imzasını doğrulayan taraf anahtarın **kendisine**
ihtiyaç duyar. Bu ayrım sık atlanır ve "iş yükü kimliği bütün anahtarları kaldırır" iddiasının
kırıldığı yerdir. İş yükü kimliği bir çağrıyı yetkilendirir; bir imzayı doğrulatmaz.

Dış satırı ise kalanın en büyük payıdır: dört dış geçitten yalnız harita servisi federasyonu
destekliyor, üçü sabit anahtar veriyor ve bu üç sır yedi kaleme yayılmış durumda. Önceki dersin
"kısaltılamayan sekiz sır" listesiyle kıyaslandığında tablo tutarlıdır — aynı sağlayıcı
kısıtları, aynı kalemlerde.

Alt tablo kararın kendisidir. Yirmi kalemin kalkması, dokuz uygulamanın yalnız **ikisini**
hiçbir statik sır taşımaz hâle getiriyor: saha uygulama arayüzü ve iş emri servisi. Diğer yedi
uygulama en az bir statik sır taşımaya devam ediyor ve çoğu yalnız bir ya da iki tane taşıyor.
Bu, ölçünün en önemli bulgusudur. **Kalem sayısı yüzde altmış beş azalırken, sır taşıyan uygulama
sayısı dokuzdan yediye iniyor.** Sır yönetimi işi, kalem sayısıyla değil, sır taşıyan uygulama
sayısıyla orantılıdır: her uygulamanın hâlâ bir sır dağıtım yolu, bir sahibi, bir döndürme
takvimi ve bir sızıntı yordamı olmak zorundadır. İki uygulamayı kurtarmak, o yedi yordamdan
hiçbirini ortadan kaldırmıyor.

Son satır aynı şeyi açık pencere cinsinden söylüyor. Toplam maruziyet üç bin yüz yirmi üç
kalem-günden bin iki yüz yirmi sekize, yüzde altmış bir aşağı iniyor. Ama kalem başına ortalama
pencere yüz bir günden yüz on iki güne **çıkıyor**: kalkan kalemler kısa döndürme periyoduna
sahip olan iç kalemlerdi, kalanlar ise üç yüz altmış beş günlük dış anahtarlardır. Kalanın
niteliği kötüleşiyor.

## Sırrın Yerine Ne Geçiyor

Kalkan yirmi kalem hiçliğe gitmiyor; her birinin yerine bir **güven ilişkisi** yazılıyor: hedef
sistemin hangi iş yükü kimliğini kabul edeceğini söyleyen bir bağlama kuralı.

```js
// baglama.mjs — sirrin yerini alan guven iliskisi: kac kural, kac cift, kac tek nokta
import { AD, OKUR, SIR, KALEM, kalan, gen } from "./kimlik.mjs";

const JETON = 15;                      // is yuku kimligi jetonunun omru (dk, kurgu)
export const GRUP = { portal: ["portal-onyuz", "portal-api", "abone-kayit"],
  fatura: ["fatura-servisi", "odeme-koprusu"], saha: ["saha-api", "is-emri"],
  arka: ["bildirim", "rapor-uretici"] };
const kimlikli = (a) => OKUR[a].filter((s) => SIR[s].kabul);

const yz = gen([10, 9, 8, 13, 12, 16]);
console.log(yz(["grup", "is yuku", "hedef", "grup kural", "grup cift", "is yuku kural"]));
let GK = 0, GC = 0, IK = 0;
for (const [g, uyeler] of Object.entries(GRUP)) {
  const hedef = [...new Set(uyeler.flatMap(kimlikli))];
  const iy = uyeler.reduce((t, a) => t + kimlikli(a).length, 0);
  GK += hedef.length; GC += uyeler.length * hedef.length; IK += iy;
  console.log(yz([g, uyeler.length, hedef.length, hedef.length,
    uyeler.length * hedef.length, iy]));
}
console.log(yz(["toplam", AD.length, "", GK, GC, IK]));
console.log(`\ngrup duzeyinde baglama: ${GK} kural, ${GC} (is yuku, hedef) cifti acik`);
console.log(`is yuku duzeyinde baglama: ${IK} kural, ${IK} cift acik; ` +
  `karsiliksiz cift ${GC - IK}`);
console.log(`her iki durumda da sizabilir deger tasiyan kural sayisi: 0 ` +
  `(kural bir yetki kaydidir, bir sir degil)`);

const yz2 = gen([16, 10, 13, 25]);
console.log(`\n${yz2(["uygulama", "kimlikli", "statik sir", "bagli oldugu tek nokta"])}`);
for (const a of AD) {
  const k = kimlikli(a).length, st = kalan(a).length;
  console.log(yz2([a, k, st, k && st ? "depo+kimlik" : k ? "kimlik" : "depo"]));
}
const D = AD.filter((a) => kalan(a).length > 0), K = AD.filter((a) => kimlikli(a).length > 0);
console.log(`\nsir deposuna bagli ${D.length}, kimlik saglayiciya bagli ${K.length}, ` +
  `ikisine birden ${AD.filter((a) => kalan(a).length && kimlikli(a).length).length}, ` +
  `hicbirine bagli olmayan ${AD.filter((a) => !kalan(a).length && !kimlikli(a).length).length}`);
const kalkan = KALEM.filter(([, s]) => SIR[s].kabul);
console.log(`kalkan ${kalkan.length} kalemin bugunku maruziyeti ` +
  `${kalkan.reduce((t, [, s]) => t + SIR[s].dondurme / 2, 0)} kalem-gun; yerine gecen jetonun ` +
  `omru ${JETON} dk, yani ${(kalkan.length * JETON / 2 / 1440).toFixed(2)} kalem-gun`);
console.log(`kimlik saglayici kesintisinde ${JETON} dk sonra duran uygulama: ${K.length} / ` +
  `${AD.length}; kesintiden hic etkilenmeyen uygulama: 0 / ${AD.length}`);
```

```
grup        is yuku   hedef   grup kural   grup cift   is yuku kural
portal            3       4            4          12               5
fatura            2       3            3           6               3
saha              2       5            5          10               8
arka              2       4            4           8               4
toplam            9                   16          36              20

grup duzeyinde baglama: 16 kural, 36 (is yuku, hedef) cifti acik
is yuku duzeyinde baglama: 20 kural, 20 cift acik; karsiliksiz cift 16
her iki durumda da sizabilir deger tasiyan kural sayisi: 0 (kural bir yetki kaydidir, bir sir degil)

uygulama          kimlikli   statik sir   bagli oldugu tek nokta
portal-onyuz             0            1                     depo
portal-api               4            2              depo+kimlik
abone-kayit              1            2              depo+kimlik
fatura-servisi           3            2              depo+kimlik
odeme-koprusu            0            1                     depo
saha-api                 4            0                   kimlik
is-emri                  4            0                   kimlik
bildirim                 1            2              depo+kimlik
rapor-uretici            3            1              depo+kimlik

sir deposuna bagli 7, kimlik saglayiciya bagli 7, ikisine birden 5, hicbirine bagli olmayan 0
kalkan 20 kalemin bugunku maruziyeti 1895 kalem-gun; yerine gecen jetonun omru 15 dk, yani 0.10 kalem-gun
kimlik saglayici kesintisinde 15 dk sonra duran uygulama: 7 / 9; kesintiden hic etkilenmeyen uygulama: 0 / 9
```

Üst tablo bu konunun ilk dersindeki bulguyu aynen tekrar ediyor, yalnız nesne değişmiş. Bağlama
kuralı iş yükü grubuna yazıldığında on altı kural yetiyor ama otuz altı `(iş yükü, hedef)` çifti
açılıyor; iş yükü başına yazıldığında yirmi kural gerekiyor ve tam yirmi çift açılıyor.
Karşılıksız on altı çift, ilk dersteki kırk sekiz karşılıksız kalemin aynı biçimidir: **geniş
yazılan kural az satır, çok erişim demektir.** İş yükü kimliğine geçmek bu sorunu çözmüyor;
sorunu sır yolu önekinden iş yükü grubuna taşıyor.

Üçüncü satır ise farkın nerede olduğunu söylüyor. Bağlama kuralının sayısı yirmide kalsa bile
kural **sızabilir bir değer taşımıyor**. Kalkan yirmi kalemin bugünkü maruziyeti bin sekiz yüz
doksan beş kalem-gündü; yerine geçen jetonun ömrü on beş dakika, yani sıfır virgül bir kalem-gün.
Kazanç kalem sayısında değil, kalemin niteliğindedir: bir yetki kaydı çalınabilir bir şey
değildir, çünkü kopyalandığında hiçbir işe yaramaz — kimliği taşıyan iş yükünün kendisi
gerekir.

Alt tablo bedeli veriyor ve bedel tanıdıktır. İlk ders merkezî sır deposunun dokuz uygulamaya
ortak bir başlatma bağımlılığı yazdığını ölçmüştü. İş yükü kimliği bu bağımlılığı kaldırmıyor,
**ikinciye çıkarıyor**: yedi uygulama hâlâ sır deposuna, yedi uygulama kimlik sağlayıcıya, beşi
ikisine birden bağlı. Hiçbirine bağlı olmayan uygulama sayısı sıfır. Saha uygulama arayüzü ve iş
emri servisi sır deposundan tamamen kurtuldular, ama kimlik sağlayıcı on beş dakika erişilemez
olduğunda ikisi de duruyor. Bağımlılığın adı değişti, sayısı değişmedi.

## Bu Karar Nereye Ait

Yirmi kalemin ortadan kalkması çalışma zamanında olan bir şey değildir. Hiçbir çalışma zamanı
savunması bir sırrı yakalamadı, durdurmadı ya da işaretlemedi; kalemler yok oldular çünkü
**dağıtım artık onları üretmiyor.** Bu, bu kursta ölçülen en ucuz kalem sınıfıdır: bir kalemi
yakalamak yerine hiç doğurmamak.

Bunun karşılığında yapılan iş de dağıtım aşamasındadır. Yirmi bağlama kuralı, hedef sistemlerin
yapılandırmasına yazılır ve iş yükü tanımına bağlanır; yazıldıktan sonra çalışma zamanında
izlenecek bir şey kalmaz. Çalışma zamanına düşen tek ölçüm, ilk derste yazılanın aynısıdır:
bağlama kurallarının açtığı çift kümesiyle gerçekten yapılan çağrıların karşılaştırılması. Otuz
altı çift açılıp yirmisi kullanılıyorsa, on altı çift karşılıksızdır ve bu ancak çağrı kaydından
görülür.

Kalan on bir kalem ise hiçbir aşamada kapatılamıyor. Üç dış sağlayıcı federasyonu
desteklemiyor, iki imza anahtarı doğrulayan tarafta duruyor, önbellek sunucusu kimlik kabul
etmiyor. Bu kalemlerin tamamı önceki iki dersin yordamlarına — döndürme takvimine, örtüşme
penceresine — geri düşüyor ve sonraki dersin konusu olan sızıntı akışına.

## Özet

- İş yükü kimliği 31 kalemin 20'sini ortadan kaldırıyor, 11'i kalıyor. Kalanlar altı sırda
  toplanıyor: iki imza anahtarı, üç dış geçit anahtarı ve önbellek sunucusu.
- Ayrım gerekçelidir. Servisler arası çağrı imzası bir yetkilendirmedir ve kalkar; oturum ve
  belge imzası doğrulayan tarafta anahtarın kendisini gerektirir ve kalır. Dört dış geçitten
  yalnız biri federasyonu destekliyor.
- Kalem sayısı %65 azalırken sır taşıyan uygulama sayısı 9'dan 7'ye iniyor. Sır yönetimi işi
  kalem sayısıyla değil, sır taşıyan uygulama sayısıyla orantılıdır; yedi uygulamanın yordamı
  yerinde duruyor.
- Toplam açık pencere maruziyeti 3.123 kalem-günden 1.228'e (%61) iniyor, ama kalem başına
  ortalama pencere 101 günden 112 güne çıkıyor: kalkanlar iç kalemlerdi, kalanlar dış
  anahtarlardır.
- Sırrın yerine geçen bağlama kuralı sayıyı düşürmüyor, niteliği değiştiriyor: 1.895 kalem-günlük
  maruziyet 0,1 kalem-güne iniyor. Ama kural grup düzeyinde yazıldığında 16 satırla 36 çift
  açılıyor; iş yükü düzeyinde 20 satırla 20 çift. Karşılıksız 16 çift, ilk dersteki 48
  karşılıksız kalemin aynı biçimidir.
- Bağımlılık kalkmıyor, ikiye çıkıyor: 7 uygulama sır deposuna, 7 uygulama kimlik sağlayıcıya,
  5'i ikisine birden bağlı; hiçbirine bağlı olmayan uygulama sıfır.

## Sonraki Adım

Bu ders sırların çoğunu ortadan kaldırdı, önceki iki ders kalanların ömrünü kısalttı ve döndürme
yordamını yazdı. Üçü de aynı soruyu yanıtsız bıraktı: **bir sır sızdığında ne oluyor.** Açık
pencere sırrın kendiliğinden geçersizleşme süresiydi; sızıntı fark edilip iptal edildiğinde
pencere daha erken kapanır. Ama fark etmek zaman alır, sahibini bulmak zaman alır, yenisini
üretmek zaman alır ve yeni değerin yayılması bir önceki dersin ölçtüğü örtüşme kadar sürer.
Sonraki ders bu akışı kalan altı sır üzerinde koşturur: sızıntı anından iptale kaç dakika
geçiyor, o dakikalarda sırdan kaç çağrı geçiyor, hangi aşamayı kısaltmak ne kazandırıyor ve
yayılmayı beklemeden iptal etmek kaç meşru isteği kesiyor.
