Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-21.S04

Audit evidence, detection ve incident scope

HTTP status, business audit, correlation ve incident kapsamını Tea note event zincirinde ayır.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Beklenen deny

  1. Audit source seçildi

    Application, Atlas/op-demo/tea için sabit event nesnelerini bilir. Audit writer henüz allowlist JSON lines üretmedi, correlation hesaplanmadı; tüm adımlar yerel kayıt işlemleridir.

    Application
    Sabit event source
    Audit writer
    Henüz output yok
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  2. Allowlist output oluşur

    Structured serializer yalnız schema alanlarını kopyalar; fake session ve note body dışarıda kalır.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  3. Tuple ilişkisi hesapla

    Tenant, operation ve object birlikte karşılaştırılır; Nova reused request alias Atlas’a bağlanmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    expected-denial
    Reviewer
    Scope bilinmiyor
  4. Evidence kapsamı yazılır

    Eksik kayıt unknown kalır; bilinen tea operation dışındaki object/tenant sonuçları uydurulmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    expected-denial
    Reviewer
    tea / Atlas; diğerleri unknown
  5. Review checkpoint ayrımı

    Yeni state validation geçmiş audit’i değiştirmez; bu fixture production recovery başlatmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    expected-denial
    Reviewer
    Sınırlı checkpoint doğrulandı

Event çelişkisi

  1. Audit source seçildi

    Application, Atlas/op-demo/tea için sabit event nesnelerini bilir. Audit writer henüz allowlist JSON lines üretmedi, correlation hesaplanmadı; tüm adımlar yerel kayıt işlemleridir.

    Application
    Sabit event source
    Audit writer
    Henüz output yok
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  2. Allowlist output oluşur

    Structured serializer yalnız schema alanlarını kopyalar; fake session ve note body dışarıda kalır.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  3. Tuple ilişkisi hesapla

    Tenant, operation ve object birlikte karşılaştırılır; Nova reused request alias Atlas’a bağlanmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    review-required
    Reviewer
    Scope bilinmiyor
  4. Evidence kapsamı yazılır

    Eksik kayıt unknown kalır; bilinen tea operation dışındaki object/tenant sonuçları uydurulmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    review-required
    Reviewer
    tea / Atlas; diğerleri unknown
  5. Review checkpoint ayrımı

    Yeni state validation geçmiş audit’i değiştirmez; bu fixture production recovery başlatmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    review-required
    Reviewer
    Review-required

Kayıt eksik

  1. Audit source seçildi

    Application, Atlas/op-demo/tea için sabit event nesnelerini bilir. Audit writer henüz allowlist JSON lines üretmedi, correlation hesaplanmadı; tüm adımlar yerel kayıt işlemleridir.

    Application
    Sabit event source
    Audit writer
    Henüz output yok
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  2. Allowlist output oluşur

    Structured serializer yalnız schema alanlarını kopyalar; fake session ve note body dışarıda kalır.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  3. Tuple ilişkisi hesapla

    Tenant, operation ve object birlikte karşılaştırılır; Nova reused request alias Atlas’a bağlanmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    unknown
    Reviewer
    Scope bilinmiyor
  4. Evidence kapsamı yazılır

    Eksik kayıt unknown kalır; bilinen tea operation dışındaki object/tenant sonuçları uydurulmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    unknown
    Reviewer
    tea / Atlas; diğerleri unknown

Clock belirsiz

  1. Audit source seçildi

    Application, Atlas/op-demo/tea için sabit event nesnelerini bilir. Audit writer henüz allowlist JSON lines üretmedi, correlation hesaplanmadı; tüm adımlar yerel kayıt işlemleridir.

    Application
    Sabit event source
    Audit writer
    Henüz output yok
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  2. Allowlist output oluşur

    Structured serializer yalnız schema alanlarını kopyalar; fake session ve note body dışarıda kalır.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Henüz ilişki yok
    Reviewer
    Scope bilinmiyor
  3. Tuple ilişkisi hesapla

    Tenant, operation ve object birlikte karşılaştırılır; Nova reused request alias Atlas’a bağlanmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Clock order unknown
    Reviewer
    Scope bilinmiyor
  4. Evidence kapsamı yazılır

    Eksik kayıt unknown kalır; bilinen tea operation dışındaki object/tenant sonuçları uydurulmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Clock order unknown
    Reviewer
    tea / Atlas; diğerleri unknown
  5. Review checkpoint ayrımı

    Yeni state validation geçmiş audit’i değiştirmez; bu fixture production recovery başlatmaz.

    Application
    Sabit event source
    Audit writer
    Seçilmiş JSON lines
    Correlation
    Clock order unknown
    Reviewer
    Sınırlı checkpoint doğrulandı

