Anonimizador de datos

Anonimizador de datos

Es requerimiento surge de la necesidad de tener datos personales enmascarados para mantener la privacidad de los involucrados y poder distribuirlo de manera abierta.

Disponible la misma a partir de 2.3.0, adjunto archivo al final del post.

Requisitos

Servidor actual donde se encuentra el servidor de postgres corriendo.
Directorio anonimizador el usuario postgres debe tener permisos escritura, lectura y ejecución, ejecutar el siguiente script bash “anonimizar.sh” que se encuentra en el siguiente directorio.
en la distribución del paquete

diaguita/aplicacion/bin/anonimizador/fuentes

Le solicitara en el siguiente orden que ingresen
usuario de base de datos: el mismo debe contar con permisos superusuario sobre la base de negocio.
contraseña del usuario.
puerto.
y por defecto deja el dump anonimizado en /tmp con el siguiente nombre
XXXXX_mask.sql

Tablas y campos por el momento que se proceden anonimizar.
scp_convocatorias
asunto_convocatoria
comentario
scp_items_solictados
comentario
descripcion
especificacion
scp_proveedores_sugeridos
proveedor_descripcion
proveedor_telefono
proveedor_direccion
scp_proveedor_sugerido
proveedor_pagina_web
proveedor_contacto
scp_pliegos
objetivo_contratacion
observaciones_generales
scp_pliegos_articulos
descripcion
scp_detalles_ordenes_compras
descripcion
scp_renglones_oferentes
observaciones
descripcion
scp_items_solicitados
especificacion
scp_dictames_evaluacion
observaciones
scp_informes_tecnicos
observaciones
scp_solicitudes_altas_bienes_patrimoniales
observaciones
scp_solicitud_alta_bien_patrimonial_detalles
descripcion_bien
scp_bienes_patrimoniales
descripcion
anx_personas_x_documentos
numero
anx_personas_x_documentos
numero_sin_formato,
razon_social
nombre_fantasia


anonimizador.rar (40.1 KB)

Hola gente.
Disculpen si no corresponde seguir por este hilo, pero quería reportar que tengo problemas con el proceso de anonimizar en la versión 2.6.0

En principio, hay cuestiones en script que tuve que modificar y son:
como los permisos de los archivos son son solo para lectura y escritura del usuario apache entonces el script se tiene que ejecutar como root (o en su defecto como apache), pero primero tuve que agregarles permisos de ejecución al archivo mask y a todos los .sh
luego en el install_mask.sh, tuve que agregar el parámetro -W para que solicite la contraseña del usuario postgres
lo mismo en el la línea del pg_dump en el archivo anonimizar.sh

Hasta ahí parecia que ya estaba todo, pero están mal los nombres de los archivos SQL a los que se hace referencia en el install_mask.sh. En el directorio SQL están los archivos con un número que antecede el nombre, por ejemplo 01_create_tables_mask.sql pero en el script no está referenciado con el número.

porción de script install_mask.sh

PGHOST=$1
PGPORT=$2
DBNAME=$3
echo Procesando create_tables_mask.sql
psql -h$PGHOST -Upostgres -W -p$PGPORT $DBNAME -f sql/create_tables_mask.sql
echo Procesando sql/mask_firstnames.sql
psql -h$PGHOST -Upostgres -W -p$PGPORT $DBNAME -f sql/mask_firstnames.sql

directorio sql:

