Google Zanzibar
Zanzibar 是一个授权系统,由Google开发,用于管理访问控制。它最早亮相于 2019 年的USENIX年度技术大会上发表的一篇研究论文。Zanzibar 为多项 Google 服务提供 授权/鉴权 支持,包括Google 云端硬盘、 Google 相册和YouTube 。 [1]
概览
[编辑]Zanzibar 作为一个授权服务运行,处理来自客户端应用程序的访问控制查询,并以关系元组的形式保存访问控制列表(ACL),这些元组遵循 基于关系的访问控制(ReBAC) 模型。每个元组代表一个主体 (subject)、一个关系(relation)和一个客体(object)。该系统旨在为拥有海量用户的应用程序提供一致性、容错性和可扩展性。 [1]
架构
[编辑]Zanzibar 的架构包括几个核心组件: [1]
- 分布式数据库:构建与 Google Spanner 之上,以维护跨数据中心的数据一致性。
- 缓存层:使用服务器级缓存和服务间缓存来降低延迟。
- 全球复制:跨地理区域复制授权数据,以提高可用性。
- 命名空间配置:客户端服务定义对象类型、关系和授权规则。
- 解耦逻辑:诸如“用户 X 对对象 Z 是否拥有权限 Y?”之类的查询返回布尔值结果。
性能
[编辑]该系统使用缓存预取 (cache prefetching) 和对频繁访问权限的选择性失效 (selective invalidation) 等技术来减少延迟。 [1]
与 ReBAC 的关系
[编辑]Zanzibar 采用基于关系的访问控制(ReBAC),其中授权决策取决于实体之间的关系,而不是预定义的角色。相比之下,基于角色的访问控制(RBAC) 则根据分配给用户的角色来分配权限。在 Google Zanzibar 的案例中,ReBAC 实现了动态访问控制,可用于文件共享和文档管理系统等协作环境中。 [1]
行业影响
[编辑]Zanzibar 的研究论文影响了其他基于 ReBAC 原则的授权系统的设计。例子包括 Airbnb 的内部系统 Himeji 和几个采用类似模型的开源项目。 [1]
局限性
[编辑]实现一个类似 Zanzibar 的系统需要大量的工程和基础设施资源。维护 复制、缓存和模式 (schema) 配置会增加运维复杂性。
Zanzibar 使用的ReBAC关系模型在处理(复杂的)策略逻辑时可能存在局限,因而需要与额外的策略引擎或基于规则的引擎相集成。 [1]
另请参阅
[编辑]- 基于关系的访问控制
- 基于角色的访问控制
- 基于属性的访问控制
- Google Spanner
参考
[编辑]- ^ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. Zanzibar: Google's Consistent, Global Authorization System. 2019 USENIX Annual Technical Conference (USENIX ATC '19) (Renton, WA). 2019. 引用错误:带有name属性“:0”的
<ref>标签用不同内容定义了多次