Blog Yazısı · Yazılım

RBAC Nedir? Admin Panelinde Rol Matrisi

KepezWeb Ekibi 7 dk okuma Yazılım
RBAC Nedir? Admin Panelinde Rol Matrisi

Tek bir admin bayrağı, farklı işleri yapan kişileri aynı yetki kutusuna sıkıştırır. RBAC, ekran ve işlem iznini iş rolüne bağlar; rol matrisi kimin neyi göreceğini ve yapacağını tek bakışta gösterir. Bu rehber, paneli şişirmeden rol modelini nasıl kuracağınızı anlatır.

Admin panelinde herkese aynı yetkiyi vermek ilk sprintte pratik durur. Tek bir admin bayrağı, siparişi okuyan kişiyi de fiyatı değiştiren kişiyi de aynı kutuya koyar. RBAC nedir sorusu tam bu noktada işe yarar: yetkiyi kişiye değil iş rolüne bağlamak, ekranı ve işlemi ayrı ayrı açıp kapatmaktır. Bu rehber, tek bayrak modelinden çıkıp rol matrisiyle izin vermenin somut yolunu anlatır.

RBAC nedir ve tek admin bayrağı neden yetmez

Birçok panelde kullanıcı kaydında is_admin benzeri bir alan vardır. Değer doğruysa menünün tamamı açılır; yanlışsa neredeyse hiçbir şey görünmez. Bu model iki kişilik ekipte iş görür. Üçüncü kişi destek taleplerine bakmaya başladığında seçenek kalmaz: ya her şeyi verirsiniz ya da sürekli istisna yazarsınız.

RBAC (Role-Based Access Control) bu sıkışmayı çözer. Kullanıcıya tek tek ekran açmazsınız. Kullanıcıya bir veya birkaç rol verirsiniz; rol de izinleri taşır. Destek rolü sipariş detayını okur ama kargo ücretini değiştirmez. Finans rolü iade tutarını görür ama ürün açıklamasını düzenlemez.

Somut düşünün. Ayşe müşteri mesajlarına bakıyor. Mehmet kargoyu basıyor. Elif iade tutarını onaylıyor. Üçü de admin bayrağı taşıyorsa Elif’in onay ekranı Ayşe’nin önüne de düşer. RBAC’de Ayşe destek, Mehmet operasyon, Elif finans rolündedir. Aynı panele girerler; gördükleri menü ve basabildikleri düğme işlerine göredir.

Tek bayrağın asıl maliyeti yalnızca güvenlik açığı değildir. İş de durur. Herkes admin olunca kimsenin sınırı netleşmez. Yanlış düğmeye basmak kolaylaşır. Kayıtta “admin yaptı” yazar; hangi iş kuralıyla yaptığını okuyamazsınız.

Rol, izin ve kaynak üçlüsünü ayırın

Rol matrisi kurulmadan önce üç kavramı ayırmak gerekir. Karışırlarsa tablo şişer, kod da şişer.

  • Rol: iş paketinin adı. Destek, operasyon, finans, içerik, yönetici gibi.
  • Kaynak: üzerinde işlem yapılan nesne. Sipariş, ürün, müşteri, kupon, kullanıcı.
  • İzin: kaynak üzerindeki fiil. Görüntüle, oluştur, güncelle, sil, onayla, dışa aktar.

“Sipariş yöneticisi” gibi şişirilmiş rol adları matrisi bozar. Rol, unvan kopyası olmak zorunda değildir. Aynı unvandaki iki kişi farklı işler yapıyorsa iki rol düşünün. Tersi de geçerlidir: farklı unvanlar aynı işi yapıyorsa tek rol yeter.

İzin adını ekran adıyla karıştırmayın. “Siparişler sayfası” bir ekrandır. “Siparişi iptal et” bir işlemdir. Ekranı açmak, o ekrandaki her düğmeyi açmak değildir. Bu ayrım, KepezWeb olarak özel yazılım işlerinde yetki modelini menü listesinden değil iş akışından çıkarmamızın nedenidir.

Yetki unvana değil yapılan işe bağlanır. Unvan değişince matris değişir; her kişiye özel kod yığını değişmez.

Admin panelinde rol matrisi nasıl kurulur

Matris, satırında işlem, sütununda rol olan bir tablodur. Hücrede evet, hayır veya koşullu yazar. Koşullu hücreyi “belki” diye bırakmayın. Koşulu yazın: kendi siparişi, kendi şubesi, kendi satıcısı. Boş hücre, sonradan tahmin edilen izindir.

İşleri konuşarak toplayın