ROLLER · STATE · VERİ AKIŞI

HTTP kaydı ile iş kararı

Tea note için HTTP access kaydı bir request’in server tarafından görüldüğünü ve response status’unu anlatır. Business audit ise actor Duru, action rename-note, object tea, tenant Atlas, decision deny ve reason owner-policy bilgisini taşır. Bu iki olayın amacı farklıdır. Public açıklama yanıtı 200 olabilirken rename-note kararı deny kalabilir; status tek başına işin commit edildiğini söylemez. Uygulamanın policy kararına yakın ürettiği event, dış request header’ından türetilmiş actor etiketiyle aynı güven düzeyinde değildir.

operationAlias op-demo ve requestAlias req-demo korelasyon etiketidir; credential, principal veya izin değildir. Session correlation için gerçek session identifier yerine inert grup alias’ı kullanılır. User ve tenant bağı application context’inden gelir; jobAlias sonraki worker işlemini aynı operation ile ilişkilendirir. Bir request birden çok business action, bir async action da birden çok job attempt üretebilir. eventId, parentEventId, action/object ve producer ilişkisini açık yazmak bütün kayıtları tek request string’iyle join etmekten daha açıklayıcıdır.

Baseline, eksiklik ve incident sınırı

Sınırlı comparator tenant, operationAlias ve object tuple’ı içinde deny ile committed=true çelişkisini arar. Normal deny/committed=false kaydı 0, hazırlanmış sentetik çelişki 1 sonuç verir. Bu gerçek policy ihlali observation’ı değil, incelenecek kayıt tutarsızlığıdır. Nova aynı req-demo alias’ını kullansa da Atlas satırına join edilmez. Eksik commit alanı false diye doldurulmaz; unknown kalır. Aynı tuple’daki bütün kayıtlar değerlendirilir. Kayıt sırası sonucu değiştirmemeli, tamamen aynı event’in tekrarı yeni outcome sayılmamalıdır. Çelişen complete kayıtlar ambiguous, incomplete evidence unknown olarak tutulur. Bu sınıflar otomatik incident verdict değildir.

