You're asking a group of macaroon enthusiasts if macaroons are worth using :) The answers here will likely contains some bias.Macaroons are definitely worth using for certain use-cases. There are now plenty of great libraries for building things with macaroons, which makes it easy to build bespoke authorization solutions for integrating all kinds of services under your control. They're easy to write, verify, understand, and audit, which makes them great to work with.That said, it's harder to justify them for as many cases as they could be good for, IMO, simply because of the current state of the ecosystem. There's not much in the way of standards (especially in terms of caveats) and there are no large services providing macaroon integrations points (discharges). There are lots of cases where macaroons may make things harder for you simply because you'll need to write more infrastructure yourself instead of taking a solution off the shelf. And the current libraries don't yet fully deliver on some of the more interesting macaroon features (structural caveats, publicly-verifiable constructions, etc)As for the details you gave for your particular implementation, I think macaroons work better when used more like object capabilities than like rbac systems. I.e., associate a macaroon with the resources in question, and then add caveats that confine how those resources can be accessed (rather than building a macaroon around a user identity).
On Friday, July 6, 2018 at 4:33:03 PM UTC-4, anthon...@figure-eight.com wrote:I was put on the path to macaroons by some fellow architects online and I am interested in moving our internal microservices to using Macaroons. Right now we have a whole set of microservices who's only security is a Security Group on AWS that, when we start deploying to other platforms, is not going to be portable.In the past companies I've worked with they used basic auth to secure internal services, though it's definitely not up to scratch when trying to integrate with external APIs and manage permissions.For the last 2 months I've been researching and testing out implementations of security for macaroons:
- Boulangerie for our Rails apps
- nitram509 for our Spring Boot apps
I have even started a spring security extension for Spring and Spring boot applications. My only concern is why the market is so small and the people deaf about macaroons?My research so far has led me to being able to take basic macaroons and authenticate a user and more recently I've delved into using caveats and trying to come up with a model that says "Id: user123" has the ability to "access = READ, function = USERS" or something along those lines. But more so working out how to keep a chaining model from Service A to Service B to Service C simple. It kind of feels like macaroons are used for specificity rather than general roles making the use cases you need to cater for more complicated models.I will admit trying to retrofit a security model such as macaroons into a framework such as Spring Security has it's challenges, but it's more the security model I've been trying to create which has been more of a challenge.So far my questions are:
- Are macaroons still worth pursuing?
- Has anyone here that has implemented a security model with macaroons ended up regretting it?
- Gone back and had to start from scratch?
- Should I continue full steam ahead or cut my losses and fallback to something else?
Anthony
--
You received this message because you are subscribed to the Google Groups "Macaroons" group.
To unsubscribe from this group and stop receiving emails from it, send an email to macaroons+unsubscribe@googlegroups.com.
To post to this group, send email to maca...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/macaroons/bc21369c-a4a8-490b-ab99-c21d9d510679%40googlegroups.com.
> I have even started a spring security extension for Spring and Spring boot
> applications. My only concern is why the market is so small and the people
> deaf about macaroons?
Partly I think there are few examples for people to look at. There are people
advocating them, eg most recently
https://latacora.singles/2018/06/12/a-childs-garden.html
There are not integrations with fully worked examples into common frameworks.
> My research so far has led me to being able to take basic macaroons and
> authenticate a user and more recently I've delved into using caveats and
> trying to come up with a model that says "Id: user123" has the ability to
> "access = READ, function = USERS" or something along those lines. But more
> so working out how to keep a chaining model from Service A to Service B to
> Service C simple. It kind of feels like macaroons are used for specificity
> rather than general roles making the use cases you need to cater for more
> complicated models.
Hmm, that seems like trying to retrofit an RBAC model into macaroons. I
think it helps to start from a more capability based approach. If you start
with an RBAC model you will end up with something that looks like an RBAC
model, ie like AWS. I don't think this will map nicely to caveats.
You're asking a group of macaroon enthusiasts if macaroons are worth using :) The answers here will likely contains some bias.
Macaroons are definitely worth using for certain use-cases. There are now plenty of great libraries for building things with macaroons, which makes it easy to build bespoke authorization solutions for integrating all kinds of services under your control. They're easy to write, verify, understand, and audit, which makes them great to work with.
As for the details you gave for your particular implementation, I think macaroons work better when used more like object capabilities than like rbac systems. I.e., associate a macaroon with the resources in question, and then add caveats that confine how those resources can be accessed (rather than building a macaroon around a user identity).
As for the details you gave for your particular implementation, I think macaroons work better when used more like object capabilities than like rbac systems. I.e., associate a macaroon with the resources in question, and then add caveats that confine how those resources can be accessed (rather than building a macaroon around a user identity).This ^^ is helpful perspective. When looking earlier I had come to the conclusion that Macaroons and JWTs are complementary. Macaroons can solve for cases where the auth layer knows ahead of time what caveats need to be checked, where you can mint a specific authorization for a specific resource. But if what you need is, e.g., generic microservice authorization, where a bearer token needs to be dynamically interrogated, JWTs, as problematic as they otherwise are, are a more natural fit.
That said, it also seemed like Macaroons + a policy language could potentially meet both capability-based and constraint-based needs.