Ekran envanteri ile başlamayın. “Bu panelde kim ne iş bitiriyor?” diye sorun. Siparişi kim paketler, iadeyi kim onaylar, fiyatı kim değiştirir, yeni kullanıcıyı kim açar. Her iş bir satır adayıdır. Ekran, o işin durduğu yerdir; satırın adı değildir.

Rolleri iş paketine göre daraltın

İlk taslakta az sayıda, tekrarlayan iş paketlerine göre rol açın. Her kişiye özel rol üretmek RBAC’yi bozar; tekrar kişi bazlı listeye dönersiniz. Yeni bir rol ancak gerçekten ayrı bir iş paketi doğunca eklenir. “Ayşe’nin rolü” diye bir satır görmek, modelin kişiye kaydığını gösterir.

Ekran ve işlemi ayrı satır yapın

Sipariş listesini görmek ayrı satır, sipariş iptali ayrı satır, kargo firmasını değiştirmek ayrı satır olsun. Aksi halde “sipariş yetkisi” diye tek kutu açar, içine her şeyi yığarsınız. Bu, tek admin bayrağının küçük kardeşidir: isim değişmiş, davranış aynı kalmıştır.

Sunucu tarafını matrisin kaynağı yapın

Arayüzde düğmeyi gizlemek kullanıcı deneyimidir. Asıl karar uygulama katmanındadır. İstek, oturumdaki rollerden o kaynak ve fiil için izin yoksa reddedilmelidir. Gizlenmiş bir form alanı, adresi bilen biri için izin sayılmaz. Liste sorgusu da aynı kurala bağlıdır: görmemesi gereken kayıt satırda durmamalıdır.

Bu kontrol, sonradan eklenen bir kilit değil yazılım geliştirme işinin parçasıdır. Rol ve izin tanımları kullanıcı kaydından ayrı durur. Kullanıcı rolü taşır; izin tanımı rolde yaşar. Özel PHP/MySQL yazılım tarafında bu ayrım, tablo tasarımına erken yansırsa sonradan her ekrana dağınık koşul yazılmaz.

Ekran izni ile işlem iznini karıştırmayın

Admin arayüzünde üç katman vardır ve her biri ayrı karar ister. Birini çözüp diğerini açık bırakmak, yetkiyi yarım bırakmaktır.

  1. Navigasyon: menüde görünsün mü?
  2. Sayfa: kayıt listesi ve detay açılsın mı?
  3. Eylem: oluştur, güncelle, sil, onayla, dışa aktar çalışsın mı?

Destek rolüne sipariş detayını açıp iptal düğmesini kapatmak yaygındır. Düğme yok diye işlem bitmiş olmaz. Aynı işlemi başka bir istek ile denemek mümkünse kontrol eksiktir. Matriste “görüntüle: evet / iptal: hayır” yazıyorsa her iki satır da hem arayüzde hem sunucuda uygulanır.

Gizlenen öğenin klavye ile de ulaşılamaması gerekir. Odak sırasına giren ama çalışmayan bir düğme hem kafa karıştırır hem yanlış güven verir. Yetki kararı bu yüzden erişilebilir web tasarımı ile birlikte düşünülür: görünmeyen öğe odak dışıdır; yetkisiz eylem de sunucuda reddedilir.

E-ticaret sitesi panellerinde bu ayrım daha görünür. Depo siparişi hazırlar, finans iadeyi onaylar, pazarlama kuponu tanımlar. Hepsi “admin panele giriyor” diye aynı rolde toplanırsa stok, fiyat ve müşteri kaydı aynı risk havuzuna düşer. Giriş hakkı ile işlem hakkı aynı şey değildir.

Örnek bir admin rol matrisi

Aşağıdaki tablo bir mağaza paneli için başlangıç taslağıdır. Sizin işinizde satırlar değişir; yöntem aynı kalır. “Koşullu” hücre, yalnızca kendi kaydı veya kendi şubesi anlamına gelir. Koşulu ayrıca yazın, hücreye bırakmayın.

İşlem Destek Operasyon Finans Yönetici
Sipariş listesini görüntüle Evet Evet Evet Evet
Siparişi iptal et Hayır Evet Hayır Evet
Fiyat güncelle Hayır Hayır Hayır Evet
İade onayla Hayır Hayır Evet Evet
Kullanıcı ekle / rol ata Hayır Hayır Hayır Evet
Raporu dışa aktar Hayır Koşullu Evet Evet

Tabloyu geliştirme işinden önce bir yerde yaşatın. Kod, bu tablonun uygulamasıdır. Yeni bir düğme ekleneceği zaman önce satır açılır, sonra geliştirme yapılır. Tersi olursa yetkisiz eylem sessizce doğar: ekranda vardır, matriste yoktur.

Rol matrisinde sık görülen hatalar

