Anonimización de base de datos

Buen día!
Estoy probando anonimizar la base de datos del sistema Kolla, para ello estoy siguiendo la guía https://documentacion.siu.edu.ar/wiki/SIU-Kolla/Version_4.7.0/anonimizador y si bien ya instale el paquete libpq-dev. Ahora cuando ejecuto echo Hola | ./mask me da el siguiente error:
bash: ./mask: No existe el fichero o el directorio
Mi consulta es en que directorio tengo que estar parado para ejecutar el comando?

Saludos Fernando.

Hola Fernando, te comento que la documentación está desactualizada.

Debes posicionarte en el directorio:

php/3ros/anonimizador

Luego configurar las variables de entorno que están en el archivo env_local.sh y darle permisos de ejecución. Ejecutas ese archivo

.  env_local.sh

Y recién ahí haces la prueba:

echo Hola | ./mask

Si todo esto funciona correctamente, entonces continuás instalando las funciones de anonimización:

./install_mask.sh server server_port nombre_de_base

Una vez hecho esto ya podés hacer un backup de la base:

pg_dump -h HOST -U USER -d BASE_NOMBRE -n SCHEMA | ./mask > BASE_ANON.sql

Te comento que estamos trabajando en una mejora al proceso de anonimización de bases para que este comando esté disponible directamente en el instalador del proyecto con lo cuál va a ser mucho más simple. Con un comando similar a este:

./bin/instalador base:anonimizar

Ya tendrías una base clonada y lista para exportar. Como te decía eso probablemente salga en la nueva versión de Kolla.

Cualquier duda la seguimos.

Buen día Rodrigo!
Estoy siguiendo los pasos que sugeriste y cuando ejecuto ./install_mask.sh server server_port nombre_de_base, me sale un error de codificación después parece seguir normalmente.

Procesando create_tables_mask.sql
Contraseña para usuario postgres:
psql:sql/create_tables_mask.sql:4: NOTICE: el esquema «mask» no existe, omitiendo
DROP SCHEMA
CREATE SCHEMA
CREATE TABLE
CREATE TABLE
CREATE TABLE
Procesando sql/mask_firstnames.sql
Contraseña para usuario postgres:
psql:sql/mask_firstnames.sql:502: ERROR: secuencia de bytes no válida para codificación «UTF8»: 0xd1 0x41
CONTEXTO: COPY firstnames, línea 95
Procesando mask_lastnames.sql
Contraseña para usuario postgres:
COPY 1000
Procesando proc_init_shuffle_dni.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/proc_char_to_md5.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_char_to_sha256.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_get_cuilt.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_hash_mail.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/proc_rand_apellido.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_rand_apyno.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_rand_dni.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/proc_rand_nombre.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_hash_nombre.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_rand_fecha.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/proc_set_text.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
psql:sql/proc_set_text.sql:44: NOTICE: la secuencia «maskseq1» no existe, omitiendo
DROP SEQUENCE
CREATE SEQUENCE
psql:sql/proc_set_text.sql:46: NOTICE: la secuencia «maskseq2» no existe, omitiendo
DROP SEQUENCE
CREATE SEQUENCE
psql:sql/proc_set_text.sql:48: NOTICE: la secuencia «maskseq3» no existe, omitiendo
DROP SEQUENCE
CREATE SEQUENCE
psql:sql/proc_set_text.sql:50: NOTICE: la secuencia «maskseq4» no existe, omitiendo
DROP SEQUENCE
CREATE SEQUENCE
psql:sql/proc_set_text.sql:52: NOTICE: la secuencia «maskseq5» no existe, omitiendo
DROP SEQUENCE
CREATE SEQUENCE
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_shuffle_dni.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/proc_shuffle_cuilt.sql
Contraseña para usuario postgres:
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
Procesando sql/proc_get_username.sql
Contraseña para usuario postgres:
CREATE SEQUENCE
CREATE FUNCTION
Procesando sql/proc_rand_importe.sql
Contraseña para usuario postgres:
CREATE FUNCTION
Procesando sql/mask_generate_data.sql
Contraseña para usuario postgres:
init_shuffle_dni

          211

(1 fila)

Quiero saber si esto impacta en el proceso de anonimización?

Luego ejecuto pg_dump -h HOST -U USER -d BASE_NOMBRE -n SCHEMA | ./mask > BASE_ANON.sql, me crea la base, la restauro en postgres y luego modifico el bases.ini para que apunte a la base anonimizada.
Al ingresar al sistema me sale el siguiente error:
SQLSTATE[3F000]: Invalid schema name: 7 ERROR: no existe el esquema «toba_kolla_logs»
Adjunto log de postgresql.


postgresql-13-main.log.zip (16.7 KB)

Hola Fernando, el error de codificación se debe a que en el archivo

sql/mask_firstnames.sql

hay una secuencia de caracteres no válido. Borrá la línea 1254 de ese archivo

95	I�AKY 	M

y corré nuevamente

./install_mask.sh server server_port nombre_de_base

Con respecto al error, deberías ejecutar el dump sin el parámetro -n para que dumpee todos los schemas de la base.

Vale aclarar lo siguiente:

  • Este proceso fue pensado para que las instituciones pudieran enviarnos un dump con datos anonimizados para análisis de errores.
  • El proceso de anonimización que figura en la documentación sólo anonimiza datos de personas en la tabla kolla.sge_encuestado y no las de apex_usuario que es la tabla donde Toba guarda la info de usuarios.
  • La tabla sge_encuestado guarda conexión con apex_usuario por medio del campo usuario, y este campo se anonimiza sólo en sge_encuestado. Por lo tanto si intentás navegar un kolla con una base anonimizada, no vas a poder listar los usuarios aún cuando estén en la base.

Contános cuál es el motivo por el cuál necesitas anonimizar para ver si podemos asesorarte mejor.

Hola Rodrigo! Estamos probando anonimizar la base para trabajar con la misma cuando realizamos capacitaciones y no queremos que se vean datos de los usuarios reales.
Probé con los pasos que me pasaste y algunos de la guía de Documentación-SIU y pude anonimizar la base correctamente, te adjunto el documento con los pasos realizados por si les sirve para actualizar la guía de Documentación-SIU.


KOL_anonimizar base de datos.odt.zip (15.9 KB)

Bárbaro Fernando. Gracias!.