Blog

Noticias

Lanzamiento de Greenmask 0.2.0b1

Herramienta para volcado y anonimización en PostgreSQL

Esta importante versión beta introduce nuevas características y transformadores refactorizados, que incrementan significativamente la flexibilidad de Greenmask para satisfacer aún mejor las necesidades de las empresas. Ayúdenos a mejorar GreenMask y a adaptarlo a las necesidades de la comunidad. Agradecemos sus opiniones en el foro de debate sobre esta versión en GitHub.

Descripción general de Greenmask

Greenmask es una versátil herramienta de código abierto para realizar respaldos, anonimizar y restaurar bases de datos. Escrita en Go puro con librerías PostgreSQL portadas, es una aplicación sin estado y sin dependencia de plataforma, por lo que no requiere modificaciones en su esquema. Es personalizable y compatible con las utilidades PostgreSQL existentes.

Greenmask es ideal para:
  • Tareas ordinarias de respaldo y recuperación, garantizando la integridad y disponibilidad de los datos.
  • Anonimización y enmascaramiento de datos para entornos de prueba y análisis, protegiendo la información confidencial y manteniendo la utilidad de los datos.
Características principales
  • Transformadores determinísticos — enfoque determinista de la transformación de datos basado en las funciones hash. Esto garantiza que los mismos datos de entrada producirán siempre los mismos datos de salida. Casi todos los transformadores admiten motores random o hash, lo que los hace universales para cualquier caso de uso.
  • Parámetros dinámicos — casi todos los transformadores admiten parámetros dinámicos, lo cual permite parametrizar el transformador dinámicamente a partir del valor de la columna de la tabla. Esto resulta útil para resolver dependencias funcionales entre columnas y cumplir con las restricciones.
  • Seguridad de tipos en bases de datos – Garantiza la integridad de los datos validándolos y utilizando el controlador de la base de datos para las operaciones de codificación y decodificación. Este enfoque garantiza la conservación de los formatos de datos.
  • Validación de transformación y mantenimiento sencillo – durante el desarrollo de la ofuscación, Greenmask proporciona mensajes de advertencia de validación y una función de diferencias de transformación, lo cual permite supervisar y mantener las transformaciones de forma eficaz durante todo el ciclo de vida del software.
  • Herencia de transformación de tablas particionadas — define las configuraciones de transformación una única vez y las aplica a todas las particiones dentro de tablas particionadas, lo cual simplifica el proceso de ofuscación.
  • Sin estado — Greenmask funciona como un volcado lógico y no afecta al esquema existente de la base de datos.
  • Compatible con versiones anteriores — soporta perfectamente las mismas características y protocolos que las utilidades Vanilla existentes para PostgreSQL. Los volcados creados por Greenmask se pueden restaurar correctamente con la utilidad pg_restore.
  • Extensible — los usuarios tienen flexibilidad para aplicar transformaciones basadas en dominios en cualquier lenguaje de programación o utilizar plantillas predefinidas.
  • Proporciona distintos tipos de almacenamiento — Greenmask ofrece diversas opciones de almacenamiento de datos locales y remotos, incluidos directorios y soluciones de almacenamiento tipo S3.

Uso del playground para la versión beta

Si desean lanzar un playground de Greenmask para la versión beta, ejecuten:

git checkout tags/v0.2.0b1 -b v0.2.0b1 docker-compose run greenmask-from-source

Resumen de cambios

  • Introducción de parámetros dinámicos en los transformadores
    • La mayoría de los transformadores admiten ahora parámetros dinámicos cuando sea necesario.
    • Aplicación estricta de parámetros dinámicos. Cuando se necesita 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 como UnixTimestampToDate e IntToBool.
  • Se ha reformulado de forma significativa la lógica de transformación, lo cual aumenta la capacidad de personalización y la flexibilidad de los transformadores.
  • 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 hash sha3, que aunque seguras, funcionan con lentitud. En la versión estable, habrá una opción para elegir entre sha3 y SipHash.
  • Introducción de la plantilla de valores de parámetros estáticos

Cambios destacados