Model doğru kurulup pratikte delinirse tekrar tek bayrağa dönersiniz. Aşağıdaki kaymalar aynı kapıya çıkar.

  • Herkese yönetici vermek. İş yetişsin diye açılan istisna kalıcılaşır.
  • Rol adını unvanla eşlemek. Unvan değişince kod dağılır.
  • Yalnız menüyü gizlemek. İstek hâlâ çalışır.
  • İzni ekran adına bağlamak. Aynı ekranda birden fazla işlem vardır.
  • Silme ve dışa aktarmayı güncelleme ile birleştirmek. Biri kaydı yok eder, diğeri veriyi dışarı çıkarır.
  • Denetim kaydı tutmamak. Kim, hangi rolle, hangi kayda dokundu bilinmez.

Super admin diye bir rol tutulacaksa bile günlük iş bu rolle yapılmamalıdır. Kullanıcı açmak, rol atamak ve sistem ayarı gibi dar bir sete indirin. Sipariş paketlenirken super admin kullanılmaz. Paylaşılan “acil hesap” da rol modelini deler: matris kişiye değil, kimin girdiğine bakamaz.

Küçük ekip için uygulanabilir adımlar

Kurumsal bir yetki ürünü beklemeden şu sırayı işletebilirsiniz. Amaç, ilk günden kusursuz matris değil; spekülatif admin bayrağını kapatmaktır.

  1. Panelde biten her işi bir satır yapın.
  2. Tekrarlayan iş paketlerine göre az sayıda rol taslağı yazın.
  3. Matrisi doldurun; boş hücre bırakmayın.
  4. Her “evet” için ekran, odak ve sunucu kontrolünü eşleştirin.
  5. Super admin kapsamını ayrı ve dar tutun.
  6. Yeni özellik talebinde önce matrisi güncelleyin, sonra kod birleştirin.
  7. İş kuralı, ekip veya ekran değişince tabloyu yeniden okuyun.

İlk kurulumda her hücreyi tartışmak yerine en riskli işleri netleştirmek çoğu paneli ileri taşır: silme, fiyat, ödeme veya iade. Gerisi, gerçek kullanım görününce doldurulur. Matris yaşayan bir listedir; duvara asılı süs değildir.

Sıkça Sorulan Sorular

RBAC ile ACL arasındaki fark nedir?

ACL izni çoğu zaman kayda veya kullanıcıya tek tek bağlar. RBAC izni role bağlar; kullanıcı role girince izinleri toplu alır. Küçük admin panelinde RBAC bakımı daha kolaydır. Tek bir siparişe özel istisna gerekiyorsa “kendi kaydı” gibi bir koşul, RBAC hücresine yazılabilir. Her kayıt için ayrı kural yığını ise bakımı kişi bazlı listeye çevirir.

Bir kullanıcıya birden fazla rol vermek doğru mu?

Evet, kişi gerçekten iki iş paketini birden taşıyorsa. Destek aynı zamanda depo işi görüyorsa iki rol verilir. Her kesişen kişi için yeni rol üretmek matrisi şişirir. Çakışan izinlerde kuralı önceden seçin: daha dar izin mi, birleşik izin mi geçerli? Sessiz birleşim, fark etmeden admin üretir.

Super admin rolü şart mı?

Bir kırılım rolü birçok panelde gerekir: rol atama, sistem ayarı, silinmiş kaydı geri alma. Şart olan, bu rolün günlük işte kullanılmamasıdır. Kapsamı dar tutun, her işlemi kayıt altına alın. “Acil durum hesabı”nı paylaşılan parola yapmak, matrisi fiilen iptal eder.

İzni yalnızca arayüzde kontrol etmek yeter mi?

Yetmez. Arayüz, yetkisiz kişiyi doğru yoldan uzaklaştırır. Karar sunucudadır. Liste sorgusu da filtrelenmelidir. Aksi halde dışa aktarma veya doğrudan istek ile görülmemesi gereken satır çıkar. Düğmenin yokluğu, iznin yokluğu değildir.

Rol matrisini ne zaman güncellerim?

Yeni ekran, yeni düğme, yeni iş paketi veya yeni ekip üyesi geldiğinde. Unvan değişikliği tek başına rol doğurmaz. İş paketi değişiyorsa matris değişir. Güncelleme yapılmadan kod birleştirmek, gizlenmiş bir admin bayrağı bırakmakla aynı riski taşır.

Admin paneli ve yetki modelini iş rolüne göre kurmak istiyorsanız KepezWeb üzerinden teklif alabilirsiniz. Mevcut ekranlarınızı ve işlemlerinizi birlikte tarayıp rol matrisine dökeriz. Böylece tek admin bayrağına sıkışmadan ilerlersiniz.

Bu yazıyı paylaş