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如果你使用Casbin Enforcer的实例调用
GetAllSubjects()
方法:e.GetAllSubjects()
返回值将是:
[admin alice]
这是因为在Casbin中,主题包括用户和角色。
然而,如果你调用
GetAllRoles()
方法:e.GetAllRoles()
返回值将是:
[admin]
从这里,你可以看出在Casbin中,用户和角色是有区别的,但它并不像在RBAC96中那么明显。 当然,你可以在你的策略中添加前缀,如
user::alice
和role::admin
来明确它们的关系。Casbin RBAC提供的权限比RBAC96更多。
RBAC96只定义了7种权限:读、写、追加、执行、信用、借记和查询。
然而,在Casbin中,我们将权限视为字符串。 这使你能够创建更适合你需求的权限。
Casbin RBAC支持域。
在Casbin中,你可以基于域进行授权。 这个功能使你的访问控制模型更加灵活。