Skip to main content

ABAC in five minutes

From roles to attributes​

Role-Based Access Control (RBAC) binds permissions directly to predefined roles, and assigns users to those roles. It works until rules depend on anything else: which record, what time, from which device. Then you need ever more roles, and the model becomes unmanageable. Attribute-based access control (ABAC) resolves this issue by replacing role-to-permission mapping with dynamic boolean policy evaluation. Instead of hardcoding access decisions into static identity buckets, ABAC evaluates claims across four independent vectors at runtime:

CategoryQuestion it answersExamples
SubjectWho is asking?department, clearance, employment type
ResourceWhat are they acting on?classification, owner, status
ActionWhat do they want to do?read, approve, delete
EnvironmentIn what context?time of day, location, device

Instead of asking "What role does this user have?", ABAC asks: "Given who this user is, what they are trying to access, what they want to do, and current real-world conditions, does policy permit it?".

Policy-based access control (PBAC) is a closely related term. Axiomatics uses both to describe the same externalized, dynamic model: policies, not hardcoded permissions, drive every decision.

The XACML architecture: PEP, PDP, PIP​

Axiomatics follows the XACML reference architecture, which separates enforcing a decision from making it.

Diagram of the XACML architecture: a user action reaches the PEP, which sends an authorization request to the PDP; the PDP fetches missing attributes from PIPs and returns a decision (Permit, Deny, Not Applicable or Indeterminate) that the PEP enforces.

  • PEP (Policy Enforcement Point): lives in your application, API gateway, or proxy. It intercepts the request, asks the PDP, and allows or blocks accordingly.
  • PDP (Policy Decision Point): evaluates policies and returns a decision: Permit, Deny, Not Applicable or Indeterminate.
  • PIP (Policy Information Point): any external source of attribute values, such as a directory or database.

Because authorization logic lives in the PDP and not in application code, one set of policies applies consistently across every application that calls it.

Policies: ALFA and XACML​

XACML is the OASIS standard for the policy language, the request/response protocol and the reference architecture. ALFA (Abbreviated Language for Authorization) is a developer-friendly syntax, similar to Java or C#, that compiles to XACML 3.0. You write ALFA, the engine runs XACML.

When several rules match a request, a combining algorithm (for example deny-overrides, permit-overrides or first-applicable) decides how their results merge into one decision.

Three planes​

It helps to think of an ABAC deployment as three planes:

PlaneWhat happens therePlatform component
ControlDefine, manage and store policies, attributes and attribute connectorsAuthorization Hub
DecisionEvaluate requests against policies, fetch attributes, return decisionsAccess Decision Service
EnforcementAct on the decisionYour PEPs (applications, gateways)

Axiomatics Policy DevOps sits alongside the control plane: it is how policies get built and verified before they are deployed. The next page looks at each component in turn.