跳到主要内容

2025 年的 Casbin:面向 AI Agent 时代的授权

· 阅读需 5 分钟
Yang Luo
Creator of Casbin

2024 年是 AI agent 从演示走向生产的一年。Model Context Protocol (MCP) 已被 Google、OpenAI、Microsoft 等众多公司采用,应用程序与外部服务交互的方式正在发生变化。这种转变带来了一系列新的授权挑战,这也是我们 Casbin 团队一直在努力解决的问题。

世界已经改变​

当我们在 2017 年启动 Casbin 时,典型的授权场景非常直接:用户发起请求,我们检查其是否有权限,完成。如今呢?一个 AI agent 可能代表用户行动,调用多个 MCP server,每个服务器都有自己的工具权限,而整个过程需要在边缘以毫秒级速度完成。

MCP 规范现在将 MCP server 归类为 OAuth 2.0 Resource Servers(2025 年 6 月更新),具有诸如 mcp:tools:weather 或 mcp:resources:customer-data:read 这样的细粒度 scope。这正是 Casbin 为之设计的细粒度权限模型;但与 MCP 和 OAuth 的集成仍需更多工作。

我们正在做什么​

MCP Server 授权​

这是我们的主要关注领域之一。当 AI agent 调用 MCP server 时,服务器必须决定:这个 agent 能否代表这个用户使用这些参数调用这个工具?

传统的 RBAC 是不够的。你需要类似 ABAC 的东西——例如“这个 agent 是否被允许在工作时间访问 Alice 所在区域的客户数据?”我们正在探索如何用 Casbin 的策略模型来表达这些约束。

难点在于:MCP server 必须非常快速地做出决策。我们正在研究在 MCP server 进程内进行轻量级的策略评估,而不是调用单独的授权服务。

边缘优先授权​

Cloudflare Workers、Deno Deploy、Vercel Edge Functions——边缘计算领域已经爆发式增长。在 2025 年,低于 50ms 的响应时间是基本要求,你无法承受为了向中心服务器进行授权检查而增加 100ms 的延迟。

这促使我们重新思考 Casbin 的工作方式。我们能否将策略编译为 WebAssembly 并在 V8 isolate 中直接运行?我们能否在保持一致性的同时在边缘进行智能策略缓存?这些都是难题,我们还没有所有的答案,但这是未来的方向。

我们对 Cloudflare Workers 生态系统特别感兴趣——他们构建了一个完整的平台来支持带有内置 OAuth 支持的 MCP server。在那里实现原生的 Casbin 集成可能会非常强大。

RAG Pipeline 授权​

一个反复出现的主题:企业构建 RAG 系统,其中 LLM 必须访问内部文档,但每个用户只能看到他们有权查看的文档。

OWASP Top 10 for LLM Applications 2025 将“敏感信息泄露”列为主要风险。解决方案不仅是过滤输出,还要确保 LLM 永远不检索用户无权访问的文档。

因此,授权必须发生在向量存储查询层面。我们正在研究如何将 Casbin 策略转换为向量数据库的元数据过滤器——即权限检查变成推送到检索层的 WHERE 子句。

多 Agent 场景​

在链式多 agent 场景中(例如 coding agent → deployment agent → monitoring agent),权限委托很棘手。每个 agent 可能有不同的能力,你必须追踪整个链条。

OAuth 的 On-Behalf-Of (OBO) 流程涵盖了部分情况,但对于“agent B 能否代表 agent A 进而代表用户 alice 执行 X”的逻辑需要一个清晰的模型。Casbin 的角色层次结构和域 RBAC 可以扩展到 agent 层次结构;我们正在梳理其中的语义。

传统路线图内容​

当然,我们没有放弃基础工作。列表中的一些实际事项包括:

语言实现跟进 - SwiftCasbin 和 Lua-Casbin 在功能上仍落后于 Go 和 Node.js 版本。in 运算符、WatcherEx、g 函数的更好缓存——这些需要在所有地方保持一致。

新框架中间件 - go-zero 一直被要求支持。Rust 的 Poem 越来越受欢迎。Java 的 Play Framework 长期在愿望清单上。

性能工作 - 随着这些新用例的策略变得更加复杂,评估速度变得更加重要。我们需要在所有实现中进行更好的基准测试、分析和优化。

我们还不知道的事情​

AI 代理授权领域发展迅速;我们在实践中不断学习。待解决的问题包括:

  • Casbin 是否应该为“代理身份”与“用户身份”提供一等公民原语?
  • 如何处理通过 MCP 动态发现的工具的授权问题?
  • 当策略可能依赖于实时上下文时,正确的缓存策略是什么?

如果您正在该领域构建应用并遇到授权难题,我们希望能听到您的声音。最佳功能往往源于真实的使用场景。

参与贡献​

多年来,我们一直是 GSoC 组织,这些与 AI 相关的主题非常适合暑期项目。您无需等待 GSoC——如果这听起来很有趣,请在 Discord 上联系我们或在 GitHub 上提交 issue。

未来几年,授权领域将充满变化。问题变得更加棘手,但也更加有趣。我们很高兴能一起探索解决方案。

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