Zanzibar: Google's Consistent, Global Authorization System
Ruoming Pang, Ramon Caceres, Mike Burrows, et al.2019USENIX ATC 2019
Read it on usenix.org(opens in a new tab)Why this one
Most authorization systems start as if statements and become folklore. Zanzibar is the paper to read when you want permissions to be a product surface, not a pile of checks hidden in services. The key move is modeling access as relationships between users, objects, and groups, then making those checks run against a globally replicated system without lying about freshness. People often copy the graph idea and miss the harder part: the consistency token. If a user removes someone from a document, the next permission check must not race against an old replica and let the old access through. Read this after Spanner: Google's Globally-Distributed Database and Time, Clocks, and the Ordering of Events in a Distributed System. It shows what their time and consistency ideas buy you in a real API that every engineer can understand.
What to take away
- Authorization tuples turn ACLs, groups, ownership, and sharing into one queryable relationship model.
- Zookies let clients ask for checks that are at least as fresh as a known write.
- The paper separates policy semantics from serving mechanics, which is why the design scales across products.
Reads with
- Spanner: Google's Globally-Distributed Database
zookies are spanner-style external consistency made visible in an auth api
- Time, Clocks, and the Ordering of Events in a Distributed System
its ordering model is the foundation for avoiding stale permission checks