Overview
Casbin, çeşitli erişim kontrol modelleri destekleyen güçlü ve verimli bir açık kaynak erişim kontrol kütüphanesidir ve yetkilendirmeyi her alanda uygulamak için kullanılır.
Bir dizi kuralı uygulamak, konuları, nesneleri ve istenen izin verilen eylemi (veya ihtiyaçlarınıza göre başka bir formatta) bir policy dosyasında listelemek kadar basittir. Bu, Casbin'in kullanıldığı tüm akışlarda eş anlamlıdır. Geliştirici/yönetici, yetkilendirme için düzen, yürütme ve koşullar üzerinde tam kontrole sahiptir ve bunlar model dosyası aracılığıyla belirlenir. Casbin, verilen policy ve model dosyalarına göre gelen bir isteği doğrulamak için bir Enforcer sağlar.
Casbin Tarafından Desteklenen Diller
Casbin, çeşitli programlama dilleri için destek sağlar ve herhangi bir proje ve iş akışı içinde entegre edilmeye hazırdır:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Üretime Hazır | Üretime Hazır | Üretime Hazır | Üretime Hazır |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Üretime Hazır | Üretime Hazır | Üretime Hazır | Üretime Hazır |
Farklı Diller İçin Özellik Seti
Casbin'in tüm diller için aynı özellik setine sahip olmasını sağlamak için her zaman en iyisini yapmaya çalışıyoruz. Ancak, gerçeklik o kadar güzel değil.
Özellik | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Not - ✅, Gözcü veya Rol Yöneticisi için sadece çekirdek kütüphanede arayüzün bulunduğu anlamına gelir. Bu, bir gözcü veya rol yöneticisi uygulamasının mevcut olup olmadığını göstermez.
Casbin nedir?
Casbin, belirli bir nesne
veya varlığın belirli bir kullanıcı veya konu
tarafından erişilmesini istediğimiz akışlarda kullanılabilen bir yetkilendirme kütüphanesidir. Erişim türü, yani action
, Casbin'in en yaygın kullanıldığı şekli budur ve buna "standart"
Casbin, standart akış dışında birçok karmaşık yetkilendirme senaryosunu da yönetebilir. Roller (RBAC), öznitelikler (ABAC) vb. eklemeler yapılabilir.
Casbin'in Yaptığı Şey
- Politikayı klasik
{ subject, object, action }
formunda veya tanımladığınız özelleştirilmiş bir formda uygula. Hem izin verme hem de reddetme yetkilendirmeleri desteklenmektedir. - Erişim kontrol modelinin ve politikasının depolanmasını yönetir.
- Rol-kullanıcı eşleşmelerini ve rol-rol eşleşmelerini (RBAC'deki rol hiyerarşisi olarak adlandırılır) yönetir.
root
veyaadministrator
gibi yerleşik süper kullanıcıları destekler. Bir süper kullanıcı, açık izinler olmadan her şeyi yapabilir.- Kural eşleştirmeyi desteklemek için birden fazla yerleşik operatör sağlayın. Örneğin,
keyMatch
bir kaynak anahtarı/foo/bar
'ı/foo*
kalıbına eşleyebilir.
Casbin'in YapMADIĞI ŞEYLER
- Kimlik Doğrulama (yani bir kullanıcı giriş yaptığında
kullanıcı adı
veşifre
doğrulama) - Kullanıcıların veya rollerin listesini yönetme.
Projelerin kullanıcılarının, rolleri veya şifrelerinin listelerini yönetmeleri daha uygundur. Kullanıcıların genellikle şifreleri vardır ve Casbin şifre kapsayıcısı olarak tasarlanmamıştır. Ancak, Casbin RBAC senaryosu için kullanıcı-rol eşleştirmesini saklar.