Kimlik ve yetki farklı sorulardır
Kimlik doğrulama, kullanıcının kimliğini doğrulamaya çalışır. Yetkilendirme ise belirli bir işlemi belirli bir kaynak üzerinde yapıp yapamayacağını değerlendirir. Oturum açmış bir kullanıcı, başka bir kişinin özel kaydına otomatik olarak erişebilmemelidir.
Bir ekip not uygulaması düşünün. Bir kişi kendi taslağını düzenleyebilir, ekip arkadaşının yayımladığı yazıyı okuyabilir, fakat çalışma alanının üyelerini değiştiremeyebilir. Tek bir “giriş yaptı” bilgisi, bu üç kararın hiçbirini tek başına açıklamaz.
Görünmeyen düğme, kapalı kapı değildir
Arayüzde bir işlemi gizlemek kullanıcı deneyimine yardımcı olur; asıl erişim kararı güvenilir sunucu tarafında verilmelidir. Her istekte kullanıcının, istenen kaynağın ve yapılacak işlemin birlikte değerlendirilmesi gerekir. Kaynağın adresinin tahmin edilmesinin zor olması, yetkilendirme kontrolünün yerini tutmaz.
Not uygulamasında “Sil” düğmesini yalnızca yazara göstermek iyi bir başlangıçtır. Ancak sunucuya gelen silme isteğinin de aynı kurala göre değerlendirilmesi gerekir. Arayüz ile sunucu farklı şeyler söylüyorsa, ekranda görünen düzen güvenilir bir sınır oluşturmaz.
İhtiyaç kadar erişim
Varsayılan olarak erişimi reddetmek ve yalnızca gereken izinleri vermek, kontrolün anlaşılır kalmasına yardımcı olur. Erişim kuralları yalnızca kullanıcı rolüne değil, kaynak sahipliğine ve ilgili ilişkilere de dayanabilir.
Bir izin tablosunu kod yazmadan önce hazırlamak faydalı bir tasarım egzersizidir. Satırlara kullanıcı türlerini, sütunlara okuma, düzenleme ve silme gibi işlemleri koyun. Kararsız kaldığınız her hücre, ürünün henüz netleşmemiş bir davranışını gösterir.
“Bu kullanıcı giriş yaptı mı?” sorusundan sonra, “Bu kaydı bu işlemle değiştirmesine izin var mı?” sorusu da gelmeli.
İzin verilen kadar reddedileni de dene
Yetkilendirme testleri, yalnızca doğru kullanıcının işlemi yapabildiğini kontrol etmekle sınırlı kalmamalıdır. Başka bir kullanıcı, farklı bir çalışma alanı veya kaldırılmış bir yetkiyle aynı işlemi deneyen testler de önemlidir.
Örnek not uygulamasında test senaryoları şöyle ayrılabilir: yazar taslağı düzenler; başka ekipten biri taslağa erişemez; üyeliği kaldırılan kişi eski bağlantıyla devam edemez. Bu liste, teknik ekiple ürün ekibinin aynı davranışı tarif etmesini sağlar.
Kimlik–yetki ayrımı, en az yetki ve istek başına kontrol ilkeleri: OWASP Yetkilendirme Rehberi.
