Gobernanza de data lake - Control de acceso centralizado con AWS Lake Formation

Construcción, control de acceso y gobernanza de data lake con AWS Lake Formation. Gestión granular de permisos a nivel de columna y fila para data lakes basados en S3, e integración con Glue y Athena.

Desafíos de gobernanza del data lake y rol de Lake Formation

Un data lake basado en S3 es una arquitectura poderosa que gestiona centralmente datos estructurados, semiestructurados y no estructurados a bajo costo. Sin embargo, a medida que aumentan el volumen de datos y el número de usuarios, la gestión de "quién puede acceder a qué datos" se vuelve rápidamente compleja. Tradicionalmente, el control de acceso se lograba combinando políticas de bucket S3, políticas IAM y políticas de recursos del Glue Data Catalog, pero la gestión tiende a colapsar cuando el número de tablas supera los cientos. AWS Lake Formation es un servicio de gobernanza de data lake disponible desde 2019 que gestiona centralmente la ingesta de datos, registro en catálogo, control de acceso y auditoría. El núcleo de Lake Formation es la capa de gestión de permisos, que puede otorgar permisos de acceso a datos en S3 a nivel de base de datos, tabla, columna, fila y celda.

Modelo de control de acceso y LF-TBAC

Lake Formation ofrece dos modelos de control de acceso. El método Named Resource es un modelo convencional que otorga permisos a principals (usuarios/roles IAM) especificando bases de datos, tablas y columnas específicas. Tag-Based Access Control (LF-TBAC) es un modelo que asigna LF-Tags (pares clave-valor) tanto a recursos de datos como a principals, aplicando automáticamente permisos cuando las etiquetas coinciden. Por ejemplo, si asigna la etiqueta department=finance a una tabla y asocia la misma etiqueta al rol del departamento financiero, el acceso se permite automáticamente sin configuración de permisos individual cada vez que se agrega una nueva tabla. ```bash # Creación de LF-Tag aws lakeformation create-lf-tag \ --catalog-id 123456789012 \ --tag-key department \ --tag-values '["finance","engineering","marketing"]' # Asignar LF-Tag a tabla aws lakeformation add-lf-tags-to-resource \ --resource '{"Table":{"DatabaseName":"analytics","Name":"transactions"}}' \ --lf-tags '[{"TagKey":"department","TagValues":["finance"]}]' ``` Row-Level Security permite definir expresiones de filtro para restringir las filas visibles por principal. Por ejemplo, configurando la condición region='ap-northeast-1', solo se devuelven datos de la región de Tokio. Combinado con control de acceso a nivel de columna, puede proporcionar vistas diferentes del mismo tabla para cada usuario.

Integración con catálogo de datos y motores de consulta

Lake Formation se integra con AWS Glue Data Catalog, gestionando centralmente la información de esquema (bases de datos, tablas, particiones, definiciones de columnas) de datos en S3. Glue Crawler escanea fuentes de datos, detecta automáticamente esquemas y los registra en el catálogo. Los permisos de Lake Formation se aplican a las tablas registradas, y el control de acceso se aplica automáticamente al ejecutar consultas desde Athena, Redshift Spectrum o EMR (Spark/Hive). Los usuarios solo escriben SQL, y Lake Formation ejecuta verificaciones de permisos y filtrado de columnas/filas en segundo plano. Con la integración de Athena, incluso si un usuario ejecuta SELECT *, las columnas sin permiso se excluyen automáticamente de los resultados. Este control de acceso transparente elimina la necesidad de implementar lógica de filtrado en el lado de la aplicación. La función Governed Tables permite realizar transacciones ACID en datos de S3, manteniendo la consistencia incluso cuando múltiples trabajos ETL actualizan datos simultáneamente.

Uso compartido entre cuentas y data mesh

La función de uso compartido entre cuentas de Lake Formation permite compartir datos de forma segura con múltiples cuentas dentro de AWS Organizations. Cuando la cuenta propietaria de datos otorga permisos de tablas o bases de datos a otra cuenta, se crea un resource link en el Lake Formation de la cuenta receptora, permitiendo consultas directas desde Athena o Redshift Spectrum. No se requiere copia física de datos, referenciando los datos originales en S3, sin duplicación de costos de almacenamiento. Este mecanismo funciona como base para la arquitectura de data mesh. Cada equipo de dominio (ventas, marketing, ingeniería) gestiona productos de datos en su propia cuenta y los publica a toda la organización a través de Lake Formation. La integración con AWS RAM (Resource Access Manager) también permite controlar el uso compartido a nivel de OU (unidad organizativa) de Organizations. En cuanto a auditoría, la integración de CloudTrail con Lake Formation registra automáticamente logs de auditoría de quién accedió a qué datos y cuándo. Para ampliar conocimientos en análisis de datos, libros especializados en Amazon también son útiles.

Procedimiento de implementación y mejores prácticas

El procedimiento para introducir Lake Formation en un entorno existente de S3 + Glue + Athena puede realizarse gradualmente. Primero, designe un administrador de Lake Formation (Data Lake Administrator) y registre las bases de datos existentes del Glue Data Catalog en Lake Formation. Luego, registre las ubicaciones de datos de S3 en Lake Formation para que Lake Formation medie el acceso a los datos. En este punto, se migra del control de acceso basado en IAM al basado en Lake Formation, eliminando gradualmente los permisos de IAMAllowedPrincipals y reemplazándolos con permisos de Lake Formation. Como precaución durante la migración, eliminar IAMAllowedPrincipals de una vez hará que las consultas existentes fallen, por lo que se recomienda migrar gradualmente por tabla. Como mejores prácticas: adoptar LF-TBAC para gestión de permisos escalable, seguir el principio de mínimo privilegio para acceso a datos de producción, y auditar periódicamente los logs de CloudTrail para confirmar patrones de acceso. Lake Formation en sí es gratuito, y los cargos son solo por el uso de servicios base como almacenamiento S3, trabajos Glue Crawler/ETL y escaneo de consultas Athena.

Precios de Lake Formation

Lake Formation en sí no genera cargos adicionales. Los costos son los de los servicios AWS que Lake Formation gestiona (Glue Crawler, almacenamiento S3, consultas Athena). Glue Crawler cuesta aproximadamente $0.44 por hora DPU, y Athena aproximadamente $5.00 por TB escaneado. El control de acceso basado en etiquetas (LF-TBAC) de Lake Formation para gestión de permisos a nivel de columna y fila tampoco genera cargos adicionales.

Resumen - Directrices de uso de Lake Formation

AWS Lake Formation es un servicio que agrega control de acceso y gobernanza de nivel empresarial a data lakes basados en S3. Sus principales fortalezas son la gestión granular de permisos a nivel de columna, fila y celda, la operación de políticas escalable con LF-TBAC y la realización de data mesh con uso compartido entre cuentas. La integración transparente con Athena, Redshift Spectrum y EMR permite introducir control de acceso sin cambiar los flujos de trabajo de consultas existentes. Lake Formation es gratuito y permite una introducción gradual en entornos existentes de S3 + Glue + Athena, siendo la primera opción al considerar el fortalecimiento de la gobernanza del data lake.