---
title: 'Üçüncü Taraf Riski'
source: 'https://academia.sh/tr/kurslar/yonetisim-risk-uyumluluk/ucuncu-taraf-riski'
course: 'Yönetişim, Risk ve Uyumluluk'
language: tr
updated: '2026-08-17T18:08:36+00:00'
license: 'CC BY-SA 4.0'
---

# Üçüncü Taraf Riski

Üç tedarikçide sözleşmede yazan 16 kontrolün 3'ü ankette hiç sorulmuyor, 6'sı yanıtlanıp kanıtlanmıyor ve yalnız 7'si kanıtla doğrulanıyor: devredilmiş görünüp doğrulanamayan 9 kontrol 555,10 kurgu birim taşır, bu tedarikçi riskinin yüzde 25,4'üdür, beyan yerine kanıtla sıralanan 62 kalemlik program listesinde 51 kalemin sırası değişir ve ilk ondaki tedarikçi kalemi birden üçe çıkar.

Önceki ders keşif kaynaklarını ölçtü ve hepsi aynı şeyi varsayıyordu: aranan varlık kurumun kendi
ağında, kendi kimlik düzeninde ya da kendi faturasında bir iz bırakır. Tedarikçinin kendi
sistemindeki bir sunucu bu izlerin hiçbirini bırakmaz. Ağ taraması oraya ulaşmaz, uç ajanı orada
çalışmaz, yapılandırma deposu orayı tanımaz.

O varlıkların yerine kurumda duran şey iki kağıttır: bir **sözleşme maddesi** ve bir **değerlendirme
anketi**. Bulut Temelleri kursunda kurulan paylaşılan sorumluluk ayrımı burada bir adım öteye gider —
orada sorumluluğun kimde olduğu sorulmuştu, burada sorulan şey o sorumluluğun **yerine getirildiğinin
nasıl bilindiğidir**. Bu ders üç tedarikçilik bir kümede onu ölçer.

## Üç Küme, Üç Ayrı Sayı

Bir tedarikçi kontrolü üç ayrı kümede bulunabilir ve üçü aynı şey değildir. **Sözleşmede yazan**
kontrol bir yükümlülüktür; taraflardan biri onu yapmayı kabul etmiştir. **Ankette yanıtlanan**
kontrol bir beyandır; tedarikçi onu yaptığını söylemiştir. **Kanıtla doğrulanan** kontrol bir
gözlemdir; kurum onun işlediğini gösteren bir çıktı görmüştür.

Üç kümenin iç içe olması beklenir: kanıtlanan kümesi anketin, anket kümesi sözleşmenin alt
kümesidir. Aradaki iki fark ayrı ayrı sayılır, çünkü ayrı sorunlardır. Sözleşmede yazıp ankette hiç
sorulmayan kontrol bir **kapsam boşluğudur**: taahhüt alınmış, hiç bakılmamıştır. Yanıtlanıp
kanıtlanmayan kontrol bir **kanıt boşluğudur**: bakılmış, cevap alınmış, cevabın doğruluğu
gösterilmemiştir.

- **RY23.** Yedi tehdit ve katsayıları önceki derslerle aynıdır; birim **kurgu birim**dir.
- **RY24.** Sekiz kontrol, düşürdükleri oran, dokundukları tehditler ve doğrulama bedelleri
  modeldir; gerçek bir sözleşme ya da denetim yoktur.
- **RY25.** Kurum varlıkları önceki derslerin on varlıklık kümesidir.
- **RY26.** Üç tedarikçi ve üç maske modeldir; kanıt kümesi anketin, anket kümesi sözleşmenin alt
  kümesi olarak yazılmıştır.
- **RY27.** Kontroller bağımsız uygulanır: bir kalemin kalan riski, o tehdide dokunan kontrollerin
  çarpımıyla düşer.
- **RY28.** Doğrulama riski düşürmez, **ölçümü kesinleştirir**; doğrulanan kontrol kanıt kümesine
  girer ve ölçülen kalan risk buna göre yeniden hesaplanır.