Wall-clock sıralaması farklı producer’lar arasında causal order vermez. Artifact’te app clock 10:00:02, worker clock 09:59:59 olabilir; explicit parentEventId ilişkisi ve aynı producer sequence daha dar bir sıralama kanıtıdır. Incident kapsamı da buna göre yazılır: bu ledger’da tea ve seçilmiş operation bilinir, diğer object/tenant’lar ölçülmemiştir. Recovery bir alert’in kapanması değildir; seçilmiş owner state’in doğrulanması ve yeni checkpoint gerekir. Eski kayıtları silmek veya değiştirmek geçmişin doğruluğunu artırmaz; provenance, erişim sınırı ve retention korunur.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Alias scope

  1. HTTP200 başka fact

    http-demo status 200 taşırken decision-demo deny ve committed false. Transport status business action’ın kabul edildiği veya Duru’nun object yetkisi olduğu sonucunu vermiyor.

    Audit event ledger
    HTTP200 / business deny/false
    Tuple/producer comparison
    Henüz değerlendirilmedi
    Scope sonucu
    Henüz değerlendirilmedi
  2. Composite tuple

    Nova req-demo ve op-demo alias’larını yeniden kullanır, fakat tenant başka. Tenant/operationAlias/object birlikte seçilmezse ilgisiz allow/true Atlas action’ına yanlış bağlanabilir.

    Audit event ledger
    HTTP200 / business deny/false
    Tuple/producer comparison
    Atlas tuple ≠ Nova tuple
    Scope sonucu
    Henüz değerlendirilmedi
  3. Normal expected denial

    Atlas/op-demo/tea normal business row deny/false olduğu için expected-denial. Bu normal policy sonucu successful attack veya Duru malicious diye etiketlenmez.

    Audit event ledger
    HTTP200 / business deny/false
    Tuple/producer comparison
    Atlas tuple ≠ Nova tuple
    Scope sonucu
    Expected denial / no incident verdict
  4. Producer clock farkı

    Job saati 09:59:59, decision 10:00:02 görünebilir; parentEventId decision-demo ilişkisi ayrı verilmiş. CrossProducerWallClockOrder unknown; timestamps tek global causality dizisi oluşturmaz.

    Audit event ledger
    Declared parent relation / clock order unknown
    Tuple/producer comparison
    Atlas tuple ≠ Nova tuple
    Scope sonucu
    Expected denial / no incident verdict
  5. Parent relation trust’i

    ParentEventId producer’ın bildirdiği ilişki; cryptographic authenticity değildir. Source context ve record completeness ayrıca gerekir; event ID equality user authorization sağlamaz.

    Audit event ledger
    Declared parent relation / clock order unknown
    Tuple/producer comparison
    Declared relation ≠ authentic authorization
    Scope sonucu
    Expected denial / no incident verdict
  6. Impact scope’u dar tut

    Known scope yalnız Atlas tenant ve tea object’i. Other tenants/objects unknown; alias’ların benzemesi bütün tenant’ları incident scope’una katmak için evidence değildir.

    Audit event ledger
    Declared parent relation / clock order unknown
    Tuple/producer comparison
    Declared relation ≠ authentic authorization
    Scope sonucu
    Known Atlas/tea / other scope unknown

Bütün satırlar

  1. İlk matching row

    Comparator ilk business row’da durmuyor. LateContradiction iki unique row içerir ve sonraki deny/true açık contradiction’dır; row order kontrolün sonucunu değiştirmemeli.

    Audit event ledger
    Inspect all matching business rows
    Tuple/producer comparison
    Henüz değerlendirilmedi
    Scope sonucu
    Henüz değerlendirilmedi
  2. Explicit contradiction

    Any unique deny/true için review-required; ambiguity true bilgisi ayrıca kalır. Bu synthetic fixture contradiction’ı gerçek policy violation veya actor intent kanıtı diye sunmuyoruz.

    Audit event ledger
    Inspect all matching business rows
    Tuple/producer comparison
    Deny/true → review-required / ambiguity retained
    Scope sonucu
    Henüz değerlendirilmedi
  3. Duplicate semantics

    IdenticalDuplicate iki matching row ama uniqueRows1 verir. Complete identical record tekrarına iki ayrı business effect atfetmek yanlış incident magnitude üretir.

    Audit event ledger
    Inspect all matching business rows
    Tuple/producer comparison
    Deny/true → review-required / ambiguity retained
    Scope sonucu
    Matching2 / unique1 / expected-denial
  4. Conflicting complete kayıt

    DifferentCompleteOutcomes ve sameIdDifferentFields ambiguous olur. Aynı event ID altında değişen field’lar normal identical repeat değildir; detector bu farkı silmez.

    Audit event ledger
    Complete conflict / changed ID fields ambiguous
    Tuple/producer comparison
    Deny/true → review-required / ambiguity retained
    Scope sonucu
    Matching2 / unique1 / expected-denial
  5. Incomplete priority

    LaterIncomplete için incompleteRows1 ve result unknown. Explicit contradiction yokken missing commit’ı false varsaymak evidence completeness şartını gevşetir.

    Audit event ledger
    Complete conflict / changed ID fields ambiguous
    Tuple/producer comparison
    Incomplete evidence → unknown
    Scope sonucu
    Matching2 / unique1 / expected-denial
  6. Review verdict sınırı

    Comparator finite supplied ledger’da attention ve uncertainty seçer. SIEM, identity verification veya production recovery çalıştırmaz; review-required otomatik user blocking veya saldırı ilanı değildir.

    Audit event ledger
    Complete conflict / changed ID fields ambiguous
    Tuple/producer comparison
    Incomplete evidence → unknown
    Scope sonucu
    Finite review classification / no incident verdict

