• ACL (Access Control List, 访问控制列表)
  • 具有 超级用户 的 ACL
  • 没有用户的 ACL: 对于没有身份验证或用户登录的系统尤其有用。
  • 没有资源的 ACL: 某些场景可能只针对资源的类型, 而不是单个资源, 诸如 write-article, read-log等权限。 它不控制对特定文章或日志的访问。
  • RBAC (基于角色的访问控制)
  • 支持资源角色的RBAC: 用户和资源可以同时具有角色 (或组)。
  • 支持域/租户的RBAC: 用户可以为不同的域/租户设置不同的角色集。
  • ABAC (基于属性的访问控制): 支持利用resource.Owner这种语法糖获取元素的属性。
  • RESTful: 支持路径, 如 /res/*, /res/: id 和 HTTP 方法, 如 GET, POST, PUT, DELETE
  • 拒绝优先: 支持允许和拒绝授权, 拒绝优先于允许。
  • 优先级: 策略规则按照先后次序确定优先级,类似于防火墙规则。

例子

访问控制模型 Model 文件 Policy 文件
ACL basic_model.conf basic_policy.csv
具有超级用户的ACL basic_model_with_root.conf basic_policy.csv
没有用户的ACL basic_model_without_users.conf basic_policy_without_users.csv
没有资源的ACL basic_model_without_resources.conf basic_policy_without_resources.csv
RBAC rbac_model.conf rbac_policy.csv
支持资源角色的RBAC rbac_model_with_resource_roles.conf rbac_policy_with_resource_roles.csv
支持域/租户的RBAC rbac_model_with_domains.conf rbac_policy_with_domains.csv
ABAC abac_model.conf
RESTful keymatch_model.conf keymatch_policy.csv
拒绝优先 rbac_model_with_deny.conf rbac_policy_with_deny.csv
优先级 priority_model.conf priority_policy.csv

原文: https://casbin.org/docs/zh-CN/supported-models