Anonimizador Uso

De SIU
Saltar a: navegación, buscar

Como usar el Anonimizador

Configuración

Antes de utilizar el anonimizador, es necesario configurarlo ejecutando los siguientes pasos:

1 - Una de las funciones que se usa en los criterios de anonimización es la sha256, para usar esta función es necesario instalar previamente las funciones pgcrypto. En primer lugar vamos a verificar si las pgcrypto están instaladas:

a) Probar si existe la función digest que se ve a continuación

bd_claro=# select encode(digest('hola', 'sha256'), 'hex');
                        encode
-----------------------------------------------------------------
b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79
(1 row)

b) Si el paso anterior nos da error, debemos proceder a instalar el contrib (aquí explicamos como se instala en versión 9.1 de postgres, si tenes versión 8.4, fíjate en este link) con el comando:

sudo apt-get install postgresql-contrib.9.1

demo@g3w2-demo:/usr/share/postgresql/9.1/extension$ sudo apt-get install postgresql-contrib.9.1
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Nota, seleccionando “postgresql-contrib-9.1» para la expresion regular “postgresql-contrib.9.
postgresql-contrib-9.1 ya está en su versión más reciente.

c) Desde psql ejecutar el comando:

create extension pg_crypto;

@g3w2-demo:/usr/share/postgresql/9.1/extension$ psql bd_claro
psql (9.1.11, server 9.1.14) Type "help" for help.
bd_claro=# \l
bd_claro=# create extension pgcrypto;
CREATE EXTENSION

d) probar si se creo correctamente invocando a digest

@g3w2-demo:/usr/share/postgresql/9.1/extension$ psql bd_claro
psql (9.1.11, server 9.1.14) Type "help" for help.
bd_claro=# select encode(digest('hola', 'sha256'), 'hex');
                            encode
-----------------------------------------------------------------
b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79
(1 row)
encode

2 - Hay que crear los procedimientos de cada criterio de anonimización en la base de datos a anonimizar. Esto se debe hacer en la misma base a enmascarar o en otra base. El nombre de la base a la que se conecta lo toma de la variable de environment DBNAME, el default es postgres.

Para crear los procedimientos y tablas que usa el programa mask en la base a enmascarar se debe ejecutar

./install_mask.sh server port nombre_de_la_base

como se puede ver en la siguiente pantalla:

postgres@g3w2-demo:/home/masking/anonimizar$ ./install_mask.sh localhost 5432 bd_claro
Procesando tables_mask.sql
psql:tables_mask.sq1:4: NOTICE: schema "mask" does not exist, skipping DROP SCHEMA
CREATE SCHEMA

3 – Ahora tenemos que indicar cuales son las tablas y columnas que queremos anonimizar. También tenemos que indicar que tipo de criterio vamos a aplicar para transformar o anonimizar los datos originales. Cada criterio tiene asociado un procedimiento almacenado de postgres, que tenemos que especificar junto al esquema, la tabla y la columna a anonimizar. El nombre por defecto del archivo de configuración es mask.conf sin embargo puede tener cualquier nombre siempre y cuando seteemos la variable de entorno MASKCONFIG con el nombre del archivo como se ve a continuación.

@g3w2-demo:/home/masking/anonimizar$ export MASKCONFIG=mask.conf.mapuche_v4

El contenido del archivo de configuración se ve a continuación. Los campos de izquirda a derecha son: esquema, tabla, columna, procedimiento almacenado que hace la conversión.

mapuche, dh01, desc_nombr, mask.rand_nombre('$desc_nombr')
mapuche, dh01, nro_docum,  mask.shuffle_dni(100,40000000,'$nro_docum')
mapuche, dh01, desc_appat, mask.rand_apellido('$desc_appat')
mapuche, dh01, desc_apmat, mask.rand_apellido('$desc_apmat')
mapuche, dh01, desc_apcas, mask.rand_apellido('$desc_apcas')

Uso

El anonimizador requiere como input la salida de un pg_dump plano (formato –Fp) donde hacer los reemplazos de los datos sensibles. Es por eso que es mandatorio que el programa mask reciba por standard input la salida de un pg_dump, como se puede ver en el siguiente gráfico:

Gráfico anonimizador.png


El pg_dump se puede generar al mismo momento que se pasa al mask, o ser generado previamente. En cualquier caso el resultado será también la salida de un pg_dump con los datos sensibles reemplazados, el resto del archivo pg_dump se mantiene sin cambios. Por lo tanto se lo puede importar como a cualquier pg_dump. El nombre de la base de datos a anonimizar se debe setear en la variable DBNAME, tal como se ve a continuación junto a otras variables de entorno que soporta el progama mask

postgres@g3w2-demo:/home/masking/anonimizar$ more env_local.sh
export DBNAME=bd_claro
export DBPORT=5432
export DBHOST=127.0.8.1
export MASKCONFIG=mask.conf.mapuche_v4
export DEBUG=9
export MASKDIR=Mome/masking/anonimizar
#export VARSTARTCHAR=%

Mas abajo un ejemplo de como invocar al anonimizador para la base bd_claro

postgres@g3w2-demo:/home/masking/anonimizar$ pg_dump bd_claro 1 ./mask > bd_anonima.sql
postgres@g3w2-demo:/home/masking/anonimizar$ ls -l bd_anonima.sql
-rw-rw-r-- 1 postgres postgres 59303 oct 31 15:30 bd_anontma.sql
postgres@g3w2-demouhome/masking/anonimizar$

El archivo generado (en nuestro caso bd_anonima.sql) es el que debemos usar como base anonimizada para importar o enviar.