Datanymizer

Datanymizer (código abierto): anonimización de datos mediante plantillas

Con frecuencia, los sistemas de producción necesitan almacenar datos confidenciales, incluida información de identificación personal. Normalmente, los desarrolladores necesitan que los sistemas de prueba tengan datos que sean lo más parecidos a los datos de los sistemas de producción. Aunque se considera un procedimiento recomendado, los reglamentos de protección de datos (como HIPAA, HITECH, CPRA y el RGPD) son más importantes que nunca para garantizar que los datos personales solo permanezcan cuando sea estrictamente necesario, y que se enmascaren o anonimicen correctamente al transferirlos a otro lugar.

Hay distintas formas de salvar esta diferencia, como diseñar una separación estricta entre tablas de bases de datos que contienen datos de identificación personal y las que no, permitir que se omitan las tablas con datos de identificación personal al exportarlas, y reemplazar dichos datos por datos ficticios en los sistemas de desarrollo. Este método funciona, pero siempre que el sistema cumpla con este modelo de diseño y los datos ficticios se mantengan con determinada similitud para que no causen problemas con los equivalentes de producción.

Una alternativa podría ser generar un tipo especial de volcado «limpio» en el sistema de producción, donde los datos de identificación personal se hayan enmascarado o reemplazado por datos ficticios, preparados para que los importen los desarrolladores, con el fin de reducir el riesgo de que los datos confidenciales abandonen el entorno de producción.

Este es el método usado por Datanymizer.

Creadores de datos ficticios, anonimizadores y ofuscadores: hay varias herramientas de anonimización de datos gratuitas y de código abierto que han estado disponibles durante mucho tiempo y funcionan bastante bien. ¿Por qué crear una nueva? Esta nueva herramienta es compatible con variables globales, restricciones de unicidad, reglas en línea y otras interesantes características.

Teníamos unos requisitos específicos que queríamos que cumpliera nuestra herramienta. No queríamos que el anonimizador usara un volcado «sin formato» y lo mutara. En su lugar, teníamos que proporcionar un volcado ya anonimizado, sin acceso a los datos reales. La configuración que determinaba cómo se anonimizarían los datos reales del sistema tenía que separarse de dichos datos.

También queríamos una herramienta que fuera flexible en relación con la forma de aplicar la anonimización y que, idealmente, permitiera usar plantillas para rellenar los contenidos de los campos.

Presentamos Datanymizer: su compañero flexible que protege la privacidad

Datanymizer hace todo esto: solo tiene que definir una configuración que especifique lo que hacer (y lo que no debe hacerse) y, a continuación, los datos se vuelcan directamente de su base de datos, aplicando las reglas que defina, e incluso se integra el motor de plantillas Tera para sintetizar valores complejos.

El resultado es un volcado SQL anonimizado, escrito en un archivo o enviado directamente a una salida estándar, listo para su importación en una base de datos con sus herramientas habituales.

 

Primeros pasos

Hay varias formas de instalar pg_datanymizer. Elija la opción que le resulte más adecuada.

Archivo binario precompilado:

# Linux / macOS / Windows (MINGW and etc). Installs it into ./bin/ by default
$ curl -sSfL https://raw.githubusercontent.com/datanymizer/datanymizer/main/cli/pg_datanymizer/install.sh | sh -s

# Or more shorter way
$ curl -sSfL https://git.io/pg_datanymizer | sh -s

# Specify installation directory and version
$ curl -sSfL https://git.io/pg_datanymizer | sh -s -- -b usr/local/bin v0.1.0

# Alpine Linux (wget)
$ wget -q -O - https://git.io/pg_datanymizer | sh -s

Homebrew/Linuxbrew:

# Installs the latest stable release
$ brew install datanymizer/tap/pg_datanymizer

# Builds the latest version from the repository
$ brew install --HEAD datanymizer/tap/pg_datanymizer

Docker:

$ docker run --rm -v `pwd`:/app -w /app datanymizer/pg_datanymizer

El archivo README contiene una configuración de ejemplo que puede usarse como punto inicial.

Ahora puede invocar Datanymizer para generar un volcado limpio de sus datos:

$ pg_datanymizer -f /tmp/dump.sql -c ./config.yml postgres://postgres:postgres@localhost/test_database

Crea un nuevo archivo de volcado /tmp/dump.sql con un volcado SQL nativo para la base de datos PostgreSQL. Puede importar datos ficticios de este volcado en una nueva base de datos PostgreSQL con el comando:

$ psql -Upostgres -d new_database < /tmp/dump.sql

Filtros de tabla

Puede especificar una lista de las tablas que nunca deben incluirse en un volcado:

Para volcar solo datos de public.markets y public.users.

# config.yml
#...
filter:
  only:
    - public.markets
    - public.users

Para omitir esas tablas y volcar datos de otras.

# config.yml
#...
filter:
  except:
    - public.markets
    - public.users

También puede especificar filtros de esquema y datos por separado.

Variables globales

Puede especificar las variables globales disponibles desde cualquier regla de template.

# config.yml
tables:
  users:
    bio:
      template:
        format: "User bio is {{var_a}}"
    age:
      template:
        format: {{_0 * global_multiplicator}}
#...
globals:
  var_a: Global variable 1
  global_multiplicator: 6

Reglas integradas

Reglas integradas
Datanymizer es compatible de forma predeterminada (mediante «reglas») con determinados tipos de valores, incluido un filtro de pipeline que permite ejecutar varias reglas de manera secuencial. Además, se incluyen otros filtros como email, ip, words, first_name, last_name, city, phone, capitalize, template, digit, random_number, password, datetime y más.

Restricciones de unicidad

La unicidad se admite mediante las reglas email, ip, phone, y random_number.

La unicidad se garantiza al realizar un seguimiento de los valores generados donde se necesite la unicidad, y se vuelven a generar los duplicados en la lista.

Puede personalizar el número de intentos con try_count. Este campo es opcional; el número predeterminado de intentos depende de la regla.

Desarrollo futuro

Próximamente, queremos implementar las siguientes características adicionales:

  • Filtrado previo: por ejemplo, si no es necesario volcar todos los usuarios, sino solo aquellos que coincidan con criterios específicos (por ejemplo, 100 usuarios con una edad de 27 años o más que se llamen «Alexander»), admitiendo consultas SQL arbitrarias para el cifrado.
  • Generación de datos:si ya no necesita anonimizar los datos existentes, pero en su lugar genera datos ficticios basados en determinadas reglas.

Compatibilidad con RDBMS

Datanymizer es compatible actualmente con bases de datos PostgreSQL, aunque también se ha previsto implementar la compatibilidad con MySQL y MariaDB. ¡Las contribuciones son siempre bien recibidas!

Contacto
¿Tiene algún proyecto en mente?
Vamos a hacerlo realidad
Adjuntar archivo
Los archivos deben ser menores que 8 MB.
Tipos de archivo permitidos: jpg jpeg png txt rtf pdf doc docx ppt pptx.
Este sitio está protegido por reCAPTCHA y se aplican las Condiciones del servicio y la Política de privacidad de Google.