Core
  • Se introduce la interfaz Parametrizer, ahora implementada tanto para parámetros dinámicos como estáticos.
  • Se ha cambiado el nombre de la mayoría de los tipos de herramientas para ofrecer una mayor claridad y una documentación más completa.
  • Se ha refactorizado la lógica de inicialización del Driver.
  • Se han añadido alertas de validación para los tipos anulados en el Driver.
  • Migración de los transformadores integrados existentes para utilizar la nueva interfaz Parametrizer.
  • Se ha implementado una nueva abstracción, TransformationContext, como primer paso para permitir nuevas condiciones de transformación de características (#34).
  • Se han optimizado la mayoría de los transformadores para que funcionen tanto en modo dinámico como estático. Mientras que el modo dinámico ofrece flexibilidad, el modo estático garantiza un alto rendimiento. El uso exclusivo de las funciones de transformación necesarias favorece la predictibilidad del tiempo de transformación..
Documentación

La documentación ha sido modificada de forma significativa. Se ha añadido nueva información sobre las características y se han actualizado las descripciones de los transformadores.

Transformadores
  • RandomEmail – Introduce un nuevo transformador que admite motores aleatorios y deterministas. Permite la generación flexible de valores de correo electrónico; es posible utilizar valores de columna en la plantilla y optar por mantener el dominio original o seleccionar cualquiera del parámetro domains.
  • NoiseDate, NoiseFloat, NoiseInt – Estos transformadores admiten motores tanto aleatorios como deterministas y ofrecen parámetros de modo dinámico que controlan los umbrales de ruido dentro de los rangos min y max. A diferencia de las implementaciones anteriores, que utilizaban un único parámetro de ratio, la nueva versión incorpora los parámetros min_ratio y max_ratio para definir los valores de ruido con mayor precisión. Utilizar el motor hash en estos transformadores mejora la seguridad puesto que complica el análisis estadístico para los atacantes, especialmente al utilizar la misma salt de forma constante durante largos periodos.
  • NoiseNumeric – Un transformador de nueva implementación, que comparte características con NoiseInt y NoiseFloat, pero diseñado específicamente para valores numéricos (enteros o flotantes de gran tamaño). Proporciona un parámetro decimal para manejar valores con fracciones.
  • RandomChoice – Ahora soporta el motor hash
  • RandomDate, RandomFloat, RandomInt – Ahora mejorado con soporte de motor hash. Los parámetros de umbral min y max se han actualizado para admitir el modo dinámico, lo que permite configuraciones más flexibles.
  • RandomNumeric – Un nuevo transformador diseñado específicamente para tipos numéricos (enteros o flotantes de gran tamaño), que comparte características similares con RandomInt y RandomFloat, pero adaptado para manejar valores numéricos voluminosos.
  • RandomString – Ahora admite el modo de motor hash
  • RandomUnixTimestamp – Este nuevo transformador genera timestamps Unix con unidades seleccionables (second, millisecond, microsecond, nanosecond). De funcionamiento similar a RandomDate, admite el motor hash y parámetros dinámicos para los umbrales min y max, con la posibilidad de anular estas unidades mediante los parámetros min_unit y max_uni.
  • RandomUuid – Se ha añadido el soporte para motores hash
  • RandomPerson – Se ha implementado un nuevo transformador que sustituye a RandomName, RandomLastName, RandomFirstName, RandomFirstNameMale, RandomFirstNameFemale, RandomTitleMale, y RandomTitleFemale. Este nuevo transformador ofrece una mayor posibilidad de personalización, a la vez que proporciona funcionalidades similares a las de las versiones anteriores. Genera datos personales como FirstName, LastName, y Title, basándose en el parámetro gender proporcionado, que ahora admite el modo dinámico. Las futuras versiones menores permitirán sobrescribir la base de datos de nombres predeterminada.
  • Se ha añadido tsModify –  una nueva función de plantilla para la modificación de objetos time
  • Se introduce el nuevo transformador RandomIp capaz de generar una dirección IP aleatoria basada en la máscara de red especificada.
  • Se ha añadido un nuevo transformador RandomMac para generar direcciones Mac aleatorias.
  • Los transformadores eliminados incluyen RandomMacAddress, RandomIPv4, RandomIPv6, RandomUnixTime, RandomTitleMale, RandomTitleFemale, RandomFirstName, RandomFirstNameMale, RandomFirstNameFemale, RandomLastName, y RandomName due debido a la introducción de opciones más flexibles y unificadas.

Enlaces útiles

Haz clic aquí para leer la noticia original en inglés en la página web oficial de PostgreSQL.