RBAC Authorization Model
Role-Based Access Control (RBAC) is the most widely deployed authorization model in enterprise applications. Rather than assigning permissions directly to individual users, RBAC introduces an intermediate abstraction — roles — which bundle related permissions together. Users are assigned roles, and roles carry permissions.
Role-Based Access Control (RBAC) is the most widely deployed authorization model in enterprise applications. Rather than assigning permissions directly to individual users, RBAC introduces an intermediate abstraction — roles — which bundle related permissions together. Users are assigned roles, and roles carry permissions.
The core entities are users, roles, and permissions. A permission represents a specific action on a specific resource — for example, invoices:read, invoices:write, or users:delete. A role groups a coherent set of permissions that reflect a job function: an editor role might hold posts:read and posts:write; an admin role might hold those plus users:manage and settings:configure. A user is then assigned one or more roles.
When a request arrives, the authorization check follows a fixed pattern: look up the authenticated user's roles, expand each role to its set of permissions, check whether the required permission for the requested action is present in the union of all permissions. If yes, allow; if no, deny.
RBAC is operationally tractable because access changes are made at the role level, not per-user. Adding a new employee means assigning them a role; changing the access pattern of an entire team means updating a single role definition. This also makes auditing straightforward: the permission set for any role is explicit and enumerable.
RBAC's limitation is that it does not natively handle contextual or attribute-based decisions — for example, "users can only edit their own documents" or "this action is only allowed during business hours." For those requirements, see ABAC Authorization Model. The data structures that support RBAC are detailed in Role Hierarchy Structure, and the full runtime decision process is shown in Access Control Decision Flow.