Enhancing Authorization Efficiency: The Power of Relational-Based Access Control
Tags: go, security, microservices
Published: 2023-07-10 15:03:00


## Introduction

In today's interconnected and data-driven world, organizations face significant challenges in managing and securing access to their valuable resources. Authorization, the process of granting or denying access rights, plays a crucial role in ensuring the confidentiality, integrity, and availability of sensitive information. 

One approach that has gained traction is relational-based access control, which offers a powerful solution for organizations seeking to streamline their authorization processes. 

In this article, we will explore how ReBAC approach can ease authorization management for organizations by establishing natural linkages between business units, functions, and entities. 

## Understanding Relational-Based Access Control 

Relational-based access control (ReBAC) is a method of access control that uses relationships and dependencies between various entities within an organization to determine access rights. 

Unlike traditional access control models that rely on individual user permissions, ReBAC focuses on the relationships between entities, subjects as well as the roles, and permissions of your system. 

### ReBAC Models

There are 3 highly used models of relationship-based access control; Ownership, Parent-Child & Hierarchies, User Groups & Teams. 

#### Ownership

In the Ownership access control model, access privileges are granted based on the ownership of resources.

Let’s think of a file sharing platform, a user who creates a file becomes the owner of that file. As the owner, they have full control over the file, including the ability to modify permissions, share the file with others, or revoke access. Other users can access the file only if the owner explicitly grants them permission. The ownership model ensures that the user who creates the file maintains control over who can access it and what level of access they have.

#### Parent-Child & Hierarchies

In the Parent-Child & Hierarchies access control model, access privileges are based on the hierarchical relationships between entities. 

Common example for this model are project management systems. Different projects have a hierarchical structure with parent and child entities. A project manager serves as the parent entity, while team members are the child entities. The project manager has full access to the project and can assign specific permissions to team members based on their roles and responsibilities. Team members inherit access rights from the parent entity, allowing them to access relevant project resources. 

This model ensures that access privileges are automatically propagated within the project hierarchy, simplifying access management and reflecting the organizational structure.

#### User Groups

In the User Groups access control model, access privileges are defined based on group membership. That group could be a project team or an entire department. 

For example, a marketing team may have access to marketing documents and campaigns, while a tech team may have access to source code repositories. Group or team administrators can manage access privileges by adding or removing users from the respective groups. 

This model simplifies access control by allowing permissions to be granted to an entire group or team, reducing the need to manage individual user permissions.