[root@diaguita-prueba fuentes]# ls -l sql/
total 130
-rw-r----- 1 apache apache   515 abr 24  2018 01_create_tables_mask.sql
-rw-r----- 1 apache apache 26371 abr 24  2018 02_mask_firstnames.sql
-rw-r----- 1 apache apache 47692 abr 24  2018 03_mask_lastnames.sql
-rw-r----- 1 apache apache   997 abr 24  2018 04_proc_init_shuffle_dni.sql
-rw-r----- 1 apache apache  1640 abr 24  2018 05_proc_shuffle_dni.sql
-rw-r----- 1 apache apache   350 abr 24  2018 06_proc_char_to_sha256.sql
-rw-r----- 1 apache apache   358 abr 24  2018 07_proc_get_cuilt.sql
-rw-r----- 1 apache apache   237 abr 24  2018 08_proc_get_username.sql
-rw-r----- 1 apache apache   266 abr 24  2018 09_proc_hash_mail.sql
-rw-r----- 1 apache apache  3941 abr 24  2018 10_proc_hash_nombre.sql
-rw-r----- 1 apache apache    44 abr 24  2018 11_mask_generate_data.sql
-rw-r----- 1 apache apache   980 abr 24  2018 12_proc_rand_apellido.sql
-rw-r----- 1 apache apache  1316 abr 24  2018 13_proc_rand_apyno.sql
-rw-r----- 1 apache apache   274 abr 24  2018 14_proc_rand_dni.sql
-rw-r----- 1 apache apache   498 abr 24  2018 15_proc_rand_fecha.sql
-rw-r----- 1 apache apache   535 abr 24  2018 16_proc_rand_importe.sql
-rw-r----- 1 apache apache  2434 abr 24  2018 17_proc_rand_nombre.sql
-rw-r----- 1 apache apache  2456 abr 24  2018 18_proc_set_text.sql
-rw-r----- 1 apache apache 11355 abr 24  2018 19_proc_shuffle_cuilt.sql
-rw-r----- 1 apache apache   290 abr 24  2018 20_proc_char_to_md5.sql

Igualmente, hice un intento de agrear los números en el script, pero al parecer el orden de la ejecución de los SQL y el de la numeración de los archivos difiere.

No quiero seguir modificando sin saber, por eso les pido si pueden solucionarlo. Evidentemente algo cambió porque además en la versión 2.5.0 (con los primeros cambios que mencioné) funciona bien el proceso.

Muchas gracias y quedo a disposición para lo que sea.
Un abrazo.

Hola Juan,

Te comento que a partir de la versión 2.6.0, diaguita ya cuenta con un comando nativo:

toba proyecto anonimizar_base -p diaguita

Les va a solicitar la contraseña de la BD, y a partir de ahi se procede a realizar el proceso de anonimización.

Si lo probas, comentanos que tal te fue.

Saludos,
Fernando.

Gracias Fernando por la info.

Paso a comentarte:
en primer instancia, para ejecutar ese comando hay que cargar el entorno. Para esto, parado en la carpeta de instalación ejecuto:

[root@diaguita-prueba SIU-Diaguita-2.6.0]# . entorno_toba.env 
Entorno cargado.
Ejecute 'toba' para ver la lista de comandos disponibles.

pero al ejecutar el proceso de anonimizar me da el siguiente error:

root@diaguita-prueba SIU-Diaguita-2.6.0]# toba proyecto anonimizar_base -p diaguita
PHP Notice:  Use of undefined constant apex_pa_instancia - assumed 'apex_pa_instancia' in /var/www/html/siu/SIU-Diaguita-2.6.0/php/extension_toba/diaguita_comando.php on line 1476
 INFO_INSTANCIA: No se encuentra definido el archivo de inicializacion de la INSTANCIA: 'apex_pa_instancia' ('/var/www/html/siu/SIU-Diaguita-2.6.0/instalacion/i__apex_pa_instancia/instancia.ini')

 ___________________________________________________________________________________________________
 TIEMPO: 0,013 segundos

Por último, en la documentación http://documentacion.siu.edu.ar/wiki/SIU-Diaguita/version2.6.0/consideraciones_tecnicas#Anonimizar_la_Base_de_datos se hace referencia a un script diaguita.sh que se usa para ejecutar este proceso pero resulta que el script no existe. Estimo que habría que actualizar la Wiki

Igualmente ¿de qué se trata el error? ¿donde puedo ver más detalles?

Muchas gracias por toda la ayuda.

Saludos!

Hola Juan,

Antes que nada gracias por los aportes.
Te comento que actualizamos la wiki para que refleje los últimos cambios:
http://documentacion.siu.edu.ar/wiki/SIU-Diaguita/version2.6.0/consideraciones_tecnicas#Anonimizar_la_Base_de_datos

Ahora ya cuenta con una versión actualizada, la forma de ejecutarlo es así:


. ./entorno_toba.env
toba proyecto anonimizar_base -p diaguita -i produccion

Se va a solicitar la contraseña del usuario de la BD, y el resultado del backup se guarda en el directorio temp/ del raíz del proyecto.

Comentanos si con esto último te funcionó bien.

Saludos,
Fernando.

Un éxito! funcionó sin problemas.

Muchas gracias.

Saludos!

Buenísimo Juan!

Gracias por el feedback.

Saludos,
Fernando