VARSAYIM · SINIR · KONTROL

Korelasyonun yetkiye dönüşmesi

Logging application kararını sonradan anlaşılır kılar. Gereken güven bağı event’in doğru source, identity context ve operation’a ait olmasıdır. Request etiketi yeniden kullanılır veya tenant kaybolursa ilgisiz işler tek zincir gibi görünebilir. Bu yanlış attribution ya da gereğinden geniş incident kapsamı yaratır; etiket eşleşmesi object yetkisi değildir. Kontrol composite correlation, source context ve eksik field’ın unknown tutulmasıdır. Sabit Atlas/Nova satırları aynı alias’ın farklı tenant’larda farklı bağ taşıdığını gösterir.

Aynı operation’ın güvenilen decision ve commit kayıtları uyuşmuyorsa review gerekir. Kaynağı doğrulanmamış client bildirimi, eski projection veya farklı retry attempt aynı kanıt gücünde değildir. ParentEventId üreticinin bildirdiği ilişkiyi taşır; tek başına cryptographic authenticity veya non-repudiation sağlamaz. Buradaki source context verilidir. Product context ve provenance incelenmeden bir çelişkiyi başarılı attack diye yorumlamak gözlenen etkiden daha geniş bir varsayım ekler.

Log da korunacak bir veri kümesidir

Log yazarı bütün request’i kopyalarsa correlation için gereken birkaç alan yanında session değerleri, token, kişisel bilgi veya note body de taşınabilir. Normal amaç action sonucunu açıklamaktır; bu geniş veri kopyası o amaç için gerekli değildir. Kontrol allowlist ve veri minimizasyonudur. Örnekte fake Authorization, fake sessionIdentifier ve sıradan noteText source nesnesinde bulunur ama audit çıktısında yoktur. Sonraki reviewer’ın erişimi yalnız ihtiyacı olan event alanlarıyla sınırlandırılır; hash veya alias kullanımı da ilişkilendirme riskini otomatik ortadan kaldırmaz.

Log viewer ve export formatı da interpreter context’i kullanır. Serbest metin string birleştirmeyle kayıt sınırlarına konmak yerine schema’ya uygun structured serialization ile yazılır; delimiter ve newline data olarak encode edilir. Örnek yalnız JSON line kaydını işler. Zorunlu business audit ile optional diagnostic logging failure için farklı policy isteyebilir. Hiç kayıt yazılmaması temiz sistem kanıtı değildir. Log read/write yetkileri, collector kaybının görünürlüğü ve retention sonrası kontrollü disposal ayrı korunmalıdır.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Audit controls

  1. Allowlist field set’i

    Schema event/tenant/operation/object ve decision/committed gibi gerekli alanları seçer. Fake Authorization, sessionIdentifier ve noteText output’a taşınmaz; whole request logging gerekli değil.

    Allowlisted audit kayıtları
    Allowed metadata / excluded fake sensitive fields
    Correlation/completeness review
    Henüz değerlendirilmedi
    Scope ve checkpoint
    Henüz değerlendirilmedi
  2. Tuple correlation kontrolü

    Atlas/op-demo/tea business satırları Nova’dan ayrılır. Job alias ancak job record bulununca ilişkiyi uzatır; yokken execution varsayılmaz.

    Allowlisted audit kayıtları
    Allowed metadata / excluded fake sensitive fields
    Correlation/completeness review
    Composite tuple / observed job relationship
    Scope ve checkpoint
    Henüz değerlendirilmedi
  3. All-row outcome kontrolü

    Normal expected-denial, deny/true review-required, identical repeat single evidence ve missing commit unknown olarak karşılaştırılır. Input reordering first-row bias üretmemeli.

    Allowlisted audit kayıtları
    Allowed metadata / excluded fake sensitive fields
    Correlation/completeness review
    Composite tuple / observed job relationship
    Scope ve checkpoint
    All-row priority / repeat/order controls
  4. Source ve time coverage

    Same producer sequence sırası bilinebilir; cross-producer clock order unknown kalır. Parent relation producer declaration’ıdır ve root cause certainty’ye otomatik dönüşmez.

    Allowlisted audit kayıtları
    Producer sequence / clock trust separate
    Correlation/completeness review
    Composite tuple / observed job relationship
    Scope ve checkpoint
    All-row priority / repeat/order controls
  5. Recovery yeni checkpoint

    RestoredOwner Duru ve validated true yeni supplied state’i anlatır, historicalEventsRetained true. Recovery geçmiş deny/commit kaydını silmez; productionRestore false.

    Allowlisted audit kayıtları
    Producer sequence / clock trust separate
    Correlation/completeness review
    New validated state / historical ledger retained
    Scope ve checkpoint
    All-row priority / repeat/order controls
  6. Bounded review receipt

    Review scope Atlas/tea ile confidence ve unknown’ları birlikte taşır. Minimized structured records sayesinde private body gerekmiyor; finite comparison gerçek incident tespiti diye genişletilmez.

    Allowlisted audit kayıtları
    Producer sequence / clock trust separate
    Correlation/completeness review
    New validated state / historical ledger retained
    Scope ve checkpoint
    Known scope + uncertainty / no production claim

