Earlier quoted context omitted.
This is absolutely incredible. Since we saw login with Apple yesterday, makes me wonder if any of the other big companies can compete with this. Curious about Facebook/Netflix/Amazon. Netflix seems zippy, but I've never looked at the request timings, which could differ pretty dramatically from UI load times. I imagine Google also dwarfs their login scale. Would be interesting to see numbers capturing full load time f…
In addition to what the neighbor comment says about authorization, an ACL is an internal service: it provides an “if (the user is allowed to X) then ...” to the business logic code. It's not a user-facing service.
Zanzibar: Consistent, Global Authorization System
101–110 of 137 posts
Re: Zanzibar: Consistent, Global Authorization System
#102Not sure how I feel about adopting a countries name for a project. Or more to the point I'm not sure how I would feel if every time I searched my countries name on the web this Google project appears rather than my actual country. i.e Zanzibar is a national identity not just a "spice" island
Re: Zanzibar: Consistent, Global Authorization System
#103Not sure how I feel about adopting a countries name for a project. Or more to the point I'm not sure how I would feel if every time I searched my countries name on the web this Google project appears rather than my actual country. i.e Zanzibar is a national identity not just a "spice" island
Re: Zanzibar: Consistent, Global Authorization System
#104Earlier quoted context omitted.
Throwing servers at the problem is less impressive then thinking very hard and solving it with less.
there's physical limit as what algorithms and tricks can do. Their numbers are incredible though.
Re: Zanzibar: Consistent, Global Authorization System
#105I love reading about Google's systems, but I wish I could work on those problems at scale, that is my dream really. I wonder what more systems Google has that we don't know about. I know Borg has become what we know as k8s but surely there must be more things that Google has made internally that are not open source. Curious about this and would like to know more about it from anyone in the trenches at Google.
The harsh truth of working at Google is that in the end you are moving protobufs from one place to another. They have the most talented people in the world but those people still have to do some boring engineering work.
Maybe there's a place, somewhere, for the purest-of-the-pure non-boringest thoughts.
Re: Zanzibar: Consistent, Global Authorization System
#106The distinguishing feature I see compared to other systems is the ACL ordering and consistency, which is indeed difficult to do at scale. Looks like Spanner is doing most the heavy lifting, great use case for the database.
Re: Zanzibar: Consistent, Global Authorization System
#107I've built an authz system that is built around labeled security and RBAC concepts. Basically:
- resource owners label resources
- the labels are really names for ACLs in a directory
- the ACL entries grant roles to users/groups
- roles are sets of verbs
There are unlimited verbs, and unlimited roles. There are no negative ACL entries, which means they are sets -- entry order doesn't matter. The whole thing resembles NTFS/ZFS ACLs, but without negative ACL entries, and with indirection via naming the ACLs.ACL data gets summarized and converted to a form that makes access control evaluation fast to compute. This data then gets distributed to where it's needed.
The API consists mainly of:
- check(subject, verb, label) -> boolean
- query(subject, verb, label) -> list of grants
(supports wildcarding)
- list(subject) -> list of grants
- grant(user-or-group, role, label)
- revoke(user-or-group, role, label)
- interfaces for creating verbs, roles, and labels,
and adding/removing verbs from roles.
Note that access granting/revocation is done using roles, while access checking is done using verbs.What's really cool about this system is that because it is simple it is composable. If you model certain attributes of subjects (e.g., whether they are on-premises, remote, in a public cloud, ...) as special subjects, then you can compose multiple check() calls to get ABAC, CORS/on-behalf-of/impersonation, MAC and DAC, SAML/OAuth-style authorization, and more. When I started all I wanted was a labeled security system. It was only later that compositions came up.
Because we built a summarized authz data distribution system first, all the systems that have data will continue to have it even in an outage -- an outage becomes just longer than usual update latencies.
check() performance is very fast, on the order of 10us to 15us, with no global locks, and this could probably be made faster.
check() essentially look's up the subject's group memberships (with the group transitive closure expanded) and the {verb, label}'s direct grantees, and checks if the intersection is empty (access denied) or not (access granted). In the common case (the grantee list is short) this requires N log M comparisons, and in the worst case (the two lists are comparable in size) it requires O(N) comparisons. This means check() performance is naturally very fast when using local authz data. Using a REST service adds latency, naturally, but the REST service itself can be backended with summarized authz data, making it fast. Using local data makes the system reliable and reliably fast.
query() does more work, but essentially amounts to a union of the subject's direct grants and a join of the subject's groups and the groups' direct grants.
special entities like "ANYONE" (akin to Authenticated Users in Windows) and "ANONYMOUS" also exist, naturally, and can be granted. These are treated like groups in the summarized authz data. We also have a "SELF" special entity which allows one to express grants to any subject who is the same as the one running the process that calls check().
Re: Zanzibar: Consistent, Global Authorization System
#108Earlier quoted context omitted.
The harsh truth of working at Google is that in the end you are moving protobufs from one place to another. They have the most talented people in the world but those people still have to do some boring engineering work.
"Larry&Sergey Protobuf Moving Co."
Re: Zanzibar: Consistent, Global Authorization System
#109Excellent paper. As someone who has worked with filesystems and ACLs, but never touched Spanner before, I have some questions for any Googler who has played with Zanzibar. (in part because full-on client systems examples are limited) A check my understanding: Zanzibar is being optimized to handle zookies that are a bit stale (say 10s) old. In this case, the indexing systems (such as Leapord) can be used to vastly acc…
Unfortunately we don't have enough space to explain them in the paper. Please consider coming to Usenix. :-)
Re: Zanzibar: Consistent, Global Authorization System
#110This reminds me I need to get my authz paper published, and now sooner than later... I've built an authz system that is built around labeled security and RBAC concepts. Basically: - resource owners label resources - the labels are really names for ACLs in a directory - the ACL entries grant roles to users/groups - roles are sets of verbs There are unlimited verbs, and unlimited roles. There are no negative ACL entrie…