ABAC Authorization Model
Attribute-Based Access Control (ABAC) is an authorization model that makes access decisions by evaluating policies against the attributes of the subject (user), the resource being accessed, and the environment (context). Where RBAC Authorization Model asks "does this role have this permission?", ABAC asks "given all relevant attributes, does this policy allow this action?"
Attribute-Based Access Control (ABAC) is an authorization model that makes access decisions by evaluating policies against the attributes of the subject (user), the resource being accessed, and the environment (context). Where RBAC Authorization Model asks "does this role have this permission?", ABAC asks "given all relevant attributes, does this policy allow this action?"
ABAC centers on four attribute categories. Subject attributes describe the requester: user.role, user.department, user.clearance_level, user.location. Resource attributes describe the object being accessed: document.owner, document.classification, document.department, document.status. Action attributes describe what's being done: read, write, delete, approve. Environment attributes describe contextual conditions: time.hour, request.ip, request.mfa_verified.
A policy is a boolean expression over these attributes. For example: "A user can write a document if user.department == document.department AND document.status != 'published'." Or: "A user can approve a budget if user.role == 'manager' AND document.amount < user.approval_limit AND time.hour is between 9 and 17."
The policy engine (often called a PDP — Policy Decision Point) receives an authorization request containing the attributes, evaluates all applicable policies, and returns permit or deny. The enforcing component (the PEP — Policy Enforcement Point, your API middleware) acts on that decision.
ABAC's power is its expressiveness and its ability to handle fine-grained, context-sensitive rules. The cost is complexity: policies can be hard to audit and debug, and every access decision requires evaluating potentially many attributes. Many systems use a hybrid approach — RBAC for coarse-grained role checks, ABAC-style policy rules for ownership and contextual constraints. The runtime decision process is shown in Access Control Decision Flow.