XACML (eXtensible Access Control Markup Language) is an XML-based standard for defining fine-grained access control policies supporting attribute-based authorization decisions.
XACML (eXtensible Access Control Markup Language) is an OASIS standard defining an XML-based language for expressing access control policies and a processing model for evaluating authorization requests. XACML enables fine-grained, attribute-based access control (ABAC) decisions considering multiple attributes like user role, resource classification, action type, and environmental conditions. It separates policy definition from enforcement, supporting centralized policy management across diverse applications.
XACML architecture comprises four key components: the Policy Administration Point (PAP) where policies are created and managed, the Policy Decision Point (PDP) that evaluates authorization requests against policies, the Policy Enforcement Point (PEP) that intercepts access requests and enforces PDP decisions, and the Policy Information Point (PIP) that provides attribute values from external sources needed for policy evaluation decisions.
XACML benefits include standardized policy language enabling vendor-independent access control, fine-grained authorization decisions based on multiple attributes, centralized policy management across heterogeneous systems, separation of policy logic from application code, support for complex rules combining multiple conditions with boolean logic, interoperability across platforms and organizations, and audit capabilities through standardized request/response logging for compliance evidence.
XACML supports attribute-based access control (ABAC) evaluating multiple dynamic attributes for each decision, while RBAC makes decisions based solely on pre-assigned role memberships. XACML can express RBAC policies but extends beyond them with contextual conditions like time-of-day restrictions, location-based access, resource classification requirements, and environmental factors. XACML provides greater flexibility at the cost of increased policy complexity and evaluation overhead.
Common XACML use cases include healthcare data access governed by patient consent and provider relationship, financial services authorization incorporating transaction limits and risk scores, government information sharing across agencies with classification-based controls, cloud resource access combining identity, device posture, and data sensitivity, and API authorization enforcing complex business rules across microservices architectures requiring consistent policy enforcement.
XACML policies consist of PolicySets containing multiple Policies, each containing Rules with Conditions. Targets define applicability based on subject, resource, action, and environment attributes. Rules specify Effect (Permit or Deny) when conditions are satisfied. Combining algorithms (deny-overrides, permit-overrides, first-applicable) resolve conflicts between multiple applicable rules. Obligations and advice specify additional actions PEPs must perform alongside access decisions.
XACML implementation challenges include policy language complexity requiring specialized expertise, performance overhead from real-time policy evaluation, difficulty testing complex policy interactions for unintended consequences, attribute collection from distributed sources introducing latency, limited tooling compared to simpler access control models, organizational resistance to centralized policy management, and the learning curve for administrators transitioning from simpler RBAC models.
XACML supports compliance by expressing regulatory access requirements as machine-enforceable policies, providing standardized audit trails of all authorization decisions with full request context, enabling consistent policy enforcement across heterogeneous systems, supporting separation of duties through complex rule combinations, and allowing compliance officers to review and validate access policies independently from application development teams through the policy administration interface.