OpenFGA 1.0 发布:云原生授权系统的新里程碑
Auth0 发布了 OpenFGA 1.0 版本,这是一个开源授权服务器,专为细粒度访问控制场景设计。该版本标志着 OpenFGA API 的稳定性及其生产部署的成熟性。
OpenFGA 与 Auth0 FGA 的关系
OpenFGA 是 Auth0 授权即服务产品 Auth0 FGA 的核心引擎。Auth0 FGA 于 2021 年 12 月作为开发者社区预览版发布,旨在帮助开发者在规模化场景下实现细粒度访问控制。
基于 Google Zanzibar 的设计
Auth0 FGA 基于 Google 的 Zanzibar 授权服务,该服务为全球所有 Google 产品提供访问控制,并成为 Google Cloud IAM 的基础。Google 在 2019 年的一篇论文中分享了 Zanzibar 的核心数据模型和架构,随后出现了多个实现,如 Keto、SpiceDB、Carta 和 Auth0 FGA。
OpenFGA 的核心概念
OpenFGA 的核心是授权模型语言和关系元组。授权模型语言允许灵活定义域中的实体、权限适用的对象以及它们之间的关系。关系元组则表示实体和对象之间的具体关系。
示例:文档分享场景
以下是一个文档分享场景的授权模型示例:
model
schema 1.1
type document
relations
define viewer: [domain#member,user]
define commenter: [domain#member,user]
define editor: [domain#member,user]
define owner: [domain#member,user]
type domain
relations
define member: [user]
type user基于该模型,可以定义具体的关系元组:
[
{
"user": "user:anne",
"relation": "editor",
"object": "document:new-roadmap",
},
]OpenFGA 的使用方式
授权模型和关系元组可以通过 API 或语言特定的 SDK 添加到 OpenFGA 服务器中。应用程序可以使用 Check API 来评估关系。
生产环境中的持久化存储
虽然 OpenFGA 服务器可以在内存中存储授权模型和关系元组,但生产环境需要持久化存储,OpenFGA 通过适配器支持 MySQL 或 PostgreSQL 数据库。
开源的原因与长期发展
Auth0 产品经理 Andrés Aguiar 解释了 OpenFGA 开源的原因,认为围绕细粒度授权系统构建一个大型生态系统是一个机会,Auth0/Okta 作为身份访问管理领域的领导者,有能力和资源长期投资于该项目。
CNCF 沙盒项目
为了加速社区采用,OpenFGA 被提交为 Cloud Native Computing Foundation (CNCF) 沙盒项目,并于 2022 年 9 月被接受。
与 Open Policy Agent (OPA) 的比较
OpenFGA 通常与 Open Policy Agent (OPA) 进行比较。两者都提供了灵活的声明性语言来定义访问控制模型,但主要区别在于建模范式。OpenFGA 基于关系型访问控制 (ReBAC),而 OPA 支持基于属性的访问控制 (ABAC) 和基于角色的访问控制 (RBAC)。
开源许可与维护
OpenFGA 服务器及其 SDK 在 GitHub 上维护,并以 Apache 2.0 开源许可证发布。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。