Bir bankada gişe görevlisinin kim olduğunu doğrulamak (kimlik doğrulama) ile o kişinin kasaya girip giremeyeceğine karar vermek (yetkilendirme) tamamen farklı iki şeydir; sistemleri delen saldırıların çoğu işte bu ikinci adımdaki hatalardan kaynaklanır.
NEDİR? Yetkilendirme (Authorization), kimliği doğrulanmış bir kullanıcının veya sistemin hangi kaynaklara erişebileceğini ve hangi işlemleri yapabileceğini belirleyen güvenlik sürecidir. Kısaca "Sen kimsin?" sorusunu kimlik doğrulama (authentication) cevaplar; "Sen neye, ne kadar erişebilirsin?" sorusunu ise yetkilendirme cevaplar. Bu ikisi sıralı çalışır: önce kimlik doğrulanır, sonra yetki kontrol edilir. Doğrulama olmadan yetkilendirme anlamsızdır, çünkü kime izin verildiğini bilmeden izin tanımlanamaz. NASIL ÇALIŞIR? 1) Kullanıcı kimliğini kanıtlar (parola, MFA, biyometri vb.) ve sisteme giriş yapar. 2) Sistem, kullanıcıya bir kimlik bağlamı (oturum, token, claim'ler) atar; bu bağlam kullanıcının rollerini ve izinlerini taşır. 3) Kullanıcı bir kaynağa erişmek istediğinde (örneğin bir dosyayı silmek), sistem bir yetki kontrolü (access control check) yapar. 4) Sistem, erişim politikasına bakar: bu kullanıcının/rolün bu kaynak üzerinde bu eylemi yapma izni var mı? 5) İzin varsa işlem gerçekleşir (allow); yoksa reddedilir (deny - genellikle HTTP 403 Forbidden). Yetkilendirme modelleri farklı yaklaşımlar sunar: RBAC (rol tabanlı - izin role bağlanır), ABAC (öznitelik tabanlı - departman/saat/konum gibi özniteliklere göre), ve ACL (erişim kontrol listesi - kaynak başına kim ne yapabilir listesi). NEDEN ÖNEMLİ / İŞ YERİNDE Yetkilendirme, çok kiracılı (multi-tenant) sistemlerde veri izolasyonunun temelidir: bir müşterinin başka müşterinin verisine erişememesi yetki kontrolüyle sağlanır. "En az yetki" (least privilege) ilkesi gereği her kullanıcıya yalnız işini yapmaya yetecek izin verilir; aşırı yetki, bir hesap ele geçirildiğinde hasarı büyütür. OWASP'ın güvenlik açığı sıralamasında "Broken Access Control" (Bozuk Erişim Kontrolü) yıllardır en kritik açık olarak ilk sıralarda yer alır - çünkü doğrulama doğru yapılsa bile yetki kontrolü eksik/hatalıysa saldırgan başka kullanıcıların verisine veya yönetici işlevlerine ulaşabilir. DİKKAT / İYİ UYGULAMA • Yetki kontrolünü her zaman sunucu tarafında yap; istemcide (arayüzde butonu gizlemek) yapılan kontrol güvenlik değildir, yalnız kozmetiktir. • "Varsayılan reddet" (deny by default) ilkesini uygula: açıkça izin verilmeyen her şey yasaktır. • Yetki kontrolünü tek bir merkezi katmanda topla; her endpoint'te ayrı ayrı elle yazmak unutulan kontrollere (IDOR/yatay yetki aşımı) yol açar. • Yetki ile kimlik doğrulamayı karıştırma: geçerli bir token, her işleme izin verildiği anlamına gelmez.
• Yetkilendirme (authorization), kimliği doğrulanmış bir kullanıcının NEYE erişebileceğini belirler; kimlik doğrulama (authentication) ise KİM olduğunu kanıtlar. • Sıra her zaman: önce kimlik doğrula, sonra yetki kontrol et. • Yaygın modeller: RBAC (rol tabanlı), ABAC (öznitelik tabanlı), ACL (erişim listesi). • "En az yetki" ve "varsayılan reddet" ilkeleri uygulanmalı; kontrol mutlaka sunucu tarafında yapılmalı. • Eksik/hatalı yetki kontrolü (Broken Access Control, IDOR) en kritik web güvenlik açıkları arasındadır.