Audit evidence gap

  1. Eksik business event

    Review’da matching business row yok; missing result unknown ve committed null. HTTP200 veya boş detector sonucu policy enforcement sağlıklı diye yorumlanamaz.

    Allowlisted audit kayıtları
    Business observation absent / committed unknown
    Correlation/completeness review
    Henüz değerlendirilmedi
    Scope ve checkpoint
    Henüz değerlendirilmedi
  2. Collector coverage boşluğu

    Record yokluğunun event yokluğu, field loss veya collector failure nedeni bilinmiyor. Normal deny/false row eksik olayın authoritative kararı diye kopyalanmıyor.

    Allowlisted audit kayıtları
    Business observation absent / committed unknown
    Correlation/completeness review
    Absent evidence ≠ verified negative event
    Scope ve checkpoint
    Henüz değerlendirilmedi
  3. Impact belirsizliği

    Actor intent, commit ve other tenant/object impact UNKNOWN. Known scope gözlemini genişletmek için separate context gerekir; aliased user adı attribution kanıtını tek başına tamamlamaz.

    Allowlisted audit kayıtları
    Business observation absent / committed unknown
    Correlation/completeness review
    Absent evidence ≠ verified negative event
    Scope ve checkpoint
    Commit/intent/other-scope impact UNKNOWN
  4. Gerekli source bağları

    Required schema fields, producer context, composite tuple ve collector coverage gerekli. Her matching row completeness kontrolünden geçmeli; first-match shortcut bu soruyu yanıtlamaz.

    Allowlisted audit kayıtları
    Needed: source/schema/tuple/coverage/all rows
    Correlation/completeness review
    Absent evidence ≠ verified negative event
    Scope ve checkpoint
    Commit/intent/other-scope impact UNKNOWN
  5. Selector’ın dar bilgisi

    XPath tek XML’de deny/true seçer; missing document zero olabilir. Bu zero real SIEM event absence, all-copy retention veya reliable pipeline evidence’ı değildir.

    Allowlisted audit kayıtları
    Needed: source/schema/tuple/coverage/all rows
    Correlation/completeness review
    Zero matches ≠ adequate evidence coverage
    Scope ve checkpoint
    Commit/intent/other-scope impact UNKNOWN
  6. Yeni review sınırı

    Yeni evidence bilinen tuple’ı ve collector context’ini ayrı tamamlamalı. Bu eksik kayıt unknown kalır; otomatik incident verdict, user disable veya recovery işlemi başlatmaz.

    Allowlisted audit kayıtları
    Needed: source/schema/tuple/coverage/all rows
    Correlation/completeness review
    Zero matches ≠ adequate evidence coverage
    Scope ve checkpoint
    Retain unknown / scoped human review evidence

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

Seçimin sonucu ile evidence yeterliliği

Comparator şeması eventId, tenant, operationAlias, object, decision ve committed alanlarını ister. Aynı tuple’daki bütün business satırları okunur; ilk eşleşmede durulmaz. Event ID ve bütün alanları aynı complete tekrar tek evidence sayılır. Herhangi bir unique satır deny/true ise review-required sonucu çıkar. Farklı complete kararlar veya aynı event ID altında farklı alanlar varsa ambiguity görünür kalır; açık deny/true yoksa conflicting complete kayıtlar ambiguous olur. Eksik commit evidence unknown’dır. Bu yerel Python karşılaştırması policy ihlali veya SIEM deployment kanıtı değildir. XPath tek XML’de deny/true satırlarını seçer: normal 0, positive 1, eksik document 0 verir; sonuncusu healthy baseline değildir.

