Attribute-Based Access Control (ABAC) en Unity Catalog: Gobernanza dinámica y escalable

Attribute-Based Access Control (ABAC) en Unity Catalog: Gobernanza dinámica y escalable

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

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());

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 MODIFY puede 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

  1. Crear etiquetas reguladas (governed tags)
  2. Asignar etiquetas a recursos (catálogo, esquema, tabla)
  3. Definir políticas de filtro de fila / máscara de columna
  4. Incluir UDFs si se requiere lógica personalizada
  5. Realizar pruebas y validación
  6. Verificar registros de auditoría
  7. 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.

Recursos

  • #Seguridad
  • #Control de acceso
  • #Gobernanza
Compártelo:
Contáctanos