跳转至主要内容

Casbin 与其他方案对比

开源授权工具的思路差别很大。本页把 Casbin 放在最常见的几个替代方案中比较,帮你快速判断哪一类工具适合你的问题。每个链接页面都有更深入的对比,并会说明什么时候另一个工具更合适。

对比对象一句话概括
OpenFGA一个需要你部署的 Zanzibar 式关系服务;Casbin 是你应用内部的一个库。
Open Policy Agent一个使用 Rego 语言的通用策略引擎;Casbin 专注于应用访问控制,策略以数据形式存储。
CASL一个在代码中定义 ability 的 JavaScript 库;Casbin 把规则放在代码之外,并支持多种语言。
Cedar一门带 schema 校验和分析的策略语言;Casbin 提供可配置的模型和庞大的适配器生态。

一览​

下表描述的是各项目 2026 年的情况。做决定前请查阅各项目自己的文档。

CasbinOpenFGAOPACASLCedar
形态嵌入在你的应用中的库提供 HTTP 和 gRPC API 的服务器守护进程或 sidecar,也可作为 Go 库或 WebAssembly库库(Rust 核心,带绑定)
规则写法一个模型文件(.conf)加上按行写的策略规则用 DSL 写的授权模型加上关系元组Rego 程序加上 JSON 数据JavaScript 或 TypeScript 代码Cedar 策略语言加上 schema
主要的访问控制方式ACL、RBAC、ABAC、ReBAC 等,在模型中选择ReBACRego 能表达的任何逻辑对主体做属性和所有权检查RBAC 和 ABAC
原生实现Go、Java、Node.js、Python、.NET、PHP、Rust、C++ 等SDK 调用服务器Go;其他语言调用服务器或使用 WebAssemblyJavaScript 和 TypeScriptRust,另有 Java、Go 和 WebAssembly 选项
规则存放位置通过适配器放在你的数据库中OpenFGA 服务器的数据库加载到内存中的 bundle在应用代码中你存放策略文本的任何地方
运行时修改规则Management API,立即生效Write API发布新的 bundle 或推送数据重新部署,或根据你自己的数据构建 ability替换策略
治理Apache 软件基金会(孵化中)云原生计算基金会(CNCF)云原生计算基金会(CNCF)社区项目,MIT 许可证AWS 开源

Casbin 的特点​

  • 在你的进程内运行。 调用 Enforce() 是一次函数调用,不是网络请求。不需要额外部署任何东西,典型的检查只需几微秒,见 基准测试。
  • 模型就是配置。 同一个引擎可以实现 ACL、RBAC、带域的 RBAC、ABAC、ReBAC 等。从一种切换到另一种只需修改模型文件,不用重写代码。见 支持的模型。
  • 策略是可以管理的数据行。 规则通过 适配器 存放在你现有的数据库中,管理员可以通过 Management API 或 管理后台 在运行时添加或删除。
  • 同一个模型在每种语言中都能用。 为 Go 服务编写的模型和策略,可以原样在 Java、Node.js、Python、.NET、PHP、Rust 或 C++ 中执行。

什么时候其他工具更合适​

  • 你需要 Google Zanzibar 式的关系检查,覆盖数十亿个对象,并集中为很多应用提供服务:看看 OpenFGA。
  • 你需要在 Kubernetes 准入、基础设施配置和服务之间使用同一门策略语言:看看 OPA。
  • 你的应用从头到尾都是 JavaScript,主要想在 UI 组件中做类型安全的权限检查:看看 CASL。
  • 你需要对策略做静态校验和形式化分析:看看 Cedar。

试用 Casbin​

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