Google Zanzibar

Zanzibar 是一个授权系统，由Google开发，用于管理访问控制。它最早亮相于 2019 年的USENIX年度技术大会上发表的一篇研究论文。Zanzibar 为多项 Google 服务提供 授权/鉴权 支持，包括Google 云端硬盘、 Google 相册和YouTube 。 

 概览 
Zanzibar 作为一个授权服务运行，处理来自客户端应用程序的访问控制查询，并以关系元组的形式保存访问控制列表(ACL)，这些元组遵循 基于关系的访问控制(ReBAC) 模型。每个元组代表一个主体 (subject)、一个关系(relation)和一个客体(object)。该系统旨在为拥有海量用户的应用程序提供一致性、容错性和可扩展性。 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 架构 
Zanzibar 的架构包括几个核心组件： Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 分布式数据库：构建与 Google Spanner 之上，以维护跨数据中心的数据一致性。
 缓存层：使用服务器级缓存和服务间缓存来降低延迟。
 全球复制：跨地理区域复制授权数据，以提高可用性。
 命名空间配置：客户端服务定义对象类型、关系和授权规则。
 解耦逻辑：诸如“用户 X 对对象 Z 是否拥有权限 Y？”之类的查询返回布尔值结果。

 性能 
该系统使用缓存预取 (cache prefetching) 和对频繁访问权限的选择性失效 (selective invalidation) 等技术来减少延迟。 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 与 ReBAC 的关系 
Zanzibar 采用基于关系的访问控制(ReBAC)，其中授权决策取决于实体之间的关系，而不是预定义的角色。相比之下，基于角色的访问控制(RBAC) 则根据分配给用户的角色来分配权限。在 Google Zanzibar 的案例中，ReBAC 实现了动态访问控制，可用于文件共享和文档管理系统等协作环境中。 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 行业影响 
Zanzibar 的研究论文影响了其他基于 ReBAC 原则的授权系统的设计。例子包括 Airbnb 的内部系统 Himeji 和几个采用类似模型的开源项目。 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 局限性 
实现一个类似 Zanzibar 的系统需要大量的工程和基础设施资源。维护 复制、缓存和模式 (schema)  配置会增加运维复杂性。

Zanzibar 使用的ReBAC关系模型在处理（复杂的）策略逻辑时可能存在局限，因而需要与额外的策略引擎或基于规则的引擎相集成。 Pang, Ruoming; Caceres, Ramon; Burrows, Mike; Chen, Zhifeng; Dave, Pratik; Germer, Nathan; Golynski, Alexander; Graney, Kevin; Kang, Nina; Kissner, Lea; Korn, Jeffrey L. (2019). "Zanzibar: Google's Consistent, Global Authorization System". 2019 USENIX Annual Technical Conference (USENIX ATC '19). Renton, WA.

 另请参阅 

 基于关系的访问控制
 基于角色的访问控制
 基于属性的访问控制
 Google Spanner

 参考 

Category:Google
Category:计算机安全模型
Category:存取控制