Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
casbin — 强制执行 ACL、RBAC、ABAC 和自定义访问控制模型的授权库,为应用程序和服务提供 RESTful 匹配与策略管理 API。 | Kitploit
工具/GitHubGitHub/apache/casbin
身份验证与授权身份管理身份与访问管理 (IAM)API 安全
GitHubapache/casbin

casbin

强制执行 ACL、RBAC、ABAC 和自定义访问控制模型的授权库,为应用程序和服务提供 RESTful 匹配与策略管理 API。

查看仓库网站
20.3k1.8k2天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Apache Casbin

Lint Build Coverage Status Godoc Release Discord

新闻:还在担心如何编写正确的 Apache Casbin 策略吗?Apache Casbin online editor 即将为你提供帮助!请访问:https://casbin.apache.org/editor/

Casbin 标志

Apache Casbin 是一个强大且高效的开源访问控制库,适用于 Golang 项目。它支持基于各种访问控制模型来执行授权。

Apache Casbin 支持的所有语言:

目录

  • 支持的模型
  • 工作原理
  • 功能
  • 安装
  • 文档
  • 在线编辑器
  • 教程
  • 快速开始
  • 策略管理
  • 策略持久化
  • 多节点策略一致性
  • 角色管理器
  • 基准测试
  • 示例
  • 中间件
  • 我们的采用者

