Google published Zanzibar: Google’s Consistent, Global Authorization System in 2019. It describes a system for authorization – enforcing who can do what – which maxes out both flexibility and scalability. Google has lots of different apps that rely on Zanzibar, and bigger scale than practically any other company, so it needed Zanzibar.The Zanzibar paper made quite a stir. There are at least four companies that advertise products as being inspired by or based on Zanzibar. It says a lot for everyone to loudly reference this paper on homepages and marketing materials: companies aren’t advertising their own innovation as much as simply saying they’re following the gospel.A short list of companies & OSS products I found:I read the paper, and have a few notes, but the Google Zanzibar Paper, annotated by AuthZed is the same thing from a real domain expert (albeit one who works for one of these companies), so read that too, or instead.FeaturesMy brief summary is that the Zanzibar paper describes the features of the system succinctly, and those features are really appealing. They’ve figured out a few primitives from which developers can build really flexible authorization rules for almost any kind of application. They avoid making assumptions about ID formats, or any particular relations, or how groups are set up. It’s abstract and beautiful.The gist of the system is:Objects: things in your data model, like documentsUsers: needs no explanationNamespaces: for isolating applicationsUsersets: groups of usersUserset rewrite rules: allow usersets to inherit from each other or have other kinds of set relationshipsTuples, which are like (object)#(relation)@(user), and are sort of the core ‘rule’ construct for saying who can access whatThere’s then a neat configuration language which looks like this in an example:name: "doc" relation { name: "owner"} relation { name: "editor" userset_rewrite { union { child { _this f } } child { computed_userset { relation: "owner" } } relation { na...
First seen: 2025-05-04 19:49
Last seen: 2025-05-04 20:49