Problema al cargar Querandies

Buenos días.

Estamos intentando cargar por primera vez datos desde Querandies, siguiendo los pasos de la guía se crea el directorio temporal, se carga la clave de encriptado con gpg, y al ejecutar el ETL recibimos el siguiente error:

2018/02/26 11:34:30 - ERROR - Error de desencriptación.

Adjunto el archivo con el último fragmento del log donde se pueden ver los errores, y también el archivo de log completo.

Saludos.


2018-02-26_querandies(fragmento).txt (39.8 KB)

2018-02-26_querandies.log.zip (1.48 MB)

Hola Fabián:

a) Por favor nos podrás informar los datos de las siguientes tablas:

  1. public.d_institucion
  2. public.d_instalacion (solo de querandíes)
  3. public.parametro_instalacion (solo de querandíes)

b) ¿Que versión de Wichi tienen instalada?

Saludos, Mariano

Hola Mariano, gracias por la respuesta.

Te adjunto los datos de las tablas. La versión de Wichi es 6.3.1

Saludos.


datos_tablas.zip (765 Bytes)

Hola Fabián: por favor nos copias los parametros que estan ingresando en el etl de carga.

Pudimos realizar la carga de datos unam con 6.3.1

Gracias, Mariano

Mariano, estos son los parámetros:

#!/bin/bash

DATE=`date +%Y-%m-%d`
LOG_DIR=/var/siu/wichi/logs/querandies
mkdir -p $LOG_DIR
LOG=$LOG_DIR/$DATE\_querandies.log

RUTA_WICHI="/var/siu/wichi"
RUTA_TMP="/tmp/querandies"

echo "1- Crea el directorio temporal para el armado del paquete"
mkdir -p $RUTA_TMP

echo "2- Ejecuta el proceso de importacion a wichi"
/var/siu/pentaho/data-integration/kitchen.sh \
-file="/var/siu/wichi/siu_wichi/etl/carga_de_datos/querandies/principal_carga_querandies.kjb" \
-param="base_wichi_host=localhost" \
-param="base_wichi_puerto=5432" \
-param="base_wichi_nombre=siu_wichi" \
-param="base_wichi_usuario=postgres" \
-param="base_wichi_clave={{wichi_cluster_password}}" \
-param="carga_comentario=Importacion Querandies" \
-param="carga_directorioTemporal=$RUTA_TMP" \
-param="paquete_rutaGpg=/usr/bin/gpg" \
-param="carga_instalacion=14-111" \
-level="Debug" \
-log="$LOG"

Los datos de acceso a la base de datos sé que están bien porque funcionan en los demás etl de carga.

{{wichi_cluster_password}} se reemplaza con la contraseña utilizando Ansible.

El script se ejecuta con sudo.

Gracias.

No nos queda muy claro pero pareciera que el problema está en la ejecución del gpg

There was an error moving file [file:///tmp/querandies/6r1ee90ugeacm/temp_extraccion_wichi.gpg] to [file:///tmp/querandies/6r1ee90ugeacm/paquete.zip]

Puede ser un problema de permisos en el directorio pero más probablemente en la instalación del gpg.
Este paso que se indica en la Guía de Instalación (página 67), lo hicieron sin problemas?

Paso 2: Cargar clave de encriptado.
El archivo con todos los datos de Infraestructura de su Institución debe pasar desde el servidor de la SPU hasta el de la Institución, por esa razón el mismo viaja encriptado y por lo tanto hay que importar la clave utilizada a los fines de poder desencriptarlo.
Para importar la clave debe ejecutar en la interfaz de comandos:
gpg --import QuerandiesWichi-priv.key (el archivo QuerandiesWichi-priv.key está en la distribución, en la carpeta etl/carga_de_datos/querandies).
Si por alguna razón cambia el servidor desde el que ejecuta el Paso 3 deberá antes realizar este Paso 2 en el mismo para importar la clave de autenticación.
En algunos casos es posible que el proceso de importación le solicite la frase de autenticación, si es así la misma es “ParaElWichi620”.

Se les ocurre que puede haber quedado algo mal ahí?

Podrían probar directamente ejecutar desde consola este comando:

/usr/bin/gpg --batch --yes --passphrase “ParaElWichi620” --output “/tmp/querandies/6r1ee90ugeacm/paquete.zip” --decrypt “/tmp/querandies/6r1ee90ugeacm/temp_extraccion_wichi.gpg”

Que creo que es el que falló, hay que primero verificar que siga existiendo el directorio /6r1ee90ugeacm
Cuando se logre que este comando funcione probaría de nuevo importar.

Hola, gracias por la respuesta.

Funcionó pero solo ejecutando manualmente:

sudo /usr/bin/gpg --batch --yes --passphrase "ParaElWichi620" --output "/tmp/querandies/6r1ee90ugeacm/paquete.zip" --decrypt "/tmp/querandies/6r1ee90ugeacm/temp_extraccion_wichi.gpg"

en ese momento me vuelve a consultar la passphrase. Luego vuelvo a ejecutar el etl y funciona correctamente, pero en la siguiente importación vuelve a fallar.

Leyendo la documentación de GnuPG en:

veo que el problema puede estar relacionado a la opción passphrase, cito:

--passphrase-file file Read the passphrase from file file. Only the first line will be read from file file. This can only be used if only one passphrase is supplied. Obviously, a passphrase stored in a file is of questionable security if other users can read this file. Don’t use this option if you can avoid it.

Note that since Version 2.0 this passphrase is only used if the option --batch has also been given. Since Version 2.1 the --pinentry-mode also needs to be set to loopback.

Como mi versión de GnuPG es 2.1.18, debo agregar la opción --pinentry-mode loopback al comando gpg y entonces el mismo se ejecuta sin que me vuelva a consultar la passphrase.

Conclusión: como yo lo veo habría que agregar la opción --pinentry-mode loopback al etl o bien tendría que instalar una versión anterior de GnuPG.

¿Cuál será la mejor solución?

Gracias, saludos.

Que tal?

Completé mejor mi respuesta anterior, si la pueden revisar, gracias, saludos.

Hola.

Comparto la solución a la que llegué para este asunto.Se trata de una solución ‘rebuscada’ temporal hasta que actualicen el etl.

Resumen del problema:
El etl de carga de datos para SIU Querandies utiliza el comando gpg con parámetros no compatibles con la última versión de gpg, es decir, este problema surgirá en todos sistemas operativos actualizados.

Nota:
Este problema NO se solucionó actualizando SIU Wichi a la versión 6.4.0

Solución temporal:
Es necesario modificar la forma en la que el etl utiliza el comando gpg. La creación de un alias de comando no funciona debido a que el etc utiliza el binario ‘/usr/bin/gpg’ directamente.
Entonces, primero renombramos el binario gpg de esta manera:

sudo su
cd /usr/bin
mv gpg gpg_original

luego creamos un script bash:

vim gpg

con el siguiente contenido:

#!/bin/bash
/usr/bin/gpg_original --pinentry-mode loopback $@

modificamos los permisos del script:

chmod 755 gpg
exit

De esta forma cuando el etl utilice ‘/usr/bin/gpg’ se ejecutará el script el cual llama al binario original pasando el parámetro que aporta la solución y añadiendo todos los demás parámetros que se le pase al script.

Claro que cuando el sistema operativo actualice GnuPG, va a sobre escribir el script ‘/usr/bin/gpg’ y el etl volverá a dejar de funcionar, así que hay que estar atentos a eso.

Saludos.