What Is Relationship-Based Access Control?
Relationship-based access control (ReBAC) is a security model that grants or denies access based on how users and resources are linked to each other. Instead of checking a user’s role or a list of attributes, it looks at the relationship between the person and the thing they want to reach.
Here’s a simple way to think of it. You share a Google Doc with your team. Anyone on the team can edit it. But someone outside the team can’t — even if they have the same job title. The permission isn’t based on role. It’s based on the link between the user and the file. That’s ReBAC in action.
This model first gained ground in social networks — where access depends on whether two users are friends, followers, or members of the same group. However, it has since spread far beyond social media. Google built Zanzibar, a global ReBAC system, to handle access for YouTube, Drive, Cloud, Maps, and more. And firms like Airbnb and Carta have shifted to ReBAC-style systems as their access needs grew.
So what makes relationship-based access control different? With RBAC, access follows the role. With ABAC, access follows the attributes. However, in ReBAC, access follows the relationship. If there’s a valid link between the user and the resource — like owner, member, or team lead — authorization is granted. Otherwise, it’s denied. This makes ReBAC the most natural model for apps where data is shared, nested, or owned by users.
Access is based on the link between the user and the resource — like owner, member, or team mate. If a valid path exists in the graph, access is granted. Otherwise, it’s denied. No roles needed. Just real connections.
How Relationship-Based Access Control Works
Essentially, every ReBAC system follows the same core flow. It uses a graph of nodes (users and resources) and edges (the links between them). Here’s how it plays out.
This flow runs for every request. Because permissions are derived from real links, they update on their own when links change — like when a user joins a team or leaves a project. As a result, ReBAC stays in sync with how people actually work.
Common ReBAC Relationship Types
ReBAC supports many types of links. Here are the ones you’ll see the most — and how each one drives access.
ReBAC vs RBAC vs ABAC
Notably, the question of ReBAC vs RBAC and ABAC comes up the most. So here’s how they compare side by side.
| Feature | ReBAC | RBAC | ABAC |
|---|---|---|---|
| Access Based On | User-resource links | Job role | User + context attributes |
| Granularity | ✓ Per-resource | ◐ Per-role | ✓ Per-attribute |
| Handles Hierarchy | ✓ Native — parent-child | ◐ With role hierarchy | ✕ Not built in |
| Dynamic Updates | ✓ Auto — when links change | ✕ Manual role swaps | ◐ Semi-dynamic |
| Best For | Collab tools, SaaS, social apps | Mid-size, role-driven firms | Complex, regulated setups |
| Real-World Example | Google Drive, GitHub, Airbnb | Active Directory, Azure AD | AWS IAM policies |
When to Choose ReBAC
Use RBAC when access is driven by job function. Use ABAC when you need fine-grained, attribute-based rules. However, choose ReBAC when access depends on how users and resources are connected — like ownership, team membership, or project links. Consequently, ReBAC is the best fit for SaaS platforms, collab tools, multi-tenant apps, and any system where data is shared, nested, or user-owned.
Pros and Cons of Relationship-Based Access Control
ReBAC is powerful for connected, user-driven apps — but it’s not without trade-offs. Here’s a clear view of both sides.
Relationship-Based Access Control Best Practices
Here are the ReBAC best practices that help you get this model right.
First, map your entities and links before you build. List every type of user, resource, and link your app needs. Keep the link types simple and well-named. Because the whole system runs on this graph, getting the design right from the start saves huge effort later.
Then, use your existing data. Most apps already store links — like who created a file, who’s on a team, or who owns a project. Build your ReBAC graph on top of this data instead of creating a new one from scratch. Consequently, you get accurate, live permissions with less extra work.
Also, start with the three core link types. Ownership, group membership, and parent-child cover 80% of use cases. Add more link types only when you need them. This keeps the graph lean and easy to manage.
Combine, Monitor, and Evolve
Layer ReBAC with RBAC or ABAC. ReBAC handles who is linked to what. However, it can’t check context like time, location, or device. So layer ABAC or RBAC on top for those checks. This hybrid model gives you the best of both: link-based access plus context-aware rules.
Monitor graph growth. As your app scales, the graph grows — with more nodes, edges, and paths to check. Applying least privilege at the link level keeps the graph lean. So keep an eye on graph size and query speed. Use a fast graph database and cache results where you can.
Finally, audit and review links on a set basis. Stale links are a risk — like a user who left a team but still has access. Run regular reviews to find and remove dead links. Log every access check for compliance. Because a clean graph is a safe graph.
Map all entity and link types before building. Use existing app data for your graph. Start with ownership, membership, and parent-child links. Layer RBAC or ABAC for context-aware checks. Use a fast graph database. Monitor graph size and query speed. Audit links quarterly. Log every access check for compliance.
Frequently Asked Questions About Relationship-Based Access Control
More Common Questions
Conclusion: When to Use Relationship-Based Access Control
In short, relationship-based access control is the best model for apps where access depends on how users and resources are linked. It mirrors how people actually work — through ownership, teams, and projects. And it updates on its own when those links change.
However, it needs a solid base. So map your entities and links well. Use your existing data. Start simple. And layer RBAC or ABAC on top for context-aware checks.
Start now. First, list your key entities and link types. Then build your graph on existing app data. Next, set up the three core links — owner, member, and parent-child. After that, add a graph database and test at scale. Finally, audit links every quarter. Because the apps that model access through real links are the apps that stay secure and easy to manage.
References
- Wikipedia — Relationship-Based Access Control — Wikipedia
- WorkOS — What Is Relationship-Based Access Control (ReBAC)?
- AWS — How to Implement ReBAC with Amazon Verified Permissions
Join 1 million+ technology professionals. Weekly digest of new terms, threat intelligence, and architecture decisions.