```js
// risk/tedarikci.mjs — uc tedarikci, sekiz sozlesme kontrolu ve uc ayri kanit duzeyi. MODELDIR;
// gercek bir sozlesme, gercek bir denetim ve gercek para birimi yok, birim "kurgu birim"dir.

// RY23: tehdit satiri: ad | yillik taban siklik | maruziyet orani
export const TEHDIT = `
  kimlik-ele-gecirme   0.30  0.35
  zararli-kod          0.50  0.25
  yanlis-yapilandirma  0.80  0.15
  ic-kotuye-kullanim   0.10  0.40
  hizmet-kesintisi     0.40  0.20
  fiziksel-erisim      0.06  0.50
  tedarik-zinciri      0.08  0.45`
  .trim().split("\n").map((r) => { const [ad, s, m] = r.trim().split(/\s+/);
    return { ad, s: +s, m: +m }; });

// RY24: kontrol satiri: ad | dusurdugu oran | etkiledigi tehdit maskesi |
// kanit isteme bedeli | yerinde dogrulama bedeli
export const KONTROL = `
  erisim-kaydi-tutma          0.10  1001100   6  22
  cok-etmenli-dogrulama       0.35  1000000   4  18
  yama-suresi-taahhudu        0.30  0110000   9  26
  veri-sifreleme              0.25  1000010   7  24
  alt-yuklenici-bildirimi     0.15  0000001   5  30
  olay-bildirim-suresi        0.12  1111111   8  20
  yedek-ve-kurtarma-testi     0.28  0000100  11  28
  personel-guvenlik-taramasi  0.20  0001001   6  34`
  .trim().split("\n").map((r) => { const [ad, d, tm, kb, yb] = r.trim().split(/\s+/);
    return { ad, d: +d, tm, kb: +kb, yb: +yb }; });

// RY25: kurum varligi: ad | deger | maruziyet | tehdit maskesi
export const VARLIK = `
  saha-dizustu           900  1.6  1111011
  sube-ucu               600  1.2  1111110
  sayac-toplayici        750  1.4  0111110
  islem-sunucusu        1800  0.6  1111101
  cevre-agi             1200  1.8  0011100
  kimlik-dizini         2400  1.0  1011100
  bulut-hesabi          2000  1.5  1011100
  abone-veri-tabani     3000  0.4  1011100
  saha-uygulamasi       1400  1.1  1111001
  tedarikci-baglantisi  1000  1.3  1001101`
  .trim().split("\n").map((r) => { const [ad, v, m, maske] = r.trim().split(/\s+/);
    return { ad, v: +v, m: +m, maske, tedarikci: false }; });

// RY26: tedarikci satiri: ad | deger | maruziyet | tehdit maskesi | sozlesmede yazan kontrol |
// ankette yanitlanan kontrol | kanitla dogrulanan kontrol (KONTROL sirasinda sekiz hane)
export const TEDARIKCI = `
  sayac-bakim-firmasi   1400  1.5  1101101  11101100  11101000  10001000
  bulut-barindirma      2600  1.3  1011101  11111110  11011110  11010010
  saha-isgucu-firmasi    900  1.7  1101011  10100101  10100001  00100000`
  .trim().split("\n").map((r) => {
    const [ad, v, m, maske, soz, ank, kan] = r.trim().split(/\s+/);
    return { ad, v: +v, m: +m, maske, soz, ank, kan, tedarikci: true };
  });

// RY27: bir kalemin kalan riski, o tehdide dokunan kontrollerin bagimsiz uygulanmasiyla duser.
export const TUM = [...VARLIK, ...TEDARIKCI].flatMap((v) => TEHDIT
  .map((t, j) => ({ v, t, j }))
  .filter(({ j }) => v.maske[j] === "1")
  .map(({ t, j }) => ({ v, t, j, ham: +(t.s * v.m * v.v * t.m).toFixed(2) })));

// duzey: 'soz' beyan edilen, 'ank' ankette yanitlanan, 'kan' kanitla dogrulanan kontrol kumesi.
export const kalan = (k, duzey) => {
  if (!k.v.tedarikci) return k.ham;
  const p = KONTROL.reduce((a, c, i) => (k.v[duzey][i] === "1" && c.tm[k.j] === "1"
    ? a * (1 - c.d) : a), 1);
  return +(k.ham * p).toFixed(2);
};
export const sirala = (duzey) => TUM.map((k, i) => ({ k, i }))
  .sort((a, b) => kalan(b.k, duzey) - kalan(a.k, duzey) || a.i - b.i).map((x) => x.k);
export const top = (L, duzey) => +L.reduce((a, k) => a + kalan(k, duzey), 0).toFixed(2);
export const yer = (L, k) => L.indexOf(k) + 1;
```

## Üç Kanıt Düzeyinin Sayımı

```js
// risk/dogrula.mjs — sozlesmede yazan, ankette yanitlanan ve kanitla dogrulanan kontrol sayilir
import { TUM, TEDARIKCI, KONTROL, kalan, sirala, top, yer } from "./tedarikci.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 = (m) => [...m].filter((c) => c === "1").length;
const TED = TUM.filter((k) => k.v.tedarikci);
const S = { soz: sirala("soz"), ank: sirala("ank"), kan: sirala("kan") };

console.log(`${TUM.length} kalem; ${TED.length} tanesi ${TEDARIKCI.length} tedarikcide. ` +
  `Kontrol kumesi ${KONTROL.length} kalem, kurgu birim.`);

const A = [-21, 7, 7, 7, 12, 12, 12];
console.log("\n1. tedarikci basina kontrol ve kalan risk");
y(A, "tedarikci", "sozles", "anket", "kanit", "beyanla", "anketle", "kanitla");
for (const v of TEDARIKCI) {
  const ks = TED.filter((k) => k.v === v);
  y(A, v.ad, say(v.soz), say(v.ank), say(v.kan), top(ks, "soz").toFixed(2),
    top(ks, "ank").toFixed(2), top(ks, "kan").toFixed(2));
}
const t3 = (d) => top(TED, d);
y(A, "toplam", TEDARIKCI.reduce((a, v) => a + say(v.soz), 0),
  TEDARIKCI.reduce((a, v) => a + say(v.ank), 0), TEDARIKCI.reduce((a, v) => a + say(v.kan), 0),
  t3("soz").toFixed(2), t3("ank").toFixed(2), t3("kan").toFixed(2));

const B = [-40, 8];
console.log("\n2. devredilen ama olculemeyen kalem");
const sozT = TEDARIKCI.reduce((a, v) => a + say(v.soz), 0);
const ankT = TEDARIKCI.reduce((a, v) => a + say(v.ank), 0);
const kanT = TEDARIKCI.reduce((a, v) => a + say(v.kan), 0);
y(B, "sozlesmede yazan kontrol", sozT);
y(B, "ankette hic sorulmayan", sozT - ankT);
y(B, "yanitlanmis ama kanitsiz", ankT - kanT);
y(B, "kanitla dogrulanan", kanT);
y(B, "devredilmis gorunup dogrulanamayan", sozT - kanT);
y(B, "beyan ile kanit arasindaki risk", (t3("kan") - t3("soz")).toFixed(2));
y(B, "kanitsizligin tasidigi pay %",
  (((t3("kan") - t3("soz")) / t3("kan")) * 100).toFixed(1));

const C = [-40, 8];
console.log("\n3. ayni program listesinde siralama");
const kayma = TUM.map((k) => Math.abs(yer(S.soz, k) - yer(S.kan, k)));
y(C, "sirasi degisen kalem", kayma.filter((x) => x > 0).length);
y(C, "en buyuk sira kaymasi", Math.max(...kayma));
y(C, "ilk onda tedarikci kalemi (beyan)", S.soz.slice(0, 10).filter((k) => k.v.tedarikci).length);
y(C, "ilk onda tedarikci kalemi (kanit)", S.kan.slice(0, 10).filter((k) => k.v.tedarikci).length);
y(C, "program toplami beyan / kanit",
  `${top(TUM, "soz").toFixed(2)} / ${top(TUM, "kan").toFixed(2)}`);

const D = [-21, -20, 9, 9, 7, 7];
console.log("\n4. en cok yukselen bes kalem (beyandan kanita)");
for (const k of [...TUM].sort((a, b) => (yer(S.soz, b) - yer(S.kan, b))
  - (yer(S.soz, a) - yer(S.kan, a))).slice(0, 5))
  y(D, k.v.ad, k.t.ad, kalan(k, "soz").toFixed(2), kalan(k, "kan").toFixed(2),
    yer(S.soz, k), yer(S.kan, k));

const E = [-24, 8, 9, 10, 9];
console.log("\n5. dogrulamanin kapattigi belirsizlik (risk dusmez, olcum kesinlesir)");
y(E, "secenek", "bedel", "kontrol", "kapanan", "oran");
const kanitsiz = TEDARIKCI.flatMap((v) => KONTROL
  .map((c, i) => ({ v, c, i })).filter(({ v: t, i }) => t.soz[i] === "1" && t.kan[i] !== "1"));
const ankSadece = kanitsiz.filter(({ v, i }) => v.ank[i] === "1");
// Grup dogrulanirsa o kontroller kanit kumesine girer; olculen kalan risk yeniden hesaplanir.
const olcum = (grup) => {
  const eski = TEDARIKCI.map((v) => v.kan);
  TEDARIKCI.forEach((v) => { v.kan = [...v.kan].map((c, i) =>
    (grup.some((g) => g.v === v && g.i === i) ? "1" : c)).join(""); });
  const r = top(TED, "kan");
  TEDARIKCI.forEach((v, n) => { v.kan = eski[n]; });
  return r;
};
const taban = t3("kan");
for (const [ad, grup, bedel] of [["anketi yenilemek", [], 12],
  ["kanit istemek", ankSadece, ankSadece.reduce((a, g) => a + g.c.kb, 0)],
  ["yerinde dogrulamak", kanitsiz, kanitsiz.reduce((a, g) => a + g.c.yb, 0)]]) {
  const kap = +(taban - olcum(grup)).toFixed(2);
  y(E, ad, bedel, grup.length, kap.toFixed(2), (kap / bedel).toFixed(3));
}
```