False-positive azaltma için aynı object’teki eski revision, farklı tenant, açıklanan retry ve sıradan policy deny birlikte değerlendirilir. Job correlation yalnız worker event’i bulunduğunda zinciri uzatır; bulunmadığında job yürütüldü diye tamamlanmaz. Clock güveni ve source producer ayrıca raporlanır. Aynı producer sequence için sıra bilinebilirken iki clock arasındaki sıralama unknown kalabilir. Esas soru kaç satır seçildiği kadar, hangi zorunlu veri kümesinin gerçekten mevcut olduğudur; missing-field ve collector-health evidence bu nedenle ayrı tutulur.

Incident ve recovery kararını sınırlamak

Review önce gözlemi yazar: Atlas/op-demo/tea tuple’ında decision ile commit kaydı çelişiyor. Sonra kaynak ve uncertainty belirtilir: sabit fixture, verilen producer context ve clock belirsizliği. Impact kanıtın izin verdiği kapsamla sınırlanır. Bütün tenant’ların etkilendiği veya Duru’nun kötü niyetli olduğu çıkarılmaz. NIST incident yaklaşımında analysis, magnitude ve evidence provenance önemlidir. Bu örnek otomatik user blocking veya recovery başlatmaz; karar sahibine bilinen ve bilinmeyen alanları verir.

Recovery evidence yeni checkpoint’te owner state ve business invariant’ı doğrular; eski çelişki kaydı korunur. Örnekte restoredOwner Duru ve validated=true seçilen yerel state sonucudur. Dış application, backup veya production service restore edilmemiştir. Kalıcı kontrol source schema’sını korumak, field kaybında unknown davranmak, audit pipeline failure’ını görünür tutmak ve reviewer erişimini amaçla sınırlamaktır. Sonraki regression review aynı tuple’ı karşılaştırabilir; kapsam dışındaki sistemler ölçülmeden geçmiş sayılmaz.

ŞİMDİ VAKAYA UYGULA

200, parent relation veya aynı alias incident kanıtı mı?

Atlas/op-demo/tea için HTTP 200 kaydı, business deny/committed false kararı ve worker job kaydı var. Nova aynı request alias’ını kullansa da başka tenant. Job saati parent’tan erken görünür; producer clock’ları global sıra vermiyor. Comparator aynı tuple’daki bütün business satırlarını inceliyor.

