Auth0发布了 OpenFGA 的 1.0 版,这是一个用于细粒度访问控制用例的开源授权服务器。此版本表明 OpenFGA 的 API 的稳定性及其对生产部署的准备。
开放式细粒度授权 (OpenFGA) 是 Auth0 的授权即服务产品Auth0 FGA的核心引擎。Auth0 FGA 于 2021 年 12 月作为开发者社区预览版发布,旨在帮助开发者提供大规模的细粒度访问控制。Auth0 FGA 基于 Google 的Zanzibar 授权服务,支持全球所有 Google 产品的访问控制,是Google Cloud IAM的基础。在 2019 年发布的一篇论文中,Google 分享了 Zanzibar 的核心数据模型和架构,之后进行了一些实现,例如Keto、SpiceDB、Carta然后是 Auth0 FGA。在 Auth0 FGA 推出几个月后,其核心引擎和 SDK作为OpenFGA 项目发布。
Zanzibar 设计的核心,因此也是 OpenFGA 设计的核心,是授权模型语言和关系元组。授权模型语言支持对域中的实体、可以应用权限的对象以及它们之间可能的关系进行灵活定义。下面显示了文档共享用例的示例:
定义授权模型后,可以指定表示实体和对象之间关系的具体实例的关系元组。下面是一个基于先前文档共享用例的关系元组:
授权模型和关系元组可以通过其API或特定语言的 SDK添加到 OpenFGA 服务器。一旦这些就绪,应用程序就可以使用 Check API 来评估关系。下面显示了一个使用 Go SDK 的示例:
虽然 OpenFGA 服务器可以在内存中存储授权模型和关系元组,但生产用例需要持久存储,它通过适配器提供给 MySQL 或 PostgreSQL 数据库。
鉴于 OpenFGA 是 Auth0 产品的核心部分,人们经常会问到它开源的原因及其作为一个项目的潜在寿命。作为回应,Auth0 产品经理 Andrés Aguiar写道:“我们相信有机会围绕细粒度授权系统创建一个大型生态系统……[Auth0/Okta] 是身份访问管理领域的领导者,是受到成千上万客户的信任,与云无关,并且有能力长期投资该产品。” 为了进一步加速其在社区中的采用,OpenFGA 被提出作为云原生计算基金会 (CNCF) 沙盒项目,并于 2022 年 9 月被接受。
由于 OpenFGA 专注于支持开发可通过 API 查询的授权模型,因此通常将其与Open Policy Agent (OPA) 进行比较。虽然这两种产品都为访问控制模型提供了灵活的声明性语言,但主要区别在于建模范例。OpenFGA 以基于关系的访问控制(ReBAC) 模型为中心,而 OPA 允许定义基于属性的访问控制(ABAC) 和基于角色的访问控制(RBAC) 模型。OpenFGA 服务器及其 SDK 在GitHub上维护,并在 Apache 2.0 开源许可下发布。