```
62 kalem; 15 tanesi 3 tedarikcide. Kontrol kumesi 8 kalem, kurgu birim.

1. tedarikci basina kontrol ve kalan risk
tedarikci             sozles  anket  kanit     beyanla     anketle     kanitla
sayac-bakim-firmasi        5      4      2      531.35      603.80      752.01
bulut-barindirma           7      6      4      739.17      846.25      979.89
saha-isgucu-firmasi        4      3      1      362.99      412.49      456.71
toplam                    16     13      7     1633.51     1862.54     2188.61

2. devredilen ama olculemeyen kalem
sozlesmede yazan kontrol                      16
ankette hic sorulmayan                         3
yanitlanmis ama kanitsiz                       6
kanitla dogrulanan                             7
devredilmis gorunup dogrulanamayan             9
beyan ile kanit arasindaki risk           555.10
kanitsizligin tasidigi pay %                25.4

3. ayni program listesinde siralama
sirasi degisen kalem                          51
en buyuk sira kaymasi                         21
ilk onda tedarikci kalemi (beyan)              1
ilk onda tedarikci kalemi (kanit)              3
program toplami beyan / kanit           7402.12 / 7957.22

4. en cok yukselen bes kalem (beyandan kanita)
sayac-bakim-firmasi  kimlik-ele-gecirme     113.51   198.45     30      9
saha-isgucu-firmasi  ic-kotuye-kullanim      38.78    61.20     58     46
sayac-bakim-firmasi  zararli-kod            161.70   262.50     15      5
saha-isgucu-firmasi  tedarik-zinciri         38.78    55.08     59     50
saha-isgucu-firmasi  kimlik-ele-gecirme     127.23   160.65     25     18

5. dogrulamanin kapattigi belirsizlik (risk dusmez, olcum kesinlesir)
secenek                    bedel  kontrol   kapanan     oran
anketi yenilemek              12        0      0.00    0.000
kanit istemek                 38        6    326.07    8.581
yerinde dogrulamak           216        9    555.10    2.570
```

Sayılar **ölçüm** sınıfındadır; girdileri RY23–RY28'dir.

## Üç Kümenin Arası

