RBAC
Rol Tabanlı Erişim Kontrolü (Role-Based Access Control)
- Okunuşu
- ar-bek ya da ar-bi-ey-si
Kısaca
RBAC, izinleri admin veya editor gibi rollere veren ve kullanıcılara bu rolleri atayarak erişim sağlayan bir yetkilendirme modelidir.
RBAC nedir?
RBAC, yani rol tabanlı erişim kontrolü, her kullanıcının ne yapabileceğine karar vermenin bir yoludur. İzinleri tek tek kişilere bağlamak yerine viewer, editor ve admin gibi roller tanımlar, her role bir izin kümesi verir ve rolleri kullanıcılara atarsınız. Biri görev değiştirdiğinde onlarca bireysel izni düzenlemek yerine rolünü değiştirirsiniz.
Bir istek geldiğinde uygulama önce kullanıcının kimliğini doğrular, ardından sahip olduğu rolleri bulur ve bu rollerden herhangi birinin invoice:delete gibi gereken izni içerip içermediğini denetler. Roller kapsamlandırılabilir; örneğin bir projenin admin'i ama bir diğerinin viewer'ı olmak gibi. Bazı sistemler, üst düzey bir rolün alt düzey bir rolün izinlerini miras aldığı rol hiyerarşilerini destekler. İyi RBAC tasarımları en az ayrıcalık ilkesini izler ve her role yalnızca gerçekten ihtiyaç duyduğu izinleri verir.
Hemşirelerin, doktorların ve resepsiyonistlerin her birinin belirli kapıları ve kayıtları açan farklı bir rozet türü taşıdığı bir hastaneyi düşünün. Hastane her çalışan için kapı kapı karar vermez; rozet türü başına bir kez karar verir. RBAC, iş uygulamalarında, veritabanlarında, bulut platformlarında ve Kubernetes gibi container orkestratörlerinde aynı şekilde kullanılır.
RBAC sıklıkla nitelik tabanlı erişim kontrolü olan ABAC ile karşılaştırılır. RBAC kullanıcının hangi role sahip olduğunu sorar; ABAC ise kullanıcının, kaynağın ve bağlamın departman, belge sahibi veya günün saati gibi niteliklerini değerlendirir. RBAC'ı anlamak ve denetlemek daha basittir, ancak büyük kuruluşlar rol patlaması (role explosion) denen bir sorunla, fazla sayıda dar kapsamlı rolle karşılaşabilir.
Önemli noktalar
- İzinler rollere bağlanır ve kullanıcılar rol atanarak izin kazanır.
- RBAC, kimlik doğrulamadan sonra gerçekleşen bir yetkilendirme biçimidir.
- En az ayrıcalık, her role yalnızca ihtiyaç duyduğu izinleri vermek demektir.
- Bir kullanıcının erişimini değiştirmek genellikle bireysel izinleri değil, rolünü değiştirmek demektir.
- Roller tek başına yeterince ince taneli olmadığında ABAC, nitelik tabanlı kurallar ekler.
Örnek
// Each role maps to a set of permissions
const rolePermissions: Record<string, string[]> = {
viewer: ["invoice:read"],
editor: ["invoice:read", "invoice:update"],
admin: ["invoice:read", "invoice:update", "invoice:delete"],
};
function can(userRoles: string[], permission: string): boolean {
return userRoles.some((role) => rolePermissions[role]?.includes(permission));
}
console.log(can(["editor"], "invoice:update")); // true
console.log(can(["viewer"], "invoice:delete")); // falseSık sorulan sorular
RBAC ile ABAC arasındaki fark nedir?
RBAC, erişimi kullanıcının sahip olduğu rollere, örneğin admin veya editor'a göre verir. Nitelik tabanlı erişim kontrolü olan ABAC ise kullanıcının, kaynağın ve bağlamın departman ya da günün saati gibi niteliklerine göre karar verir; bu daha esnektir ama yönetimi daha zordur.
RBAC kimlik doğrulama mı, yetkilendirme mi?
RBAC yetkilendirmedir. Kimlik doğrulama önce kullanıcının kim olduğunu doğrular, RBAC ise rollerine göre o kullanıcının neler yapabileceğine karar verir.
Rol patlaması (role explosion) nedir?
Rol patlaması, bir kuruluşun özel durumlar için dar kapsamlı roller oluşturmaya devam edip yüzlerce role ulaştığı ve kimin neye erişebildiğini kimsenin söyleyemediği durumda ortaya çıkar. Düzenli erişim incelemeleri ve RBAC'ı nitelik tabanlı kurallarla birleştirmek bunu önlemeye yardımcı olur.
İlgili sayfalar
- YetkilendirmeGüvenlik, s. 48Yetkilendirme, kimliği doğrulanmış bir kullanıcının ya da servisin hangi verileri okuyabileceğine, değiştirebileceğine veya silebileceğine karar vermektir.
- Kimlik DoğrulamaGüvenlik, s. 19Kimlik doğrulama, bir kullanıcının, cihazın veya servisin gerçekten iddia ettiği kişi olduğunu, örneğin parola ya da passkey kontrol ederek doğrulama işlemidir.
- Zero TrustGüvenlik, s. 49Zero trust, varsayılan olarak hiçbir kullanıcı, cihaz veya ağa güvenmeyip her isteği kimliğe, cihaz sağlığına ve bağlama göre doğrulayan güvenlik modelidir.
- SSOGüvenlik, s. 40SSO, kullanıcının merkezi bir kimlik sağlayıcıyla bir kez oturum açıp birçok ayrı uygulamaya yeniden kimlik bilgisi girmeden erişmesini sağlar.
- OAuthGüvenlik, s. 21OAuth, bir uygulamanın kullanıcının parolasını hiç görmeden başka bir servisteki verilerine erişmesini sağlayan açık bir yetkilendirme standardıdır.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin