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>標籤用不同內容定義了多次