Birinci tablo üç sayıyı yan yana koyuyor: üç tedarikçide sözleşmede **16**, ankette **13**,
kanıtta **7** kontrol vardır. Aradaki daralma tek biçimde değildir. Sayaç bakım firmasında beş
kontrolden ikisi kanıtlanır, bulut barındırmada yediden dördü, saha işgücü firmasında dörtten
biri. En çok kontrol taahhüt eden tedarikçi en çok kanıtı da verir, ama oran her üçünde de yarının
altındadır.

İkinci tablo daralmayı ikiye ayırıyor. **3 kontrol ankette hiç sorulmuyor** — sözleşmede yazılı,
değerlendirme sorularının kapsamı dışında kalmış. **6 kontrol yanıtlanmış ama kanıtsız** —
sorulmuş, tedarikçi "evet" demiş, o "evet"i gösteren hiçbir çıktı istenmemiş. Toplamda
**devredilmiş görünüp doğrulanamayan 9 kontrol** vardır ve bu, sözleşmede yazanların yarısından
fazlasıdır.

## Doğrulanamayanın Taşıdığı Sayı

Kontrol sayısı tek başına bir büyüklük vermez; ikinci tablonun son iki satırı onu birime çeviriyor.
Bütün sözleşme kontrollerinin işlediği varsayılırsa tedarikçi kalemlerinin kalan riski 1.633,51
kurgu birimdir. Yalnız kanıtlananların işlediği kabul edilirse **2.188,61 birim**. Aradaki
**555,10 birim**, tedarikçi riskinin **yüzde 25,4'ü**, doğrulanamayan dokuz kontrolün taşıdığı
paydır.

Bu sayı bir kayıp değil, bir **belirsizliktir** ve iki yönde de açılabilir. Kontroller gerçekten
işliyorsa gerçek risk 1.633,51 birime yakındır ve kurum kendi listesini gereğinden yüksek yazıyor
demektir. İşlemiyorsa gerçek risk 2.188,61 birime yakındır ve kurum bir bölümünü devrettiğini
sanarak taşımaktadır. Ölçüm iki durumu ayırt edemez, çünkü ikisini ayıracak veri hiç toplanmamıştır.

Anket sütunu da bu yüzden ayrı durur: 1.862,54 birim, ikisinin ortasında. Bir beyanı kanıt yerine
saymak riski 326,07 birim düşürmez; yalnız tabloyu daha rahat okunur yapar.

## Beyanla Sıralamak, Kanıtla Sıralamak

Üçüncü tablo bu kursun ana ölçüsüne dönüyor. Aynı 62 kalemlik program listesi beyanla
sıralandığında ve kanıtla sıralandığında **51 kalemin yeri değişir**, en büyük kayma **21
basamaktır**. İlk onda tedarikçi kalemi beyanla **1**, kanıtla **3** tanedir.

Dördüncü tablo hangi kalemlerin yükseldiğini gösteriyor. Sayaç bakım firmasındaki kimlik ele
geçirme kalemi beyan sıralamasında **otuzuncu**, kanıt sıralamasında **dokuzuncu**dur; sayısı
113,51'den 198,45 birime çıkar. Aynı firmadaki zararlı kod kalemi on beşincilikten beşinciliğe
yükselir. İkisinin ortak yanı, düşüşü sağlayan kontrollerin ankette yanıtlanmış ama kanıtlanmamış
olmasıdır.

Sonuç bu kursun kuralının tedarikçi tarafındaki karşılığıdır. Öncelik listesi kimin ne taahhüt
ettiğine göre değil, neyin gösterildiğine göre kurulduğunda **ilk on değişir** — yani bütçenin
gittiği yer değişir. Beyanla çalışan bir program tedarikçi kalemlerini listenin ortasına yazar ve
bütçesini kendi uçlarına harcar; bu, sıralamanın yanlış kalemi öne aldığı üçüncü durumdur ve
sebebi ne ölçek ne düzeydir, **veri kaynağıdır**.

## Doğrulamanın Birim Bedeli