支持的模型

  1. ACL(访问控制列表)
  2. 带有超级用户的 ACL
  3. 无用户的 ACL:对于没有认证或用户登录的系统尤其有用。
  4. 无资源的 ACL:某些场景可能通过 write-article、read-log 等权限针对某一类资源而非单个资源。它不控制对特定文章或日志的访问。
  5. RBAC(基于角色的访问控制)
  6. 带资源角色的 RBAC:用户和资源可以同时拥有角色(或组)。
  7. 带域名/租户的 RBAC:用户可以在不同的域名/租户下拥有不同的角色集合。
  8. ABAC(基于属性的访问控制):可以使用 resource.Owner 之类的语法糖来获取资源的属性。
  9. RESTful:支持 /res/*、/res/:id 等路径以及 GET、POST、PUT、DELETE 等 HTTP 方法。
  10. 拒绝覆盖:同时支持允许和拒绝授权,拒绝优先于允许。
  11. 优先级:策略规则可以像防火墙规则一样设置优先级。

工作原理

在 Casbin 中,访问控制模型被抽象为基于 PERM 元模型(Policy、Effect、Request、Matchers) 的 CONF 文件。因此,切换或升级项目的授权机制就像修改配置一样简单。你可以通过组合现有模型来定制自己的访问控制模型。例如,你可以在同一个模型中同时使用 RBAC 角色和 ABAC 属性,并共享一组策略规则。

Casbin 中最基础、最简单的模型是 ACL。ACL 的模型 CONF 如下:

root@kitploit:~
# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act

# Policy effect
[policy_effect]
e = some(where (p.eft == allow))

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

ACL 模型的示例策略如下:

root@kitploit:~
p, alice, data1, read
p, bob, data2, write

这意味着:

  • alice 可以读取 data1
  • bob 可以写入 data2

我们还支持通过在末尾附加 '\' 来使用多行模式:

root@kitploit:~
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \
  && r.act == p.act

此外,如果你使用的是 ABAC,可以在 Casbin golang 版(尚不支持 jCasbin 和 Node-Casbin)中尝试如下所示的 in 运算符:

root@kitploit:~
# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

但你必须确保数组的长度大于 1,否则会导致 panic。

如需更多运算符,可以查看 govaluate

功能

Apache Casbin 可以做到:

  1. 以经典的 {subject, object, action} 形式或你定义的自定义形式执行策略,同时支持允许和拒绝授权。
  2. 处理访问控制模型及其策略的存储。
  3. 管理角色-用户映射和角色-角色映射(即 RBAC 中的角色层级)。
  4. 支持像 root 或 administrator 这样的内置超级用户。超级用户无需显式权限即可执行任何操作。
  5. 提供多种内置运算符来支持规则匹配。例如,keyMatch 可以将资源键 /foo/bar 映射到模式 /foo*。

Apache Casbin 不会做的事情:

  1. 认证(即在用户登录时验证 username 和 password)
  2. 管理用户或角色列表。我认为由项目自身来管理这些实体更为方便。用户通常有自己的密码,而 Apache Casbin 并非为密码容器而设计。不过,Apache Casbin 会为 RBAC 场景存储用户-角色映射。

安装

root@kitploit:~
go get github.com/casbin/casbin/v3

文档

https://casbin.apache.org/docs/overview

在线编辑器

你也可以在 Web 浏览器中使用在线编辑器(https://casbin.apache.org/editor/)来编写 Casbin 模型和策略。它提供 语法高亮 和 代码补全 等功能,就像编程语言的 IDE 一样。

教程

https://casbin.apache.org/docs/tutorials

快速开始

  1. 使用模型文件和策略文件新建一个 Casbin enforcer:

    root@kitploit:~
    e, _ := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv")
    

注意:你也可以使用数据库中的策略而不是文件来初始化 enforcer,详情请参阅策略持久化一节。

  1. 在访问发生前将执行钩子添加到你的代码中:

    root@kitploit:~
    sub := "alice" // the user that wants to access a resource.
    obj := "data1" // the resource that is going to be accessed.
    act := "read" // the operation that the user performs on the resource.
    
    if res, _ := e.Enforce(sub, obj, act); res {
        // permit alice to read data1
    } else {
        // deny the request, show an error
    }
    
  2. 除了静态策略文件外,Apache Casbin 还提供了运行时权限管理 API。例如,你可以像下面这样获取分配给用户的所有角色:

    root@kitploit:~
    roles, _ := e.GetImplicitRolesForUser(sub)
    

更多用法请参阅策略管理 API。

策略管理

Apache Casbin 提供了两组 API 来管理权限:

  • Management API:为 Apache Casbin 策略管理提供全面支持的原始 API。
  • RBAC API:对 RBAC 更友好的 API。该 API 是 Management API 的子集。RBAC 用户可以使用该 API 来简化代码。

我们还提供了一个基于 Web 的 UI,用于模型管理和策略管理:

模型编辑器

策略编辑器

策略持久化

https://casbin.apache.org/docs/adapters

多节点策略一致性

https://casbin.apache.org/docs/watchers

角色管理器

https://casbin.apache.org/docs/role-managers

基准测试

https://casbin.apache.org/docs/benchmark

示例

中间件

用于 Web 框架的授权中间件:https://casbin.apache.org/docs/middlewares

我们的采用者

https://casbin.apache.org/docs/adopters

如何贡献

请阅读贡献指南。

贡献者

这个项目的存在要感谢所有贡献者。

Star 历史

Star 历史图表

许可证

本项目采用 Apache 2.0 许可证 授权。

联系方式

如果你有任何问题或功能请求,请联系我们。欢迎提交 PR。

  • https://github.com/apache/casbin/issues
  • https://discord.gg/S5UjpzGZjN
下载工具
golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
生产就绪生产就绪生产就绪生产就绪
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
生产就绪生产就绪生产就绪生产就绪
模型模型文件策略文件
ACLbasic_model.confbasic_policy.csv
带超级用户的 ACLbasic_model_with_root.confbasic_policy.csv
无用户的 ACLbasic_model_without_users.confbasic_policy_without_users.csv
无资源的 ACLbasic_model_without_resources.confbasic_policy_without_resources.csv
RBACrbac_model.confrbac_policy.csv
带资源角色的 RBACrbac_model_with_resource_roles.confrbac_policy_with_resource_roles.csv
带域名/租户的 RBACrbac_model_with_domains.confrbac_policy_with_domains.csv
ABACabac_model.confN/A
RESTfulkeymatch_model.confkeymatch_policy.csv
拒绝覆盖rbac_model_with_deny.confrbac_policy_with_deny.csv
优先级priority_model.confpriority_policy.csv