The downside to this approach is that it requires some planning and to maintain in code what mask retrieves what permission(s).
Permission Systems for Enterprise That Scale
21–30 of 39 posts
Re: Permission Systems for Enterprise That Scale
#22Strange the article proposes itself for "Enterprise" yet has no mention of Google's Zanzibar and how it compares to the other approaches. AFAIK it doesn't use pre-computed values but just queries really fast (using Spanner so there's that)
If you are interested in Zanzibar and Relationship-Based Access Control (ReBAC) it’s worth taking a look at OpenFGA https://openfga.dev/
- SpiceDB (https://github.com/authzed/spicedb)
- Permify (https://github.com/Permify/permify)
- Warrant (https://github.com/warrant-dev/warrant)
- Ory Keto (https://github.com/ory/keto)Re: Permission Systems for Enterprise That Scale
#23Re: Permission Systems for Enterprise That Scale
#24Strange the article proposes itself for "Enterprise" yet has no mention of Google's Zanzibar and how it compares to the other approaches. AFAIK it doesn't use pre-computed values but just queries really fast (using Spanner so there's that)
Can you let me know how would you for example query all accessible resources for a user using Google's Zanzibar?
We have a guide on doing ACL-aware filtering and listing [2] with this API and describing other approaches for larger Enterprise scales
Disclaimer: I'm the co-founder and CTO of AuthZed, we develop SpiceDB, and I wrote our most recent implementation of LookupResources
[1]: https://buf.build/authzed/api/docs/main:authzed.api.v1#authz... [2]: https://authzed.com/docs/spicedb/modeling/protecting-a-list-...
Re: Permission Systems for Enterprise That Scale
#25Earlier quoted context omitted.
Can you let me know how would you for example query all accessible resources for a user using Google's Zanzibar?
Related: if anyone has a method of achieving this query against GCP resources I'd be keen to learn that as well.
One of the major benefits of a centralized authorization system is allowing for permissions queries across resources and subjects from multiple different services/sources (of course, with the need to synchronize the data in)
Happy to expand on how some users do so, if you're curious.
Re: Permission Systems for Enterprise That Scale
#26>We added a point of failure, as the permissions table can get out of sync with the actual data. >The main risk with pre-computed permissions is data getting out of sync. It would make sense to have permissions be a first class concept for databases and to ensure such a desync could never happen. Data being only read or written from specific users is a very common thing for data so it would be worth having first clas…
I'm struggling to understand what the issue that the author is getting at. The point of a database is that it's ACID compliant, wrap insets/updates/deletes in a transaction and no such drift would occur. What am I missing?
Much more likely I think is that you can’t use the db to prevent invalid states here (unique constraint, etc) and you’re dependent on other areas of the code correctly implementing concurrency controls. Race condition in resource A causes problems in your permissions table now.
And just from a general engineering perspective, you should assume things are going to fail and assess what your path forward looks like when they do. Recovery script sounds like a good idea for a critical area.
Re: Permission Systems for Enterprise That Scale
#27Scales both on the tech, and on the human side - e.g. your product manager can add roles (with CI approval) without requiring engineering involvement.
(I'm biased but still true)
Re: Permission Systems for Enterprise That Scale
#28Strange the article proposes itself for "Enterprise" yet has no mention of Google's Zanzibar and how it compares to the other approaches. AFAIK it doesn't use pre-computed values but just queries really fast (using Spanner so there's that)
However, some deeply recursive or wide relations can still be slow, so Zanzibar also has a pre-computation cache called Leopard that is used for a very specific subset of these relations [2]. For SpiceDB, we called our version of this cache Materialize and it is designed expressly for handling "Enterprise" levels of scale in a similar fashion, as sometimes it is simply too slow to walk these deep graphs in real-time.
[1]: https://zanzibar.tech/24uQOiQnVi:1T:4S [2]: https://zanzibar.tech/21tieegnDR:0.H1AowI3SG:2O
Re: Permission Systems for Enterprise That Scale
#29>We added a point of failure, as the permissions table can get out of sync with the actual data. >The main risk with pre-computed permissions is data getting out of sync. It would make sense to have permissions be a first class concept for databases and to ensure such a desync could never happen. Data being only read or written from specific users is a very common thing for data so it would be worth having first clas…
Re: Permission Systems for Enterprise That Scale
#30If you're using Postgres then using the ltree module is great for permission systems. Available in RDS too
Agreed, specifically for the file structure use-case, we were able to solve this with ltree.