For more details and deep examination for the access control models of ReBAC, check out our article, [Relational Based Access Control Models](https://www.permify.co/post/relational-based-access-control-models).

### Solutions 

One notable example of a relational-based access control solution is [Google Zanzibar](https://research.google/pubs/pub48190/). Developed by Google, Zanzibar is a scalable and flexible system for managing access control in distributed systems. It leverages a relational model to define access policies and relationships between users, roles, and resources.

Google developed Zanzibar to address the complex access control challenges faced by large-scale distributed systems within their infrastructure. Prior to Zanzibar, Google relied on a combination of different access control systems, each tailored to specific use cases. However, managing and scaling these disparate systems became increasingly difficult and led to inconsistencies and inefficiencies. 

To overcome these challenges, Google sought to create a unified and scalable access control solution that could effectively manage access across a diverse range of resources, services, and users. Zanzibar was designed to provide a centralized and flexible framework for access control management, while also ensuring robust security and scalability.

Nowadays Zanzibar's approach allows organizations to define high-level policies and then specify relationships and constraints between different entities. This enables fine-grained access control by considering not only individual user permissions but also the context in which those permissions are granted.

For ones to learn more about Zanzibar, we summarized its aspects in the article: [Google Zanzibar In A Nutshell](https://www.permify.co/post/google-zanzibar-in-a-nutshell)

#### Open Source 

There are a couple of open source solutions that inspired by Zanzibar, one them is [Permify](https://github.com/Permify/permify/).

Permify has designed and structured as a true ReBAC solution to that aims to create a robust, flexible, and easily auditable authorization system that establishes a natural linkage between permissions across the business units, functions, and entities of an organization.

Let's move on to how using ReBAC establishes natural linkage between resources and what’s the underlying benefits of it.

## Benefits Of Having Natural Linkage

Using ReBAC as a main model in your access control structure simplifies the authorization process by establishing natural linkages between different components of your organization. 

I can hear that you're asking, 'What is establishing natural linkages ?”

Establishing natural linkages means creating relationships and dependencies that reflect the organizational structure and the connections between various entities. 

Here's a short real-world example to illustrate this concept: Let's consider a large retail organization with multiple departments, such as Sales, Marketing, and Finance. Within each department, there are specific roles and responsibilities assigned to employees. 

Using ReBAC, the organization can establish linkages between these roles and responsibilities. 
For instance, the organization can define a relationship between the Sales department and the Sales Manager role. This linkage indicates that individuals assigned the Sales Manager role have certain access privileges within the Sales department, such as viewing sales reports, managing sales teams, and accessing customer data.

Let's explore the advantages for organizations that adopt ReBAC and natural linkage approach within their authorization system.

### Automatize Employee Provisioning

ReBAC simplifies the process of granting and revoking access to resources when employees join or leave an organization. 

By establishing natural linkages between different components of the organization, ReBAC enables streamlined provisioning and deprovisioning workflows. 

When a new employee is onboarded, their access privileges can be easily assigned based on their designated business units and functions. 

Similarly, when an employee leaves the organization, their access can be promptly revoked by removing the corresponding linkages. This ensures that employees have the necessary access from day one and reduces the risk of lingering access rights for departed employees. 

### Ensuring Least Privilege 

Mapping user permissions to specific business units and functions ensures that employees have the appropriate level of access based on their roles in the organization.

This granular approach mitigates the risk of overprivileged accounts and minimizes the potential impact of compromised credentials. 

For example, an employee in the marketing department will have access limited to resources relevant to their role, such as marketing campaigns and customer data. They would be restricted from accessing sensitive financial information that is outside their job responsibilities. 

This minimizes the attack surface and enhances overall security. 

### Avoiding Role Explosion

Role explosion refers to the proliferation of numerous roles in an access control system. 

If you're using solely RBAC (role-based access control) in your authorization system, to represent the fact that role X can do Y on resource Z, you need to create a role called “role-Y:Z”. However, this approach becomes challenging to manage and maintain as the number of resources and corresponding roles continues to increase. 

Taking a higher perspective, RBAC is often too coarse-grained for certain use cases. In these scenarios, ReBAC (relationship-based access control) provides a suitable solution for achieving fine-grained permissions.

Rather than creating a separate role for every unique combination of permissions, ReBAC focuses on relationships and dependencies between entities of the organization. Which reduces the complexity of role management and makes it easier to assign and modify access privileges based on the established linkages. 

It simplifies administration and avoids the pitfalls of an overly complex role-based access control (RBAC) system. 

### Enhancing Auditing & Compliance

ReBAC facilitates ease auditing and compliance monitoring. 

The natural relationships created by ReBAC provide a clear and intuitive structure for access control. So that auditors (IT Admins, compliance team members, etc) can easily understand and verify the authorization process by examining the relationships between users, business units, and functions.

ReBAC's hierarchical structure ensures that permissions cascade down from higher-level roles to lower-level roles, reducing the risk of privilege escalation. Also reduces the likelihood of users gaining unauthorized access to sensitive information. 

The ability to trace access privileges back to specific roles and responsibilities enhances transparency and supports regulatory compliance efforts. 

Additionally, the contextual information captured by ReBAC allows for accurate and detailed audit logs, simplifying the process of tracking access events and detecting any potential security breaches. 

### Streamlining Authorization Management

ReBAC facilitates efficient authorization management by allowing organizations to define and manage access rights at a higher level of abstraction. 

Instead of assigning permissions to individual users, permissions are associated with roles. This simplifies the process of granting or revoking access rights when employees change roles or when new employees join the organization. 

By updating the permissions assigned to a role, organizations can automatically apply these changes to all users associated with that role, reducing administrative overhead and ensuring consistency in access control.

## Conclusion

Relational-based access control offers organizations a powerful and efficient approach to manage authorization. By establishing natural linkages between business units, functions, and entities, ReBAC simplifies the process of granting and managing access rights. 

This not only enhances operational efficiency but also improves security and compliance. As organizations continue to grapple with the challenges of access control, leveraging relational-based access control can be a valuable strategy to ensure the right people have access to the right resources, while mitigating the risks associated with unauthorized access.