Yazılımda Kullanıcı Rolleri ve Yetkilendirme
Kim neyi görebilir, kim neyi değiştirebilir? Yazılımda rol ve yetki yapısının nasıl kurulduğunu, sık yapılan hataları ve iyi bir tasarımın ipuçlarını anlattım.
İçindekiler
Muhasebe personelinizin satış fiyatlarını değiştirebildiğini ya da bir bayinizin diğer bayilerin siparişlerini görebildiğini fark ettiğinizi düşünün. Bu durum hem güvenlik hem de ticari sır açısından ciddi bir sorundur ve çoğu zaman en baştan yeterince düşünülmemiş bir yetki yapısından kaynaklanır. Yazılımda kullanıcı yetkilendirme, sisteme giren her kişinin yalnızca işi için gereken ekranlara, kayıtlara ve işlemlere erişebilmesini sağlayan kurallar bütünüdür. Bu yazıda rol ve izin mantığını, farklı yetki modellerini ve sık yapılan hataları örneklerle anlatıyorum.
Kimlik doğrulama ve yetkilendirme aynı şey değil
Bu iki kavram sıkça karıştırılır. Kimlik doğrulama, “Sen kimsin?” sorusunun cevabıdır: Kullanıcı adı ve şifre, tek kullanımlık kod ya da kurumsal hesapla giriş bu aşamadadır. Yetkilendirme ise “Bunu yapmaya iznin var mı?” sorusunu cevaplar ve kullanıcı içeri girdikten sonra her işlemde tekrar tekrar sorulur.
Bir otel benzetmesi işinizi kolaylaştırabilir. Resepsiyonda kimliğinizi göstermeniz kimlik doğrulamadır. Size verilen kartın yalnızca kendi odanızı, spor salonunu ve otoparkı açması, ama mutfağa ya da başka odalara erişim vermemesi ise yetkilendirmedir.
Rol tabanlı yetkilendirme: en yaygın model
İşletme yazılımlarında en sık kullanılan yaklaşım rol tabanlı erişim kontrolüdür (RBAC). Burada izinler tek tek kişilere değil rollere verilir, kullanıcılar da bu rollere atanır. Yeni bir personel geldiğinde yalnızca uygun rolü seçmek yeterlidir.
Basit bir ticari işletme için örnek bir yetki tablosu şöyle olabilir:
| İşlem | Yönetici | Satış | Muhasebe | Depo | Bayi |
|---|---|---|---|---|---|
| Ürün fiyatı değiştirme | Evet | Hayır | Hayır | Hayır | Hayır |
| Sipariş oluşturma | Evet | Evet | Hayır | Hayır | Yalnızca kendi adına |
| Fatura görüntüleme | Evet | Kendi müşterileri | Evet | Hayır | Yalnızca kendi faturaları |
| Stok düzeltme | Evet | Hayır | Hayır | Evet | Hayır |
| Kullanıcı ekleme | Evet | Hayır | Hayır | Hayır | Hayır |
Tablodaki “kendi müşterileri” ve “yalnızca kendi faturaları” ifadelerine dikkat edin. Gerçek hayatta yetki çoğu zaman yalnızca ekran düzeyinde değil, kayıt düzeyinde de tanımlanmalıdır.
Kayıt ve şube bazlı yetki
Rol, kişinin hangi tür işlemleri yapabileceğini belirler; ama hangi kayıtlar üzerinde yapabileceğini belirlemek için ek kurallar gerekir. Çok şubeli bir işletmede şube müdürü yalnızca kendi şubesinin raporlarını, satış temsilcisi yalnızca kendi müşterilerini, bayi ise yalnızca kendi siparişlerini görmelidir. Bu tür kurallar kullanıcının şubesi, bölgesi ya da sahip olduğu kayıtlar gibi niteliklere göre çalışır ve nitelik tabanlı erişim kontrolü (ABAC) olarak da anılır. Bayi ve müşteri portallarında bu ayrım hayati önem taşır; konuyu bayi yönetim sistemi ve müşteri portalı yazılarında da ele aldım.
Yazılımda kullanıcı yetkilendirme kurgularken temel ilkeler
Sağlam bir yetki yapısı birkaç basit ilkeye dayanır:
- En az yetki ilkesi: Herkes işini yapmaya yetecek kadar yetkiye sahip olmalı, fazlasına değil.
- Kontrol sunucuda yapılmalı: Bir butonu ekranda gizlemek yetkilendirme değildir. Her istek sunucu tarafında yeniden kontrol edilmelidir.
- Görev ayrılığı: Kritik işlemlerde, örneğin büyük bir iadenin onaylanmasında, talebi oluşturan ile onaylayan farklı kişiler olmalıdır.
- Denetim kaydı: Kimin hangi kaydı ne zaman görüntülediği ya da değiştirdiği kayıt altına alınmalıdır.
- Kolay yönetim: Rolleri ve izinleri yönetici panelinden, yazılımcıya ihtiyaç duymadan düzenleyebilmelisiniz.
- Ek doğrulama: Yönetici hesapları gibi geniş yetkili hesaplarda iki adımlı doğrulama kullanılmalıdır.
Kişisel verilerin işlendiği sistemlerde erişimin sınırlandırılması, KVKK açısından alınması beklenen teknik tedbirlerin de bir parçasıdır. Kendi durumunuz için kesin hukuki değerlendirmeyi bir uzmandan almanızı öneririm.
Mobil uygulama ve API tarafında yetkilendirme
Yazılımınız yalnızca web panelinden ibaret değilse, örneğin bir mobil uygulama ya da başka bir sistem de aynı verilere erişiyorsa, yetkilendirme API düzeyinde de kurulmalıdır. Kullanıcı giriş yaptığında sunucu ona bir erişim anahtarı (token) verir; uygulama sonraki her istekte bu anahtarı gönderir ve sunucu hem anahtarın geçerliliğini hem de kullanıcının o işleme yetkisini kontrol eder. Bu amaçla sık kullanılan yöntemlerden birini JWT nedir yazısında anlattım. API’lerin genel güvenlik önlemleri için API güvenliği yazısına da göz atabilirsiniz.
Sık yapılan hatalar
- Yalnızca arayüzde gizleme: Menüden kaldırılan bir sayfa, adresi bilen kullanıcı tarafından hâlâ açılabiliyorsa yetki yoktur.
- Numara değiştirerek erişim: Adres çubuğundaki sipariş numarasını değiştiren bir bayinin başka bayinin siparişini görebilmesi, en yaygın açıklardan biridir.
- Herkese yönetici yetkisi: “Şimdilik herkes her şeyi görsün” yaklaşımı, sonradan geri alınması zor bir alışkanlık yaratır.
- Ayrılan personelin hesabının açık kalması: İşten ayrılan kişilerin erişimi aynı gün kapatılmalıdır.
Bu işi nasıl birlikte yaparız?
Yetki yapısını yazılımın en başında, iş akışlarınızla birlikte tasarlıyorum:
- Ekibinizi ve süreçlerinizi dinleme: Hangi pozisyonların sistemi kullanacağını, kimin neyi onaylaması gerektiğini birlikte çıkarıyoruz.
- Yetki matrisi ve teklif: Yukarıdakine benzer bir rol ve izin tablosu hazırlayıp onayınıza sunuyor, kapsamı teklife yazıyorum.
- Geliştirme ve test: Her rol için ayrı test kullanıcılarıyla yetkisiz erişim denemeleri yapıyor, sonuçları size gösteriyorum.
- Teslim ve destek: Rolleri panelden nasıl yöneteceğinizi gösteriyor, ihtiyaçlarınız değiştikçe yapıyı birlikte güncelliyoruz.
Mevcut sisteminizdeki yetki yapısını gözden geçirmek ya da yeni bir proje planlamak isterseniz iletişim sayfasından bana ulaşabilirsiniz.
Sık sorulan sorular
Rol ile izin arasındaki fark nedir?
İzin, tek bir işlemi yapabilme hakkıdır; örneğin fatura görüntüleme. Rol ise bu izinlerin bir pozisyona göre gruplanmış hâlidir; örneğin muhasebe rolü birçok izni bir arada içerir.
Bir kullanıcıya birden fazla rol verilebilir mi?
Evet, iyi tasarlanmış sistemlerde bir kullanıcı birden fazla role sahip olabilir. Örneğin küçük bir işletmede aynı kişi hem satış hem depo işlerini yürütebilir.
Yetkileri yazılımcıya ihtiyaç duymadan değiştirebilir miyim?
Bu, tasarıma bağlıdır. Rol ve izin yönetimi yönetici paneline eklenirse yeni rol oluşturma ya da izin değiştirme işlemlerini kendiniz yapabilirsiniz.
Yazılımda kullanıcı yetkilendirme sonradan eklenebilir mi?
Eklenebilir, ancak tüm ekranların ve sorguların yeniden gözden geçirilmesi gerektiği için baştan planlamaktan daha zahmetlidir. Bu yüzden yetki yapısını projenin ilk aşamasında konuşmak en doğrusudur.
Sonuç
Yazılımda kullanıcı yetkilendirme, verilerinizi hem dış tehditlere hem de iç kaynaklı hatalara karşı koruyan, iş akışlarınızı düzenleyen temel bir yapı taşıdır. Ekibinize uygun bir yetki yapısını birlikte kurgulamak isterseniz bana yazabilirsiniz.
