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
ohash
, 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 comoUnixTimestampToDate
eIntToBool
.
- 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 hashsha3
, que aunque seguras, funcionan con lentitud. En la versión estable, habrá una opción para elegir entresha3
ySipHash
.
- 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
ymax
. A diferencia de las implementaciones anteriores, que utilizaban un único parámetro de ratio, la nueva versión incorpora los parámetrosmin_ratio
ymax_ratio
para definir los valores de ruido con mayor precisión. Utilizar el motorhash
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
yNoiseFloat
, pero diseñado específicamente para valores numéricos (enteros o flotantes de gran tamaño). Proporciona un parámetrodecimal
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
ymax
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
yRandomFloat
, 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 aRandomDate
, admite el motor hash y parámetros dinámicos para los umbralesmin
ymax
, con la posibilidad de anular estas unidades mediante los parámetrosmin_unit
ymax_uni
. - RandomUuid – Se ha añadido el soporte para motores hash
RandomPerson
– Se ha implementado un nuevo transformador que sustituye aRandomName
,RandomLastName
,RandomFirstName
,RandomFirstNameMale
,RandomFirstNameFemale
,RandomTitleMale
, yRandomTitleFemale
. 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 comoFirstName
,LastName
, yTitle
, basándose en el parámetrogender
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
, yRandomName
due debido a la introducción de opciones más flexibles y unificadas.
Enlaces útiles
- Roadmap pública
- Explorar la documentación detallada
- Acceso a la última versión en GitHub
- Contáctennos en el Correo Electrónico de Soporte