Yetkilendirme nedir?
Yetkilendirme (authorization), kimliği doğrulanmış bir kullanıcının veya servisin hangi kaynaklara ve işlemlere erişebileceğini belirleme sürecidir. Kimlik doğrulama ‘kimsiniz’ sorusunu yanıtlarken yetkilendirme ‘bunu yapmaya iznin var mı’ sorusunu yanıtlar ve erişimi kural ve rollere göre sınırlar.
İyi tasarlanmış bir yetkilendirme sistemi, bir hesap ele geçirilse bile saldırganın yapabileceklerini sınırlar. Bu nedenle en az yetki ilkesinin uygulandığı yerdir.
Neden önemlidir?
Birçok ciddi güvenlik açığı, giriş yapmış bir kullanıcının yetkisi olmayan bir veriye ulaşabilmesinden doğar. Örneğin bir URL’deki kimlik numarasını değiştirerek başkasının kaydını görmek, eksik yetki kontrolünün tipik sonucudur. Bu tür açıklar kimlik doğrulaması sağlam olsa bile ortaya çıkar.
Yaygın yetkilendirme modelleri şunlardır:
- Rol tabanlı (RBAC): yetkiler rollere, roller kullanıcılara atanır.
- Öznitelik tabanlı (ABAC): kullanıcı, kaynak ve bağlam özelliklerine göre karar verilir.
- Erişim denetim listeleri (ACL): her kaynağa kimin ne yapabileceği tek tek tanımlanır.
Sunucu ve hosting ortamında
Linux’ta dosya izinleri (okuma, yazma, çalıştırma), sahip ve grup kavramları temel yetkilendirme katmanıdır. sudo kuralları hangi kullanıcının hangi komutu yönetici olarak çalıştırabileceğini belirler. cPanel, Plesk ve DirectAdmin’de reseller, alan adı sahibi ve e-posta kullanıcısı gibi roller farklı yetki düzeyleri sunar.
Web uygulamalarında ise her istekte sunucu tarafında yetki kontrolü yapılmalıdır. Arayüzde bir düğmeyi gizlemek yetkilendirme sayılmaz; çünkü istek doğrudan gönderilebilir.