Vakadaki doğrulanmış actor, tenant ilişkisi ve requested action için gereken kararları ayır. Authentication veya proof başarısını object permission yerine kullanma.

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Tea note audit ve kapsam defteri

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "schemaFields": [
    "eventId",
    "parentEventId",
    "kind",
    "tenant",
    "requestAlias",
    "operationAlias",
    "sessionCorrelationAlias",
    "userAlias",
    "jobAlias",
    "actor",
    "action",
    "object",
    "decision",
    "reason",
    "committed",
    "producer",
    "sequence",
    "time",
    "status"
  ],
  "ledger": [
    {
      "eventId": "http-demo",
      "kind": "http",
      "tenant": "Atlas",
      "requestAlias": "req-demo",
      "operationAlias": "op-demo",
      "object": "tea",
      "status": 200,
      "producer": "app",
      "sequence": 1
    },
    {
      "eventId": "decision-demo",
      "parentEventId": "http-demo",
      "kind": "business",
      "tenant": "Atlas",
      "requestAlias": "req-demo",
      "operationAlias": "op-demo",
      "sessionCorrelationAlias": "session-group-demo",
      "userAlias": "Duru",
      "actor": "Duru",
      "action": "rename-note",
      "object": "tea",
      "decision": "deny",
      "reason": "owner-policy",
      "committed": false,
      "producer": "app",
      "sequence": 2,
      "time": "10:00:02"
    },
    {
      "eventId": "job-demo",
      "parentEventId": "decision-demo",
      "kind": "job",
      "tenant": "Atlas",
      "operationAlias": "op-demo",
      "jobAlias": "job-demo",
      "object": "tea",
      "producer": "worker",
      "sequence": 1,
      "time": "09:59:59"
    },
    {
      "eventId": "nova-demo",
      "kind": "business",
      "tenant": "Nova",
      "requestAlias": "req-demo",
      "operationAlias": "op-demo",
      "object": "tea",
      "decision": "allow",
      "committed": true,
      "producer": "app",
      "sequence": 3
    }
  ],
  "excludedSeed": {
    "Authorization": "FAKE-AUTH-ALIAS",
    "sessionIdentifier": "FAKE-SESSION-ALIAS",
    "noteText": "Tea note\nSecond line"
  },
  "correlationKeys": [
    "tenant",
    "operationAlias",
    "object"
  ],
  "normal": {
    "result": "expected-denial",
    "contradictions": 0
  },
  "contradiction": {
    "decision": "deny",
    "committed": true,
    "result": "review-required",
    "contradictions": 1,
    "syntheticNotActualPolicyViolation": true
  },
  "missing": {
    "result": "unknown",
    "committed": null
  },
  "clock": {
    "parentRelation": "decision-demo → job-demo",
    "crossProducerWallClockOrder": "unknown"
  },
  "scope": {
    "knownObjects": [
      "tea"
    ],
    "knownTenants": [
      "Atlas"
    ],
    "otherObjects": "unknown",
    "otherTenants": "unknown"
  },
  "recovery": {
    "restoredOwner": "Duru",
    "validated": true,
    "historicalEventsRetained": true,
    "productionRestore": false
  },
  "selector": {
    "xml": "<audit><business decision=\"deny\" committed=\"false\"/></audit>",
    "xpath": "count(/audit/business[@decision=\"deny\" and @committed=\"true\"])",
    "expected": 0,
    "positiveFixtureXml": "<audit><business decision=\"deny\" committed=\"true\"/></audit>",
    "positiveExpected": 1
  },
  "comparatorPolicy": {
    "scopeKeys": [
      "tenant",
      "operationAlias",
      "object"
    ],
    "inspect": "all matching business rows",
    "identicalRepeat": "deduplicate complete identical event record",
    "changedEventIdentityFields": "ambiguous",
    "resultPriority": [
      "explicit deny/true → review-required",
      "missing/incomplete evidence → unknown",
      "conflicting complete records → ambiguous",
      "only deny/false → expected-denial",
      "other complete observations → other-observed"
    ],
    "notActualIncidentVerdict": true
  },
  "multipleRows": {
    "lateContradiction": {
      "result": "review-required",
      "matchingRows": 2,
      "uniqueRows": 2,
      "duplicateRows": 0,
      "contradictions": 1,
      "incompleteRows": 0,
      "ambiguous": true
    },
    "identicalDuplicate": {
      "result": "expected-denial",
      "matchingRows": 2,
      "uniqueRows": 1,
      "duplicateRows": 1,
      "contradictions": 0,
      "incompleteRows": 0,
      "ambiguous": false
    },
    "differentCompleteOutcomes": {
      "result": "ambiguous",
      "matchingRows": 2,
      "uniqueRows": 2,
      "duplicateRows": 0,
      "contradictions": 0,
      "incompleteRows": 0,
      "ambiguous": true
    },
    "sameIdDifferentFields": {
      "result": "ambiguous",
      "matchingRows": 2,
      "uniqueRows": 2,
      "duplicateRows": 0,
      "contradictions": 0,
      "incompleteRows": 0,
      "ambiguous": true
    },
    "laterIncomplete": {
      "result": "unknown",
      "matchingRows": 2,
      "uniqueRows": 2,
      "duplicateRows": 0,
      "contradictions": 0,
      "incompleteRows": 1,
      "ambiguous": false
    }
  }
}
ledger
Verilen source context’e ait event alanları; canlı log değildir.
correlationKeys
Tenant/operation/object ilişkisi; credential değildir.
excludedSeed
Sahte hassas alanlar output’a kopyalanmaz.
scope/recovery
Bilinen kapsam ve yeni checkpoint; production restore yoktur.
selector
Tek XML’de deny/commit çelişkisi; eksik evidence unknown kalır.

