Ory Keto, open source authorization server based on Google Zanzibar
github.com
github.com
Full Disclosure: I'm a YC W21 founder that's built authzed, which is effectively Zanzibar as a Service, but anything that gets mindshare towards using ACL services is huge.
How close do ya'll plan to follow the paper? At a glance, I noticed a few of differences.
It'd be amazing if we had API compatibility across our products.
Your APIs look quite compatible, as you probably also stayed very close to the paper.
Basically, what you're describing is called "GBAC". GBAC can be great if you need the full power of a typical Graph API, but Zanzibar-like services are focused on solving the problem of finding a path between two edges[1] and doing everything you can to optimize that operation for latency. GBAC is flexible, but at the cost of performance compared to something more structured.
[0]: https://docs.authzed.com/authz/what-else#gbac-graph-based-ac...
Full disclosure: I'm cofounder/CEO of Oso (https://www.osohq.com/), a library for authorization. Overall, it's incredible to see all the activity around authorization recently.
https://github.com/ory/keto/issues/47
It's a impressive example of high functioning discourse: all the participants provide valuable insight, state concerns, elegantly summarize very complex issues, and show a lot of respect to each other; great gains are made as a result. It's worth reading in its entirety.
I work at Auth0 and we are building a Zanzibar inspired SaaS as well (you can read here if interested https://twitter.com/auth0lab) and it is positive to see that there's interest in services like this, it's validating :)
One of the things we found is that learning Zanzibar concepts can be a bit daunting, so we put together this playground: https://sandman-86.herokuapp.com/, that has samples and tutorials, etc.
Hopefully that's useful for others getting started with Zanzibar. We are likely going to be adding the ability to write to the playground (it is read-only today) in the next few months.
Nice work there!
Similarly, Authzed has a playground[0], but it's focused more on validation, exhaustively testing, and sharing your designs rather than visualization.
https://github.com/ory/keto/blob/master/docs/docs/concepts/s...
and an example: https://www.ory.sh/keto/docs/examples/olymp-file-sharing
as well as the concepts section: https://www.ory.sh/keto/docs/concepts/relation-tuples
as well as their implemented and planned features: https://www.ory.sh/keto/docs/implemented-planned-features
Check out https://github.com/ory/kratos, our identity server. Or https://github.com/ory/hydra, our OAuth2 server. All of them together can be assembled to have something like Keycloak.
What about managing auth for (Linux) servers? PAM, sudo, etc?
Joking aside, I dislike stuff that reuses overly generic concepts and names. I get why it was chosen, it's sorta cute, and it fits the theme, but it would be very nice if it was a uniquely named concept.
It does result in some super silly names. So much so, that when I studied pharmaceutical sciences, we made a drinking game called "Pokémon or Drug"
The most important reason is actually to make sure it doesn’t sound like any other named drug. Good article on that at https://www.ibtimes.com/why-do-prescription-drugs-have-such-...
> Patients can wind up taking the wrong prescription if a pharmacist mistakes Foradil, which treats bronchitis, for Toradol, which relieves pain from arthritis, or mixes up the blood-thinner Plavix with the antidepressant Paxil.
I suppose "Keto REST" might be harder, but I don't know how many ambiguous queries like that are common.
Recently a prospective client, coming from the world of Active Directory, has expressed a need for such a feature in ASPSecurityKit.
I haven't read the Zanzibar paper, but In ASPSecurityKit we've implemented ACLs on a similar concept – we call it activity-data authorization (ADA) [0]. Since it works as part of your application as a library, it can inspect request and automatically discover and authorize access to objects [1]. The attribute-based permission policies for users is something we're evaluating now.
0: https://youtu.be/u9NnBNEMpF4 1: https://aspsecuritykit.net/docs/article/how-to-perform-activ...
Basically the idea is to check the attributes before actually forwarding the request to Keto. That could be done through e.g. a OPA integration. This can scale much better IMO than just doing everything in OPA.
Taking this simple approach allows us to provide a global, low latency, and consistent authorization system.
It's the first I'm hearing about it.
Is it Oauth for everything?
Full disclosure: I am a co-founder of a company building and hosting a Zanzibar implementation as a service: https://authzed.com
Since you're an expert in this area, and I am lazy... :)
What makes it well designed? What are the top 2 or 3 things it does to make it a really well designed system?
How does it integrate with apps it controls?
Are there libraries?
Or does it provide a data format to implement in the app you're working on?
In the case of Authzed, we provide a gRPC API [0] which can be used from any application or language that supports gRPC, as well as designed client libraries for specific languages [1] to make integration even easier.
Applications primarily integrate by making Check requests [2] at any point in which a protected resource is being accessed and Write requests [3] at any point in which permissions are granted or removed.
Source: I am the third cofounder at https://authzed.com :)
[0]: https://docs.authzed.com/api/overview
[1]: https://docs.authzed.com/lang/lib-index
But your docker files are not really related to the source code. Your Dockerfile expects a prebuilt binary, and your docker-compose file a pre-built image from a container-registry (usually Dockerhub).
It would be better to do building of the project in a multi-stage Dockerfile [1], and use the local Dockerfile [2] instead of a pre-built image from Dockerhub.
[1] https://fabianlee.org/2020/01/26/golang-using-multi-stage-bu...
[2] https://docs.docker.com/compose/compose-file/compose-file-v3...
Edit: My bad, it's a corporate product, they're not gonna focus development around somebody else's code. Corporate "open source" is hopeless.
I also think you've struggle to name a dozen commonly popular authorizers.