5

Given we use ABAC in portions of our security systems like the WAF to partially restrict traffic based on attributes like IP address/User Agent String. While they can be faked internally tagging can be restricted on cloud providers like AWS and Azure.

Is it the lack of tooling or awareness on these controls that restricts access? Or are these tag systems so poorly protected that it would be easy to spoof tags to get access.

I guess the power of the default and the lack of tooling may be contributing to this.

Links

https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html

https://www.linkedin.com/pulse/how-externalized-security-cuts-costs-back-abac-thomas-mckeown

2 Answers 2

7

Seems there's a 3rd and 4th reason why the adoption of ABAC has been so slow: tricky to implement properly and high maintenance.

From this site:

Setting up a system as complex as ABAC could take months of work, which doesn’t end at the point of implementation - as creating additional roles, attributes, and policies requires complex R&D work and steep learning curves.

This creates a situation where developers become bottlenecks in your app’s permission management, other stakeholders are locked out of the conversation, and your customers are left without the flexibility they require.

ABAC: Cons

Complexity: ABAC can be a huge challenge to implement, manage, and maintain. Not only can it be very complex and time-consuming to design, but it's also an ongoing endeavor.

Authorization doesn’t stop at the point of implementation, and it needs to be managed and adapted to the needs of the application as it changes and grows. It is absolutely crucial to provide both your developers and relevant stakeholders with an accessible way to manage and maintain their ABAC policies.

Resource-intensive: As ABAC potentially requires taking a very large number of attributes into account, it can be very resource-intensive, requiring more processing power and time.

Difficult to audit: ABAC can be difficult to audit because access control decisions are based on complex policies that may be difficult to understand.

1
  • 2
    Given how reluctant many companies are to implement CSP, this seems to be accurate.
    – Sergej
    Commented Aug 30, 2023 at 18:13
4

I agree and disagree with Danny's response. Yes, ABAC can be more complex and resource-intensive. More importantly, as Danny points out, Authorization doesn’t stop at the point of implementation.

But it is much easier to audit than RBAC and that's one of the main drivers why you should go down the path of ABAC.

Top 5 reasons ABAC has been slow to adapt

  1. Companies were simply not ready. A lot of companies had to figure out their identity management story first and it looks like we're now turning that page. See more details below.
  2. Authorization is not in the hands of a single team, rather it requires orchestration between different parties: the identity (IAM) team, security, app teams, and compliance. This dance makes it harder to find the one stakeholder capable of driving forth the ABAC initiative.
  3. The 'boil the ocean' syndrome: a lot of early-day ABAC projects wanted to solve ABAC for an entire enterprise rather than take it one step at a time. That hindered ABAC adoption massively.
  4. Legacy software (COTS, SaaS, and homegrown): when I say legacy I don't necessarily mean old. Many apps and SaaS are still built with identity, permissions, roles, and groups in mind. For as long as these software don't provide hooks to externalize authorization, implementing ABAC will remain hard. This is partly what Danny means with "Authorization doesn’t stop at the point of implementation."
  5. Lack of standard, out-of-the-box policy enforcement points (PEP): most vendors provide you with a framework to implement fine-grained ABAC but don't give you enforcement points. It's up to the implementer/customer to write their own. That puts a lot of burden on the developer. Instead we need to come together as an industry and provide OOTB PEPs.

But ABAC is still worth it...

Everyone's talking about it. Should you do it? I'm biased so I'll say yes. But don't take my word for it. Look at NIST's Guide to Attribute Based Access Control (ABAC) Definition and Considerations, Gartner's research, as well as Kuppinger Cole and Group 451. So how can you speed up ABAC adoption?

Get Authentication Right First

There are many reasons why hasn't picked up as quickly. This year (2023), at the European Identity Conference and Identiverse, vendors, attendees, and analysts alike all said that identity management and authentication had now reached a level of maturity that would now let companies focus on the next chapter: authorization. In fact, we're seeing a slew of new authorization vendors, stacks, and approaches in the market. In addition to the veterans like Axiomatics (ABAC, policy-based vendor), you also now have the likes of Aserto (based on Open Policy Agent and Zanzibar) and 3Edges (based on Graph).

Understand the taxonomy of authorization

Navigating the authorization waters can be hard: ABAC, RBAC, ReBAC, Graph, ACLs... So many acronyms that are hard to understand. Fortunately, my friend Alex Babeanu laid out A Taxonomy of Modern Authorization Models. This should help you understand what options exist along with their pros and cons.

In a nutshell, there are 3 main ways to achieve externalized authorization (which is what ABAC is about):

  • Using a policy language e.g. XACML, ALFA, Rego, and Cedar
  • Using a graph (e.g. 3Edges)
  • Using access control lists and tuples (Zanzibar-style) e.g. OpenFGA

These 3 approaches decouple your app's logic from the authorization logic (that's the end game) and they allow you to centralize authz config management and in turn audit the config or run access reviews.

My (biased) view is that policies are the best way to configure things. But, in fact, it depends on your use case.

What's the use case for authorization?

Are you trying to save developer time? Implement complex pieces of legislation? Provide business logic? Give end-users/consumers control over their data in your app? Depending on the answers to these questions, you might want to choose different approaches.

Developer Efficiency

Your developers don't need to implement their own DB, logging, or authentication. They shouldn't have to develop authorization code. This is where Open Policy Agent in particular but also any (open-source) framework comes into play. It's not so much about the breadth of the authorization solution you choose but simply its developer friendliness, its SDK support, and how much time it saves your developers. Things like audit and access reviews are nice to have but clearly an afterthought.

Comply with the law

If your app needs to comply with one or more laws (HIPAA, privacy, GDPR, Export Control, ITAR), then a policy-based approach (ALFA) makes more sense. Policies are a good way to reflect an app's legal, compliance, or business requirements. This is how Boeing uses XACML to implement export control for instance.

This type of authorization is sometimes known as mandatory access control (MAC)

Give your app's users options

Maybe there's no logic to the authorization in your app. Perhaps you just want to let users decide who can do what on the data they own in your app. Think Google Drive, Docs, Photos... In that case, an access control framework at scale is what makes sense and that's exactly what Zanzibar is. Google's paper is just a paper though so you have to look to Topaz or OpenFGA for implementations.

Determining ownership of authorization

In the world of authentication, it's relatively clear that the central IAM team owns identity management and authentication (though CIAM has challenged that point of view). In authorization, while a central may provide a framework for authorization, it's the app owners, product managers, and developers who ultimately care about authorization. The requirements may be radically different from app to app. This means the central framework (if any) needs to have delegation features built into the product so that independent teams can work concurrently.

Additional Resources

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .