跳转至主要内容

Casbin RBAC vs. RBAC96

Casbin RBAC和RBAC96

在这份文档中,我们将比较Casbin RBAC和RBAC96

Casbin RBAC支持RBAC96的几乎所有功能,并在此基础上增加了新的功能。

RBAC版本支持级别描述
RBAC0完全支持RBAC0是RBAC96的基础版本。 它明确了用户、角色和权限之间的关系。
RBAC1完全支持RBAC1在RBAC0的基础上增加了角色层次结构。 这意味着,如果alicerole1role1role2,那么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

    如果你使用Casbin Enforcer的实例调用GetAllSubjects()方法:

    e.GetAllSubjects()

    返回值将是:

    [admin alice]

    这是因为在Casbin中,主题包括用户和角色。

    然而,如果你调用GetAllRoles()方法:

    e.GetAllRoles()

    返回值将是:

    [admin]

    从这里,你可以看出在Casbin中,用户和角色是有区别的,但它并不像在RBAC96中那么明显。 当然,你可以在你的策略中添加前缀,如user::alicerole::admin来明确它们的关系。

  2. Casbin RBAC提供的权限比RBAC96更多。

    RBAC96只定义了7种权限:读、写、追加、执行、信用、借记和查询。

    然而,在Casbin中,我们将权限视为字符串。 这使你能够创建更适合你需求的权限。

  3. Casbin RBAC支持域。

    在Casbin中,你可以基于域进行授权。 这个功能使你的访问控制模型更加灵活。