Beşinci tablo doğrulamayı kursun ölçü birimiyle sınıyor; burada ölçülen şey düşen risk değil,
**kapanan belirsizliktir**. Anketi yenilemek 12 birime mal olur ve **sıfır** kontrol doğrular:
aynı soruyu ikinci kez sormak yeni bir gözlem üretmez. Kanıt istemek 38 birime **altı** kontrolü
kapatır ve 326,07 birimlik belirsizliği kaldırır; oranı **8,581**. Yerinde doğrulama 216 birime
**dokuz** kontrolü, yani belirsizliğin tamamını kapatır, ama oranı **2,570**'e iner.

İki satır arasındaki fark yönetim kararının kendisidir. Kanıt istemek belirsizliğin yüzde
58,7'sini bedelin altıda biriyle kapatır; yerinde doğrulama kalan üç kontrol için 178 birim daha
ister. Kalan üç kontrol tam olarak **ankette hiç sorulmayanlardır** ve onları kapatmanın tek yolu
yerinde bakmaktır — çünkü tedarikçi o konuda hiçbir şey beyan etmemiştir, çürütülecek bir cevap
bile yoktur.

## Özet

- Bir tedarikçi kontrolü üç ayrı kümede bulunabilir: sözleşmede yazan bir yükümlülük, ankette
  yanıtlanan bir beyan, kanıtla doğrulanan bir gözlemdir. Üç tedarikçide sayılar 16, 13 ve 7'dir.
- Daralma iki ayrı boşluktan gelir: 3 kontrol ankette hiç sorulmaz (kapsam boşluğu), 6 kontrol
  yanıtlanıp kanıtlanmaz (kanıt boşluğu). Devredilmiş görünüp doğrulanamayan toplam 9 kontroldür.
- Doğrulanamayan dokuz kontrol 555,10 kurgu birim taşır, tedarikçi riskinin yüzde 25,4'ü. Bu bir
  kayıp değil belirsizliktir ve iki yönde de açılabilir; ölçüm ikisini ayırt edemez.
- Aynı 62 kalemlik liste beyanla ve kanıtla sıralandığında 51 kalemin yeri değişir, en büyük kayma
  21 basamaktır ve ilk ondaki tedarikçi kalemi birden üçe çıkar.
- Bir kalem otuzuncu sıradan dokuzuncu sıraya yükselir; düşüşü sağlayan kontroller ankette
  yanıtlanmış ama kanıtlanmamıştır. Sıralamayı değiştiren şey ölçek ya da düzey değil, veri
  kaynağıdır.
- Anketi yenilemek 12 birime sıfır kontrol doğrular; kanıt istemek 38 birime altı kontrolü ve
  belirsizliğin yüzde 58,7'sini kapatır (oran 8,581); yerinde doğrulama 216 birime tamamını kapatır
  (oran 2,570).

## Sonraki Adım

Beş ders boyunca tek bir liste kuruldu, iki ölçekle sıralandı, dört seçenekle yarıştırıldı,
envanter dışı kalemlerle tamamlandı ve son olarak kanıt düzeyine göre yeniden dizildi. Elde
sayılabilir bir öncelik listesi, birim çabaya düşen risk azalması ve her kararın bedeli var.
Eksik olan tek şey, bütün bunları **dışarıdan bakan birine** anlatabilecek bir dildir.

Bu dersin kendisi bunu gösteriyor. Kurum üç tedarikçisinden kanıt istedi ve neyin kanıt sayılacağını
kendi tanımladı: sekiz kontrol, üç maske, bir bedel listesi. Aynı soru kuruma da soruluyor — abone
kimin? bir denetçi kimin? — ve kurumun elinde onlara verecek ortak bir sözlük yok. Kendi
sıralamasının doğru olduğunu kanıtlamaya çalışan her kurum önce kendi kontrol adlarını, kendi
olgunluk basamaklarını ve kendi kanıt biçimini uydurur; sonuç, hiçbir iki kurumun aynı şeyi
söylemediği bir tablodur. Sonraki konu **Çerçeveler ve Uyumluluk** bu ortak dili ele alır: kontrol
kümeleri nasıl yapılandırılır, bir gereksinim hangi kontrolle karşılanır ve o karşılamanın kanıtı
kaç kalem üretmeyi gerektirir.