Sentetik event defteri ve sınırlı yerel comparator kullanılır. Gerçek log collector, identity verifier, SIEM, global clock veya production recovery çalıştırılmaz.

İki yanlış kanı

HTTP 200 işin commit edildiğini kanıtlar.

Status response semantics’ini anlatır; action kararı ve persistence evidence ayrıca gerekir.

Detector 0 satır döndürdüyse incident yoktur.

Eksik field, collector veya kapsam aynı sonucu verebilir; evidence yeterliliği bilinmeden assurance çıkarılmaz.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

Aynı tenant/operation/object için ilk business row deny/false, daha sonraki row deny/true. Comparator hangi sonucu seçer?

  1. expected-denial; ilk row bütün sonraki kayıtları geçersiz kılar.
  2. review-required; açık contradiction önceliklidir.
Gerekçeli cevabı oku

review-required; açık contradiction önceliklidir. — lateContradiction bir deny/true içerir. Expected ilk row sonraki çelişkiyi silmez; bu sonuç inceleme ister, gerçek incident verdict’i değildir.

HTTP 200 ile Atlas business deny/false aynı izde. Nova allow/true row’u da aynı alias’ları taşıyor. Atlas commit edildi diyebilir miyiz?

Dersten seçilen artifact alanları; öğretim örneği

ledger[0]
{"eventId":"http-demo","kind":"http","tenant":"Atlas","requestAlias":"req-demo","operationAlias":"op-demo","object":"tea","status":200,"producer":"app","sequence":1}
ledger[1]
{"eventId":"decision-demo","parentEventId":"http-demo","kind":"business","tenant":"Atlas","requestAlias":"req-demo","operationAlias":"op-demo","sessionCorrelationAlias":"session-group-demo","userAlias":"Duru","actor":"Duru","action":"rename-note","object":"tea","decision":"deny","reason":"owner-policy","committed":false,"producer":"app","sequence":2,"time":"10:00:02"}
ledger[3]
{"eventId":"nova-demo","kind":"business","tenant":"Nova","requestAlias":"req-demo","operationAlias":"op-demo","object":"tea","decision":"allow","committed":true,"producer":"app","sequence":3}
correlationKeys
["tenant","operationAlias","object"]
  1. Hayır. Atlas business row committed=false; Nova ayrı scope.
  2. Evet. Aynı alias veya 200 bütün tenant’ların commit sonucunu birleştirir.
Gerekçeli cevabı oku

Hayır. Atlas business row committed=false; Nova ayrı scope. — HTTP 200 business commit değildir. Correlation key tenant, operationAlias ve object içerdiği için Nova row’u Atlas kararıyla birleştirilmez.

Identical duplicate, aynı ID’de değişen fields ve eksik sonraki row neden farklı sonuçlar? Job wall-clock zamanı parent’tan erken görünürken causal order ne söyler?

Gerekçeli cevabı oku

Tam aynı event record’u duplicate olarak tekilleştirilir. Aynı event ID’de farklı fields ambiguous olabilir; eksik gerekli row unknown sonucunu korur. ParentEventId causal ilişkiyi verir, fakat farklı producer’ların wall-clock sırasını güvenle kurmaz. İnceleme kapsamı burada Atlas/tea ile sınırlıdır; diğer tenant/object’ler bilinmez. Recovery validation geçmiş event’leri silmez ve production restore kanıtı değildir.

□ Duplicate, conflict ve incomplete evidence sonuçlarını ayırdım.

□ Causal parent ilişkisini cross-producer clock sırası veya geniş incident scope saymadım.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam

  • OWASP — Logging Cheat SheetEvent data sources · Event attributes · Data to exclude · Event collection · Verification · Operation · Protection · Which events to log
  • NIST SP 800-61 Rev. 3, April 2025RS.AN-03, printed p.28 / PDF p.36 · RS.AN-06 and RS.AN-07, printed p.29 / PDF p.37 · RS.AN-08, printed p.29 / PDF p.37 · RC.RP-02 through RC.RP-05, printed p.34 / PDF p.42