Greenmask – Versiones 0.2.0 – 0.2.5
Herramienta para la anonimización de bases de datos PostgreSQL y la generación de datos sintéticos
Estas versiones marcan hitos importantes, ampliando significativamente la funcionalidad de Greenmask y transformándola en una solución sencilla, ampliable y fiable para la seguridad de bases de datos, la anonimización de datos y las operaciones cotidianas. Nuestro objetivo es desarrollar un sistema principal que sirva de base a entornos de pruebas dinámicos y completos y a una sólida seguridad de los datos.
Estas actualizaciones introducen nuevas funciones como el subconjunto de bases de datos, la compatibilidad con pgzip, la recuperación en orden topológico y los transformadores refactorizados, lo cual mejora enormemente la flexibilidad de Greenmask para satisfacer diversas necesidades empresariales. También incluyen numerosas correcciones y mejoras.
Descripción de Greenmask
Greenmask es una potente herramienta de código abierto diseñada para el volcado de respaldos de bases de datos lógicas, la anonimización, la generación de datos sintéticos y la recuperación. Es una aplicación sin estado y no requiere ningún cambio en el esquema de la base de datos. Está diseñada para ser altamente personalizable y compatible con las utilidades PostgreSQL existentes, y es rápida y fiable.
Es perfecta para:
- Respaldo y Restauración: Agiliza tareas diarias como respaldos lógicos, la restauración de tablas tras un truncamiento o la sustitución de pg_dump y pg_restore con facilidad.
- Anonimización y enmascaramiento de datos: Simplifica la configuración del entorno de pruebas y las tareas analíticas anonimizando y transformando los respaldos, lo cual garantiza datos coherentes y seguros para una mayor rapidez.
Greenmask en GitHub
Cambios destacados
- Soporte para PostgreSQL 17 – biblioteca revisada para soportar PostgreSQL 17
- Subconjunto de base de datos – una nueva característica que permite definir un subconjunto de la base de datos, reduciendo así el tamaño del volcado (#110). Se trata de una función sólida y polivalente, especialmente útil para entornos de pruebas y desarrollo. Soporta:
- Referencias con valores NULL – genera la consulta LEFT JOIN para la referencia FK con valores NULL para incluirlos en el subconjunto.
- Soporte para referencias virtuales (claves foráneas virtuales) – crea una FK (clave foránea) lógica en Greenmask que se utilizará para el gráfico de dependencias de subconjuntos. La referencia virtual se puede definir para una columna o una expresión, lo cual permite obtener el valor de JSON y similares.
- Soporte para referencias circulares – Greenmask resolverá automáticamente las dependencias circulares en el subconjunto generando una consulta recursiva. La consulta se genera con comprobaciones de integridad del subconjunto que garantizan la coherencia de los datos recopilados de las dependencias circulares.
- Documentación completa con ejemplos y resolución de problemas.
- Compatible con FK y PK que tengan más de una columna (o expresión).
- Soporte para la resolución multiciclo en un SCC (componente fuertemente conexo) – Greenmask generará una consulta recursiva para el SCC tanto si se trata de un ciclo único como de varios ciclos, lo cual convierte al sistema de subconjuntos en universal para cualquier esquema de base de datos.
- Soporte para relaciones polimórficas – Es posible definir una referencia virtual para una tabla con referencias polimórficas mediante el atributo
polymorphic_exprs
y utilizar Greenmask a fin de generar un subconjunto para dichas tablas.
- Condiciones de transformación: ejecuta una transformación definida sólo si se cumple una condición específica. #133
- Herencia de transformación – herencia de transformación para tablas particionadas y tablas con claves foráneas. Se define una sola vez y se aplica a todas. [#229]
- Soporte para pgzip para una compresión y descompresión más rápidas – configurar
--pgzip
can speed up the dump and restorati puede acelerar los procesos de volcado y restauración a través de la compresión paralela. En algunas pruebas, se muestran operaciones de volcado y restauración hasta 5 veces más rápidas. - Restauración en orden topológico – Esta opción impide que se restauren las tablas dependientes hasta que se hayan restaurado las tablas de las que dependen. Resulta útil cuando se desea recibir una notificación de errores lo más inmediata posible sin necesidad de esperar a que se restaure toda la tabla.
- Restauración en formato INSERT – Para un proceso de restauración flexible, Greenmask admite ahora la restauración de datos en formato
INSERT
. Esta opción genera las sentencias de inserción a partir de los registros COPY del volcado. No es necesario volver a volcar los datos para utilizar esta función; puede definirse en el comandorestore
. La siguiente es la lista de nuevas funciones relacionadas con el formatoINSERT
:- Generar sentencias
INSERT
con la cláusulaON CONFLICT DO NOTHING
si la opción--on-conflict-do-nothing
está definida. - Lista de exclusión de errores en la configuración para omitir determinados errores y continuar insertando los siguientes registros del volcado.
- Caso de uso: volcado y restauración incremental de datos lógicos. Por ejemplo, si se dispone de una base de datos y se desea insertar regularmente datos procedentes de otra fuente, es posible utilizar esta característica junto con el subconjunto de bases de datos y las transformaciones para actualizar la base de datos de destino.
- Generar sentencias
- Restauración de datos por lotes (#173) – Por defecto, el protocolo COPY devuelve el error únicamente en la confirmación de la transacción. Para anular este comportamiento, se puede utilizar la opción
--batch-size
especificando el número de registros que se insertarán en un único lote durante la ejecución del comando COPY. Esta opción resulta útil cuando se desea controlar el tamaño de la transacción y confirmarla. - Introducción del parámetro
keep_null
para el transformadorRandomPerson
. - Introducción de parámetros dinámicos en los transformadores
- La mayoría de los transformadores admiten ahora parámetros dinámicos cuando procede.
- Los parámetros dinámicos se aplican de forma estricta. Si es necesario convertir valores a otro tipo, Greenmask proporciona plantillas y funciones de conversión predefinidas accesibles a través de
cast_to
. Estas funciones abarcan operaciones frecuentes comoUnixTimestampToDate
eIntToBool
.
- La lógica de transformación se ha rediseñado considerablemente, lo que hace que los transformadores sean más personalizables y flexibles que antes.
- Introducción de motores de transformación
random
– genera valores de transformador basados en algoritmos pseudoaleatorios.hash
– genera valores de transformador utilizando funciones hash. Actualmente, utiliza funciones hashsha3
, que aunque seguras, funcionan con lentitud. En la versión estable, habrá una opción para elegir entresha3
ySipHash
.
- Introducción de plantilla de valores de parámetros estáticos
- Gestión de retención de volcados – Se han introducido parámetros de retención (#201) para el comando delete. Se han introducido dos nuevos estados: fallido y en curso. Un volcado se considera fallido si no tiene un latido «done» o si el último timestamp del latido supera los 30 minutos. El comando delete ahora soporta los siguientes parámetros de retención:
--dry-run
: Ejecuta la operación de borrado en modo de prueba con una salida detallada, sin borrar nada realmente.--before-date 2024-08-27T23:50:54+00:00
: Elimina los volcados anteriores a la fecha especificada. La fecha debe proporcionarse en formato RFC3339Nano, por ejemplo:2021-01-01T00:00:00Z
.--retain-recent 10
: Conserva los N volcados más recientes, donde N es especificado por el usuario.--retain-for 1w2d3h4m5s6ms7us8ns
: Conserva los volcados durante el tiempo especificado. El formato admite semanas (w), días (d), horas (h), minutos (m), segundos (s), milisegundos (ms), microsegundos (us) y nanosegundos (ns).--prune-failed
: Depura (elimina) todos los volcados que han fallado.--prune-unsafe
: Elimina los volcados con estado «unknown-or-failed». Esta opción solo funciona junto con--prune-failed
.
Lista de versiones:
Enlaces
No duden en ponerse en contacto con nosotros si tienen alguna pregunta o necesitan ayuda:
- Repositorio de Greenmask
- Documentación
- Roadmap de Greenmask
- Discord
- Telegram
- Correo electrónico