What is Attribute-Based Access Control?
Attribute-Based Access Control (ABAC) is a policy-based access control model that grants or denies access to resources based on attributes associated with the subject (user), object (resource), action, and environment. Unlike traditional access control models that rely on predefined roles and static permissions, ABAC evaluates these decisions dynamically at runtime using a set of policies defined over those attributes.
According to the NIST SP 800-162 definition:
"An access control method where subject requests to perform operations on objects are granted or denied based on assigned attributes of the subject, assigned attributes of the object, environment conditions, and a set of policies that are specified in terms of those attributes and conditions."

Figure 1: NIST SP 800-162 ABAC Definition
This approach represents a fundamental shift from how organizations traditionally think about access control. Rather than asking "Does this user have the right role?", ABAC asks "Do this user's attributes, this resource's attributes, the requested action, and the current environment satisfy the access policy?" This shift enables more precise and adaptive access control, but it also introduces new complexities that organizations must understand before adoption.
The Fundamental Difference from RBAC
To understand ABAC's value, it's helpful to contrast it with Role-Based Access Control (RBAC), the predominant model in most organizations. RBAC assigns users to roles, and roles are granted permissions to resources. A user's access is determined by their role membership, which is typically static until explicitly changed by an administrator.
Consider a simple example: In an RBAC model, Alice might be assigned to a "Manager" role, and that role is granted permission to view all employee absence reports. This is straightforward and easy to administer, but it's also inflexible. Alice can view absence reports for employees she doesn't manage, and she retains this access even when working from untrusted networks or when the reports contain highly sensitive information.
ABAC approaches this differently. Instead of granting access based solely on role membership, an ABAC policy might state: "A user can view an employee's absence report if the user is the employee's manager, the user is accessing from the corporate network, the user authenticated with MFA, and the report is not marked confidential." This policy considers the relationship between Alice and the specific employee, the context of the access request, and the sensitivity of the resource itself.
The power of this approach becomes evident in complex scenarios. Without ABAC, an organization trying to enforce these conditions through RBAC would need to create numerous roles to cover all combinations: "ManagerFromCorporateNetwork", "ManagerWithMFA", "ManagerForNonConfidentialReports", and so on. This leads to role explosion—a proliferation of highly specific roles that become difficult to manage and understand. ABAC avoids this by evaluating conditions dynamically rather than encoding them in static role assignments.
How ABAC Evaluates Access
ABAC policies make authorization decisions by evaluating four types of attributes. Subject attributes describe the user or entity making the request, such as their department, job title, clearance level, certifications, or relationships with other users. Resource attributes describe what is being accessed—its sensitivity level, owner, creation date, department association, or data classification. Action attributes specify the operation being requested, whether viewing, updating, deleting, exporting, or approving. Environment attributes capture the context of the request: the time of day, network location, IP address, system state, or authentication method used.
Because these attributes are evaluated at runtime, ABAC policies can incorporate dynamic and contextual data that would be impossible to pre-compute in a static model. A policy can check whether a user's MFA token was issued within the last hour, whether the request originates from a specific geographic region, or whether the system is currently in emergency mode—all factors that may change moment to moment.
This runtime evaluation is both ABAC's greatest strength and one of its primary challenges. It enables incredibly flexible and context-aware access control, but it also means that policy decisions depend on the availability and accuracy of attribute data at the moment of the access request. If an attribute source is unavailable or returns stale data, policy evaluation may fail or produce incorrect results.
A Real-World Example: Medical Records Access
To illustrate ABAC's capabilities, consider a real policy implemented in an EmpowerID demonstration. In this scenario, Alice requests access to view Bob's X-Ray image. Rather than simply checking whether Alice has a "Doctor" role, the policy evaluates multiple conditions simultaneously.

Figure 2: Elaborate ABAC policy showing the potential of ABAC
The policy first checks that the requested action is "View" rather than "Edit" or "Delete." It then verifies that the organization is not in Emergency Mode, which would normally restrict access to patient records to prevent unauthorized viewing during crises. The policy ensures the request comes from the Local Network, confirming Alice is accessing from within the hospital rather than remotely. It checks that Alice authenticated using MFA with a Level of Assurance (LOA) of 2 or higher, ensuring strong authentication.
The policy then examines Alice's role and status, confirming she is in the Doctors role and not marked as Out of Office. It reviews the X-Ray itself to ensure it is not marked Confidential, which would require additional clearances. Finally, it validates the critical relationship: that Alice is Bob's Attending Physician, not just any doctor in the system.
All seven conditions must be satisfied for access to be granted. If Bob's X-Ray were marked Confidential, access would be denied even though Alice is his doctor. If Alice were accessing from home without the VPN connection, the Local Network check would fail. If she had marked herself Out of Office in the system, the policy would deny access to protect patient privacy when the doctor is not actively working.
This scenario demonstrates how ABAC can enforce highly granular and context-sensitive rules that would be difficult or impossible to model using RBAC alone. To achieve equivalent control with RBAC, you would need dozens of roles covering every combination of network location, authentication strength, resource sensitivity, and doctor-patient relationships. The policy maintenance burden would be enormous, and the role structure would be nearly incomprehensible to auditors and administrators.
When ABAC Provides Value
ABAC becomes valuable when authorization rules involve relationships between users and resources—managers viewing reports for their direct reports, or authors editing their own documents. RBAC struggles to express these relationships without creating an explosion of roles for each scenario. ABAC naturally models these through attribute evaluation.
Organizations needing dynamic, context-sensitive policies also benefit from ABAC. When authorization decisions should vary based on time of day, network location, authentication strength, or system state, ABAC evaluates these conditions at runtime. RBAC can approximate some controls through separate systems, but these become complex to manage and often operate independently rather than as unified authorization decisions.
ABAC can address role proliferation. When RBAC implementations grow to hundreds or thousands of roles—many highly specific combinations created for particular scenarios—ABAC often expresses the same policies more concisely through attribute-based rules. This doesn't eliminate all roles, and most organizations find hybrid approaches work best, but it can significantly reduce the role footprint.
Fine-grained access control requirements also point toward ABAC. Rather than creating roles for "Can view Project A documents" and "Can view Project B documents," an ABAC policy can state "Users can view documents for projects they are assigned to," with the system evaluating project membership at access time. Organizations implementing centralized authorization across multiple applications often turn to ABAC to maintain policies in one place rather than scattered across codebases.