Organization Erişim Baseline'ı (Access Decision Contract'a Tabi)
Kural
Etkin Organization erişimi, üst-doktrinin Access Decision Contract'ına tabidir (CAN-STR-DOCTRINE-001); Code-Security-Ceiling, Entitlement ve Visibility eksenleri o sözleşmede yaşar ve bu kayıtla sessizce dışlanmaz:
UCG-013 ORGANIZATION ACCESS BASELINE
IS EVALUATED INSIDE
CAN-STR-DOCTRINE-001 ACCESS DECISION CONTRACT
UCG-013'ün altı organization-ekseni bu sözleşmenin organization-baseline'ını oluşturur:
ACTIVE MEMBERSHIP ∩ ROLE/CAPABILITY ∩ ASSIGNMENT/RESOURCE-SCOPE
∩ POLICY ∩ WORKSPACE/TENANT-MATCH ∩ RESOURCE/WORKFLOW-STATE
Uygulanabilir her eksen açıkça ALLOW / NEUTRAL / DENY / UNKNOWN sonucuna çözülür. Bir eksen yalnız ilgili Rule tarafından uygulanamaz olarak tanımlanmışsa açık NEUTRAL olabilir; eksik veya UNKNOWN eksen fail-closed DENY üretir:
NOT APPLICABLE = EXPLICIT NEUTRAL
MISSING / UNKNOWN ≠ NEUTRAL
Hiçbir tekil eksen tek başına erişim veremez. users.tenant_id alanı authorization kaynağı (SoT) değildir. UI-görünürlüğü (menü, buton, ekran-durumu) authorization değildir; her karar server-side yeniden türetilir ve uygulanır.
Gerekçe
Erişim tek bileşenden (ör. yalnız rol veya yalnız tenant-alanı) türetilirse membership/assignment/context ayrımı çöker; stale veya sahte tek-sinyal yetki sızıntısı üretir.
Test edilebilir hükümler
- Uygulanabilir bir eksen sağlanmıyorken korumalı işlem DENY döner.
- Uygulanamaz-tanımlı eksen açık NEUTRAL olarak çözülür; eksik/UNKNOWN eksen-değerlendirmesi hiçbir yoldan ALLOW üretemez (fail-closed DENY).
users.tenant_iddeğeri tek başına hiçbir korumalı işlemi geçiremez.- UI'da gizlenmiş bir aksiyonun endpoint'i doğrudan çağrıldığında server-side RED döner.
- Erişim kararı istek anında server-side türetilir; istemci beyanı karar girdisi değildir.
Kapsam
Tüm organization-scoped okuma/yazma yüzeyleri (admin-panel + API + frontend-BFF). Kapsanan UC'ler: UC-OAM-001/004/007 (görünüm-yetkisi) + tüm mutation-UC'lerinin yetki-önkoşulu. Karar-sunum ayrımı (HIDE/LOCK) bu kuralın dışıdır (Access-Decision-Contract hattı).