# XACML

XACML, siglas en inglés para "eXtensible Access Control Markup Language" (lenguaje extensible de marcas de acceso de control), es un estándar que define un lenguaje declarativo de políticas de control de acceso implementado en XML y un modelo de procesamiento que describe cómo evaluar peticiones de acceso según las reglas definidas en las políticas.
Como especificación estándar publicada, uno de los objetivos de XACML es promocionar una terminología común y la interoperabilidad entre las implementaciones de control de acceso de múltiples fabricantes. XACML es, principalmente, un sistema de control de acceso basado en atributos (ABAC), donde los atributos (bits de datos) asociados con un usuario o una acción o recurso son utilizados en la decisión de otorgar o denegar el acceso de un usuario a un recurso de un modo en concreto. El control de acceso basado en roles (RBAC) también puede ser implementado en XACML como un caso concreto de ABAC.
El modelo de XACML soporta y refuerza la independencia entre la decisión del acceso del punto de uso. Cuando las decisiones de acceso se llevan a cabo en las aplicaciones del cliente (o están basadas en los identificadores de usuario de una máquina local y en Listas de Control del Acceso (ACLs)), es muy difícil actualizar el criterio de decisión cuando las políticas de gobierno cambian. Cuando se desacopla el cliente de la decisión de acceso, las políticas de autorización pueden ser actualizadas en tiempo real y afectar a todos los clientes instantáneamente.

## Historia

La versión 2.0 fue ratificada por la organización de estándares OASIS el 1 de febrero de 2005.
La primera comisión de especificación para XACML 3.0 fue lanzada el 10 de agosto de 2010.
La última versión, XACML 3.0, fue estandarizada en enero de 2013.
La primera versión del borrador funcional descriptivo de políticas administrativas fue publicado el 1 de abril de 2009.

## Terminología

Terminología no normativa (tras RFC 2904, excepto PAP)
| Plazo | Descripción |
| PAP | Policy Administration Point (Punto de Administración de políticas) - Punto que dirige las políticas de autorización del acceso |
| PDP | Policy Decision Point (Punto de Decisión de la política) - Punto que evalúa peticiones de acceso contra políticas de autorización antes de emitir decisiones de acceso |
| PEP | Policy Enforcement Point (Punto de Aplicación de la política) - Punto que intercepta la petición de acceso del usuario a un recurso, hace una petición de decisión al PDP para obtener la decisión de acceso (p.e. se aprueba o deniega el acceso al recurso), y actos en la decisión recibida |
| PIP | Policy Information Point (Punto de Información de la política) - La entidad de sistema que actúa como fuente de valores de atributos (i.e. un recurso, entorno) |
| PRP | Policy Retrieval Point (Punto de Recuperación de Políticas)- Punto en el que se almacenan las políticas XACML de autorización de acceso, normalmente una base de datos o los archivos de sistema. |

## Elementos de política
### Elementos estructurales

XACML está estructurado a 3 niveles de elementos:
* Conjunto de políticas.
* Políticas.
* Reglas.
Un conjunto de políticas contiene elementos de política y elementos de conjunto de políticas. Una política contiene elementos de reglas.

### Atributos y categorías

Políticas, conjuntos de política, reglas y peticiones utilizan recursos, entornos, y acciones.