Casbin RBAC vs. RBAC96
Casbin RBAC و RBAC96
في هذا المستند، سنقارن بين Casbin RBAC و RBAC96.
Casbin RBAC يدعم تقريباً جميع ميزات RBAC96 ويضيف ميزات جديدة فوق ذلك.
| إصدار RBAC | مستوى الدعم | الوصف |
|---|---|---|
| RBAC0 | مدعوم بالكامل | RBAC0 هو الإصدار الأساسي من RBAC96. يوضح العلاقة بين المستخدمين والأدوار والأذونات. |
| RBAC1 | مدعوم بالكامل | RBAC1 يضيف تسلسلات الأدوار فوق RBAC0. هذا يعني أنه إذا كان لدى alice role1، و role1 لديه role2، فإن alice ستمتلك أيضاً role2 وترث أذوناته. |
| RBAC2 | التعامل مع الحصرية المتبادلة مدعوم (مثل هذا) | RBAC2 يضيف قيود على RBAC0. هذا يسمح لـ RBAC2 بالتعامل مع السياسات المتبادلة الحصرية. ومع ذلك، الحدود الكمية غير مدعومة. |
| RBAC3 | التعامل مع الحصرية المتبادلة مدعوم (مثل هذا) | RBAC3 هو مزيج من RBAC1 و RBAC2. يدعم تسلسلات الأدوار والقيود الموجودة في RBAC1 و RBAC2. ومع ذلك، الحدود الكمية غير مدعومة. |
الفرق بين Casbin RBAC و RBAC96
-
في Casbin، التمييز بين المستخدم والدور ليس واضحاً كما في RBAC96.
في Casbin، كلاً من المستخدم والدور يعاملان كسلاسل نصية. على سبيل المثال، ضع في اعتبارك ملف السياسة التالي:
p, admin, book, read
p, alice, book, read
g, amber, adminإذا قمت بدعوة الطريقة
GetAllSubjects()باستخدام نموذج Casbin Enforcer:e.GetAllSubjects()ستكون قيمة العودة:
[admin alice]هذا لأنه في Casbin، الموضوعات تشمل كلاً من المستخدمين والأدوار.
ومع ذلك، إذا قمت بدعوة الطريقة
GetAllRoles():e.GetAllRoles()ستكون قيمة العودة:
[admin]من هذا، يمكنك أن ترى أن هناك تمييز بين المستخدمين والأدوار في Casbin، ولكنه ليس حاداً كما في RBAC96. بالطبع، يمكنك إضافة بادئة إلى سياساتك مثل
user::aliceوrole::adminلتوضيح علاقاتهم. -
Casbin RBAC يوفر أذونات أكثر من RBAC96.
RBAC96 يحدد فقط 7 أذونات: القراءة، الكتابة، الإضافة، التنفيذ، الائتمان، الخصم، والاستعلام.
ومع ذلك، في Casbin، نعامل الأذونات كسلاسل نصية. هذا يسمح لك بإنشاء أذونات تناسب احتياجاتك بشكل أفضل.
-
Casbin RBAC يدعم النطاقات.
في Casbin، يمكنك تنفيذ التفويضات بناءً على النطاقات. هذه الميزة تجعل نموذج التحكم في الوصول لديك أكثر مرونة.