跳转至主要内容

RBAC vs. RBAC96

Casbin RBAC和RBAC96​

本页对比 Casbin 的 RBAC 与 RBAC96 模型。 Casbin 支持 RBAC96 的主要思想,并增加了域和灵活的权限。

RBAC96Casbin 的支持情况说明
RBAC0✅ 完全支持用户、角色、权限及其关系。
RBAC1✅ 完全支持角色层级(例如 alice→role1→role2)。
RBAC2⚠️ 部分支持通过 策略效果 实现约束式处理(例如拒绝优先)。不支持数量上的限制。
RBAC3⚠️ 部分支持RBAC1 + RBAC2;约束同上,不支持数量上的限制。

与 RBAC96 的区别​

1. 用户与角色​

Casbin 在类型上不区分“用户”和“角色”,两者都是字符串。因此:

p, admin, book, read
p, alice, book, read
g, amber, admin

GetAllSubjects() 返回策略中作为主体出现的用户和角色([admin alice])。 GetAllRoles() 只返回 g 规则的右侧([admin])。也就是说 Casbin 根据用法推断两者的区别;如果需要严格区分,使用命名约定(例如 user::alice、role::admin)。

2. 权限​

RBAC96 固定了七种权限类型。在 Casbin 中,权限是任意字符串(例如 read、write、approve),可以按你的应用来定。

3. 域​

Casbin 支持 带域的 RBAC,角色和权限可以按租户或域划分,这超出了标准的 RBAC96 模型。

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.