跳转至主要内容

Casbin 2025:AI 智能体时代的授权

· 5 分钟阅读
Yang Luo
Creator of Casbin

2024 年是 AI 智能体从演示走向生产的一年。模型上下文协议(MCP)已被 Google、OpenAI、Microsoft 等众多公司采用,应用与外部服务交互的方式正在改变。这一转变带来了一系列新的授权挑战,Casbin 团队一直在研究。

世界变了​

2017 年我们开始做 Casbin 时,典型的授权场景很简单:用户发起请求,我们检查他是否有权限,结束。现在呢?一个 AI 智能体可能代表用户行事,调用多个各有工具权限的 MCP 服务器,而这一切都要在边缘节点上几毫秒内完成。

MCP 规范现在把 MCP 服务器归类为 OAuth 2.0 资源服务器(2025 年 6 月更新),使用 mcp:tools:weather 或 mcp:resources:customer-data:read 这样的细粒度 scope。这正是 Casbin 擅长的细粒度权限模型;但与 MCP 和 OAuth 的集成仍需要更多工作。

我们在做什么​

MCP 服务器授权​

这是我们的重点方向之一。 AI 智能体调用 MCP 服务器时,服务器必须判断:这个智能体能否代表这个用户、用这些参数调用这个工具?

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

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

边缘优先的授权​

Cloudflare Workers、Deno Deploy、Vercel Edge Functions:边缘计算领域发展迅猛。在 2025 年,50 毫秒以内的响应时间是基本要求,你承担不起为了向某个中心服务器做一次授权检查而多花 100 毫秒。

这促使我们重新思考 Casbin 的工作方式。能不能把策略编译成 WebAssembly,直接在 V8 isolate 中运行?能不能在保持一致性的同时,在边缘做智能的策略缓存?这些都是难题,我们还没有全部答案,但这是发展的方向。

我们对 Cloudflare Workers 生态特别感兴趣:他们为 MCP 服务器搭建了一整套平台,并内置 OAuth 支持。在那里做一个原生的 Casbin 集成可能会很有价值。

RAG 管道授权​

一个反复出现的场景:企业构建 RAG 系统,LLM 需要访问内部文档,但每个用户只能看到自己有权看的文档。

《OWASP LLM 应用十大风险 2025》把“敏感信息泄露”列为主要风险。解决办法不只是过滤输出,而是要确保 LLM 从一开始就不会检索到用户无权访问的文档。

所以授权必须发生在向量库查询这一层。我们在研究把 Casbin 策略转换成向量数据库的元数据过滤条件,也就是把权限检查变成下推到检索阶段的 WHERE 子句。

多智能体场景​

当多个智能体串成一条链(例如编码智能体 → 部署智能体 → 监控智能体)时,权限委托会很棘手。每个智能体的能力可能不同,而且必须跟踪完整的调用链。

OAuth 的 On-Behalf-Of(OBO)流程能解决一部分,但“智能体 B 能否代表智能体 A、再代表用户 alice 执行 X”这样的逻辑需要一个清晰的模型。 Casbin 的角色层级和带域的 RBAC 可以扩展到智能体层级,我们正在梳理其中的语义。

传统路线图上的事情​

当然,我们不会放下基础工作。我们清单上的一些实际事项:

各语言实现补齐功能:与 Go 和 Node.js 版本相比,SwiftCasbin 和 Lua-Casbin 的功能仍有差距。 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.