Attribute-Based Access Control (ABAC) en Unity Catalog: Gobernanza dinámica y escalable
- Juan Diaz
- 15 abr, 2026
- 06 Mins de lectura
- Databricks
La gobernanza de datos moderna exige controles de acceso flexibles, escalables y contextuales. En entornos donde el volumen, la variedad y la complejidad de los datos crecen de forma exponencial, los modelos tradicionales como RBAC (Role-Based Access Control) y ACL (Access Control List) pueden quedarse cortos. Estos enfoques, basados en permisos fijos, no siempre logran adaptarse a las necesidades cambiantes del negocio ni a los requisitos de cumplimiento regulatorio.
Aquí es donde surge ABAC (Attribute-Based Access Control) como evolución natural. Este modelo permite crear políticas dinámicas basadas en atributos, proporcionando un control más granular, automatizado y alineado con las reglas de gobernanza empresarial.
¿Por qué es importante el control de acceso en entornos de datos modernos?
- El crecimiento de datos y usuarios hace inviable gestionar permisos uno a uno.
- Los modelos basados en roles o listas estáticas no se ajustan a contextos dinámicos.
- La gobernanza centralizada, la auditabilidad y la trazabilidad son esenciales para cumplir normativas y proteger información sensible.
warning
Los modelos RBAC puros y ACL requieren definir privilegios fijos para cada usuario o grupo. A medida que crecen los equipos y los datos, esto genera sobrecarga administrativa y riesgo de errores.
¿Qué es ABAC y cómo funciona en Unity Catalog (Databricks)?
ABAC es un modelo de control de acceso que permite definir políticas basadas en atributos (etiquetas) aplicados a recursos de datos. En Unity Catalog, ABAC no reemplaza a RBAC, sino que lo complementa, combinando el control basado en roles con condiciones dinámicas definidas por atributos.
Esto permite aplicar políticas que respondan automáticamente a reglas de negocio, niveles de sensibilidad o ubicaciones geográficas, sin tener que redefinir permisos de forma manual.
Conceptos clave
- Governed tags (etiquetas reguladas): Atributos definidos a nivel de cuenta, como sensibilidad, región, dominio de negocio, clasificación, etc. Estas etiquetas se gestionan mediante governed tag policies para asegurar consistencia global.
- Políticas ABAC: Reglas aplicadas en diferentes niveles jerárquicos (catálogo, esquema, tabla) que determinan el comportamiento de acceso según los atributos.
- Herencia de políticas: Las políticas definidas en niveles superiores se heredan automáticamente a los recursos subordinados, facilitando la gobernanza centralizada.
Componentes de ABAC en Unity Catalog
Governed tags
Las etiquetas reguladas se definen a nivel de cuenta y pueden asignarse a catálogos, esquemas o tablas. Ejemplos de atributos comunes:
- sensibilidad: alta, media, baja
- región: LATAM, EMEA, ASIA
- dominio: ventas, finanzas, recursos_humanos
-- Ejemplo sintético de asignación de etiqueta
ALTER TABLE clientes SET TAG region = 'LATAM';
Estas etiquetas permiten construir reglas dinámicas de acceso en función de su valor.
Políticas ABAC y niveles jerárquicos
Las políticas pueden aplicarse en diferentes niveles jerárquicos:
Catálogo
Nivel superior donde se definen políticas globales que afectan a todos los recursos subordinados.
Esquema
Permite aplicar políticas específicas a conjuntos de tablas, organizando la gobernanza por áreas o dominios.
Tabla
Las políticas a nivel de tabla permiten granularidad máxima, controlando el acceso y la visibilidad de los datos.
Herencia automática:
Una política definida en el catálogo se aplica automáticamente a todos los esquemas y tablas que contiene, reduciendo la repetición y mejorando la consistencia.
Tipos de políticas soportadas
- Filtro de fila
- Máscara de columna
Permite que los usuarios vean solo las filas que cumplen ciertos atributos.
Por ejemplo, mostrar solo transacciones pertenecientes a la región del
usuario: sql CREATE ROW FILTER POLICY region_filter AS (region = CURRENT_USER_REGION());
Permite mostrar o enmascarar valores de una columna según atributos o
contexto. Por ejemplo, ocultar el número de teléfono si la sensibilidad es
alta: sql CREATE COLUMN MASK POLICY mask_phone AS (CASE WHEN sensitivity = 'alta' THEN NULL ELSE phone_number END);
Permite que los usuarios vean solo las filas que cumplen ciertos atributos.
Por ejemplo, mostrar solo transacciones pertenecientes a la región del
usuario: sql CREATE ROW FILTER POLICY region_filter AS (region = CURRENT_USER_REGION());
Permite mostrar o enmascarar valores de una columna según atributos o
contexto. Por ejemplo, ocultar el número de teléfono si la sensibilidad es
alta: sql CREATE COLUMN MASK POLICY mask_phone AS (CASE WHEN sensitivity = 'alta' THEN NULL ELSE phone_number END);
Uso de UDFs en políticas
Las funciones definidas por el usuario (UDFs) permiten incluir lógica personalizada dentro de las políticas ABAC. Esto facilita crear condiciones complejas o adaptadas a la lógica del negocio:
CREATE FUNCTION CURRENT_USER_REGION() RETURNS STRING;
Evaluación dinámica y aplicación de políticas
Cuando un usuario realiza una consulta, el sistema evalúa:
- Las etiquetas asignadas al recurso (por ejemplo, region = ‘LATAM’)
- Las políticas ABAC aplicables
- Los atributos del usuario o contexto
En función de esto, Unity Catalog concede, deniega o filtra los resultados.
info
Cada acceso queda registrado mediante audit logs, garantizando trazabilidad e integración con sistemas de cumplimiento normativo.
Ventajas y casos de uso típicos
Ejemplo práctico
Imagina una empresa con datos de clientes separados por región (América Latina, EMEA, Asia).
Puedes definir una etiqueta region y una política que solo muestre datos según la región del usuario:
ALTER TABLE clientes SET TAG region = 'LATAM';
CREATE ROW FILTER POLICY region_filter AS (region = CURRENT_USER_REGION());
O, usando sensibilidad:
ALTER TABLE clientes SET TAG sensitivity = 'alta';
CREATE COLUMN MASK POLICY mask_phone
AS (CASE WHEN sensitivity = 'alta' THEN NULL ELSE phone_number END);
Limitaciones y consideraciones (versión beta)
warning
ABAC en Unity Catalog está en versión beta. Algunas restricciones:
Un usuario con permiso
MODIFYpuede eliminar columnas con etiquetas reguladas si no tiene permiso para asignar etiquetas.ABAC se habilita a nivel de workspace; no se aplica a catálogos desde workspaces sin ABAC habilitado.
Actualmente, solo se aplica a tablas Unity Catalog. No se admiten vistas, vistas materializadas ni tablas de streaming.
Solo una política de máscara o filtro puede aplicarse por columna/fila en la jerarquía.
Cómo configurar ABAC
- Crear etiquetas reguladas (governed tags)
- Asignar etiquetas a recursos (catálogo, esquema, tabla)
- Definir políticas de filtro de fila / máscara de columna
- Incluir UDFs si se requiere lógica personalizada
- Realizar pruebas y validación
- Verificar registros de auditoría
- Gestionar herencia y excepciones
-- Ejemplo sintético de configuración
CREATE TAG region;
ALTER TABLE clientes SET TAG region = 'LATAM';
CREATE ROW FILTER POLICY region_filter AS (region = CURRENT_USER_REGION());
Buenas prácticas y recomendaciones
- Aplica políticas en niveles elevados (catálogo o esquema) para evitar redundancia.
- Diseña etiquetas con nomenclaturas consistentes y taxonomías claras.
- Realiza pruebas en entornos controlados antes de producción.
- Mantén monitoreo y auditoría activa para trazabilidad.
- Planifica el manejo de excepciones y revisa periódicamente las políticas y etiquetas.
Conclusión
ABAC representa un salto cualitativo en la gobernanza de datos: aporta flexibilidad, escalabilidad y contexto a las políticas de acceso. Al integrarse con Unity Catalog, permite a las organizaciones definir controles dinámicos alineados con sus necesidades de negocio y cumplimiento, sin aumentar la complejidad administrativa.
tip
Explorar su implementación en un entorno de prueba es una excelente forma de preparar tu estrategia de acceso basada en atributos y fortalecer tu modelo de gobernanza moderna.