التخطي إلى المحتوى الرئيسي

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

  1. في 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 لتوضيح علاقاتهم.

  2. Casbin RBAC يوفر أذونات أكثر من RBAC96.

    RBAC96 يحدد فقط 7 أذونات: القراءة، الكتابة، الإضافة، التنفيذ، الائتمان، الخصم، والاستعلام.

    ومع ذلك، في Casbin، نعامل الأذونات كسلاسل نصية. هذا يسمح لك بإنشاء أذونات تناسب احتياجاتك بشكل أفضل.

  3. Casbin RBAC يدعم النطاقات.

    في Casbin، يمكنك تنفيذ التفويضات بناءً على النطاقات. هذه الميزة تجعل نموذج التحكم في الوصول لديك أكثر مرونة.