El control de acceso basado en atributos ( ABAC ), también conocido como control de acceso basado en políticas para IAM , define un paradigma de control de acceso mediante el cual la autorización de un sujeto para realizar un conjunto de operaciones se determina evaluando los atributos asociados con el sujeto, el objeto, las operaciones solicitadas y, en algunos casos, los atributos del entorno. [1]
ABAC es un método de implementación de políticas de control de acceso que es altamente adaptable y se puede personalizar utilizando una amplia gama de atributos, lo que lo hace adecuado para su uso en entornos distribuidos o que cambian rápidamente. Las únicas limitaciones de las políticas que se pueden implementar con ABAC son las capacidades del lenguaje computacional y la disponibilidad de atributos relevantes. [2] Las reglas de política de ABAC se generan como funciones booleanas de los atributos del sujeto, los atributos del objeto y los atributos del entorno. [3]
A diferencia del control de acceso basado en roles (RBAC) , que define roles que tienen un conjunto específico de privilegios asociados y a los cuales se asignan los sujetos, ABAC puede expresar conjuntos de reglas complejos que pueden evaluar muchos atributos diferentes. Al definir atributos de sujeto y objeto consistentes en políticas de seguridad, ABAC elimina la necesidad de autorizaciones explícitas para los sujetos de los individuos que se necesitan en un método de acceso que no sea ABAC, lo que reduce la complejidad de administrar listas y grupos de acceso.
Los valores de los atributos pueden ser de valor fijo o de valor atómico. Los atributos de valor fijo contienen más de un valor atómico. Algunos ejemplos son role y project . Los atributos de valor atómico contienen solo un valor atómico. Algunos ejemplos son clearance ysensitive . Los atributos se pueden comparar con valores estáticos o entre sí, lo que permite un control de acceso basado en relaciones. [ cita requerida ]
Aunque el concepto en sí existe desde hace muchos años, ABAC se considera un modelo de autorización de "próxima generación" porque proporciona un control de acceso dinámico, consciente del contexto e inteligente en cuanto al riesgo a los recursos, permitiendo definir políticas de control de acceso que incluyen atributos específicos de muchos sistemas de información diferentes para resolver una autorización y lograr un cumplimiento normativo eficiente, permitiendo a las empresas flexibilidad en sus implementaciones en función de sus infraestructuras existentes.
El control de acceso basado en atributos a veces se denomina control de acceso basado en políticas ( PBAC ) o control de acceso basado en notificaciones ( CBAC ), que es un término específico de Microsoft. Los estándares clave que implementan ABAC son XACML y ALFA (XACML) . [4]
ABAC puede verse como:
ABAC viene con una arquitectura recomendada que es la siguiente:
Los atributos pueden referirse a cualquier cosa y a cualquier persona. Suelen clasificarse en cuatro categorías diferentes:
Las políticas son declaraciones que reúnen atributos para expresar lo que puede suceder y lo que no está permitido. Las políticas en ABAC pueden ser políticas de concesión o denegación. Las políticas también pueden ser locales o globales y pueden redactarse de manera que anulen otras políticas. Algunos ejemplos son:
Con ABAC puedes tener tantas políticas como desees que se adapten a muchos escenarios y tecnologías diferentes. [7]
Históricamente, los modelos de control de acceso han incluido el control de acceso obligatorio (MAC), el control de acceso discrecional (DAC) y, más recientemente, el control de acceso basado en roles (RBAC). Estos modelos de control de acceso están centrados en el usuario y no tienen en cuenta parámetros adicionales como la información del recurso, la relación entre el usuario (la entidad solicitante) y el recurso, y la información dinámica, por ejemplo, la hora del día o la dirección IP del usuario.
ABAC intenta resolver este problema definiendo el control de acceso en función de atributos que describen la entidad solicitante (el usuario), el objeto o recurso de destino, la acción deseada (ver, editar, eliminar) e información ambiental o contextual. Por este motivo, se dice que el control de acceso está basado en atributos. [8]
Hay tres implementaciones principales de ABAC:
XACML , el lenguaje de marcado de control de acceso extensible, define una arquitectura (compartida con ALFA y NGAC), un lenguaje de políticas y un esquema de solicitud/respuesta. No se ocupa de la gestión de atributos (asignación de atributos de usuario, asignación de atributos de objeto, asignación de atributos de entorno), que se deja en manos de las herramientas de IAM tradicionales , las bases de datos y los directorios.
Las empresas, incluidas todas las ramas del ejército de los Estados Unidos, han comenzado a utilizar ABAC. En un nivel básico, ABAC protege los datos con reglas de tipo "SI/ENTONCES/Y" en lugar de asignar datos a los usuarios. El Departamento de Comercio de los Estados Unidos ha hecho de esto una práctica obligatoria y su adopción se está extendiendo en varias agencias gubernamentales y militares. [9]
El concepto de ABAC se puede aplicar en cualquier nivel de la pila tecnológica y de la infraestructura empresarial. Por ejemplo, ABAC se puede utilizar en el firewall, el servidor, la aplicación, la base de datos y la capa de datos. El uso de atributos aporta un contexto adicional para evaluar la legitimidad de cualquier solicitud de acceso e informar la decisión de conceder o denegar el acceso.
Una consideración importante al evaluar las soluciones ABAC es comprender su potencial sobrecarga en el rendimiento y su impacto en la experiencia del usuario. Se espera que cuanto más granulares sean los controles, mayor será la sobrecarga.
ABAC se puede utilizar para aplicar una autorización detallada basada en atributos a los métodos o funciones de la API. Por ejemplo, una API bancaria puede exponer un método approveTransaction(transId). ABAC se puede utilizar para proteger la llamada. Con ABAC, un autor de políticas puede escribir lo siguiente:
El flujo sería el siguiente:
Una de las principales ventajas de ABAC es que las políticas y los atributos de autorización se pueden definir de forma neutral desde el punto de vista tecnológico. Esto significa que las políticas definidas para las API o las bases de datos se pueden reutilizar en el espacio de la aplicación. Las aplicaciones habituales que pueden beneficiarse de ABAC son:
Aquí también se aplica el mismo proceso y flujo que el descrito en la sección API.
La seguridad de las bases de datos ha sido durante mucho tiempo específica de los proveedores de bases de datos: Oracle VPD, IBM FGAC y Microsoft RLS son medios para lograr una seguridad de grano fino similar a ABAC.
Un ejemplo sería:
role == manager
realizar la acción SELECT
sitable == TRANSACTIONS
user.region == transaction.region
La seguridad de los datos suele ir un paso más allá de la seguridad de las bases de datos y aplica el control directamente al elemento de datos. Esto suele denominarse seguridad centrada en los datos. En las bases de datos relacionales tradicionales, las políticas ABAC pueden controlar el acceso a los datos en la tabla, columna, campo, celda y subcelda mediante controles lógicos con condiciones de filtrado y enmascaramiento basados en atributos. Los atributos pueden estar basados en datos, usuarios, sesiones o herramientas para ofrecer el mayor nivel de flexibilidad a la hora de conceder o denegar dinámicamente el acceso a un elemento de datos específico. En los sistemas de archivos distribuidos y de big data como Hadoop, ABAC aplicado en la capa de datos controla el acceso a carpetas, subcarpetas, archivos, subarchivos y otros granulares.
El control de acceso basado en atributos también se puede aplicar a sistemas de Big Data como Hadoop. Se pueden aplicar políticas similares a las utilizadas anteriormente al recuperar datos de lagos de datos. [10] [11]
A partir de Windows Server 2012, Microsoft ha implementado un enfoque ABAC para controlar el acceso a archivos y carpetas. Esto se logra mediante el control de acceso dinámico (DAC) [12] y el lenguaje de definición de descriptores de seguridad (SDDL). SDDL puede considerarse un lenguaje ABAC, ya que utiliza metadatos del usuario (reclamos) y del archivo o carpeta para controlar el acceso.