Implemente SHA1 el hash para los datos de PII al migrar de SQL Server a PostgreSQL - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente SHA1 el hash para los datos de PII al migrar de SQL Server a PostgreSQL

Rajkumar Raghuwanshi y Jagadish Kantubugata, Amazon Web Services

Resumen

Este patrón describe cómo implementar el hash del algoritmo de hash seguro 1 (SHA1) para las direcciones de correo electrónico al migrar de SQL Server a Amazon RDS for PostgreSQL o Amazon Aurora compatible con PostgreSQL. Una dirección de correo electrónico es un ejemplo de información de identificación personal (PII). La PII es información que, vista directamente o combinada con otros datos relacionados, puede utilizarse para deducir de manera razonable la identidad de una persona.

Este patrón cubre los desafíos de mantener valores hash coherentes en diferentes intercalaciones de bases de datos y codificaciones de caracteres, y proporciona una solución con funciones y desencadenadores de PostgreSQL. Si bien este patrón se centra en el uso de SHA1 hash, se puede adaptar a otros algoritmos de hash compatibles con el módulo de PostgreSQL. pgcrypto Tenga siempre en cuenta las implicaciones de seguridad de su estrategia de hash y consulte con expertos en seguridad si maneja información confidencial.

Requisitos previos y limitaciones

Requisitos previos 

  • Un activo Cuenta de AWS

  • La base de datos de SQL Server de origen

  • La base de datos de PostgreSQL de destino (Amazon RDS para PostgreSQL o Aurora compatible con PostgreSQL)

  • Experiencia en codificación PL/pgSQL

Limitaciones

  • Este patrón requiere cambios en la intercalación en el nivel de base de datos en función de los casos de uso.

  • No se ha evaluado el impacto en el rendimiento de conjuntos de datos de gran tamaño.

  • Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

  • Microsoft SQL Server 2012 o posterior

Arquitectura

Pila de tecnología de origen

  • SQL Server

  • .NET Framework

Pila de tecnología de destino

  • PostgreSQL

  • Extensión pgcrypto

Automatización y escala

  • Considere la posibilidad de implementar la función de hash como un procedimiento almacenado para facilitar el mantenimiento.

  • Para conjuntos de datos grandes, evalúe el rendimiento y considere el procesamiento por lotes o las estrategias de indexación.

Tools (Herramientas)

Servicios de AWS

Otras herramientas

  • pgAdmin es una herramienta de administración de código abierto para PostgreSQL. Proporciona una interfaz gráfica que permite crear, mantener y utilizar objetos de bases de datos.

  • SQL Server Management Studio (SSMS) es un entorno integrado para administrar infraestructuras de SQL Server.

Prácticas recomendadas

  • Utilice la configuración de intercalación adecuada para gestionar los caracteres especiales en la base de datos de destino.

  • Haga pruebas exhaustivas con una variedad de direcciones de correo electrónico, incluidas las direcciones con caracteres que no sean ASCII.

  • Mantenga la coherencia en la gestión de mayúsculas y minúsculas entre las capas de aplicación y base de datos.

  • Compare el rendimiento de las consultas utilizando los valores con hash.

Epics

TareaDescripciónHabilidades requeridas

Revisar el código de SQL Server.

Para revisar el código de SQL Server que genera SHA1 hashes, haga lo siguiente:

  • Analice la implementación actual del SHA1 hash en SQL Server.

  • Identifique los métodos exactos utilizados para la generación del hash.

  • Documente los parámetros de entrada y el formato de salida.

  • Revise cualquier conversión o transformación de tipo de datos.

  • Examine la configuración de intercalación y su impacto.

Ingeniero de datos, administrador de base de datos, desarrollador de aplicaciones

Documentar el algoritmo de hash y las transformaciones de los datos.

Para documentar el algoritmo de hash exacto y las transformaciones de los datos, haga lo siguiente:

  • Cree documentación técnica detallada del proceso de hash.

  • Documente la lógica step-by-step de transformación.

  • Especifique los formatos de entrada y salida y los tipos de datos.

  • Incluya casos extremos y la gestión de caracteres especiales.

Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos
TareaDescripciónHabilidades requeridas

Crear la extensión pgcrypto.

Para crear la extensión pgcrypto, use pgAdmin/psql para ejecutar el siguiente comando:

CREATE EXTENSION pgcrypto;
Administrador de base de datos, ingeniero de datos

Implementar una función de PostgreSQL.

Implemente la siguiente función de PostgreSQL para replicar la lógica de hash de SQL Server. En líneas generales, esta función utiliza los pasos siguientes:

  1. Si lo desea, convierte la entrada a mayúsculas.

  2. Crea un SHA1 hash de la entrada.

  3. Toma los últimos 10 bytes (80 bits) de este hash.

  4. Convierte estos bytes en un entero de 64 bits.

CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( par_val character varying, par_upper character varying DEFAULT 'lower'::character varying) RETURNS bigint LANGUAGE 'plpgsql' AS $BODY$ DECLARE retnumber bigint; digest_bytes bytea; BEGIN if lower(par_upper) = 'upper' then digest_bytes := digest(upper(par_val), 'sha1'); else digest_bytes := digest((par_val), 'sha1'); end if; retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; RETURN retnumber; END; $BODY$;
Ingeniero de datos, administrador de base de datos, desarrollador de aplicaciones

Pruebe la función.

Para probar la función, utilice datos de ejemplo de SQL Server para comprobar que los valores de hash coincidan. Use el siguiente comando:

select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue; --OUTPUT /* email hashvalue "alejandro_rosalez@example.com" 451397011176045063 */
Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos
TareaDescripciónHabilidades requeridas

Crear desencadenadores en las tablas pertinentes.

Para crear desencadenadores en las tablas pertinentes para generar automáticamente valores de hash al insertar o actualizar, ejecute el siguiente comando:

CREATE OR REPLACE FUNCTION update_email_hash() RETURNS TRIGGER AS $$ BEGIN NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); RETURN NEW; END; $$ LANGUAGE plpgsql;
CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();
Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos
TareaDescripciónHabilidades requeridas

Desarrolle o utilice un script de migración AWS DMS.

Desarrolle un script de migración o AWS DMS utilícelo para rellenar los valores hash de los datos existentes (incluidos los valores hash almacenados BIGINT en el sistema de origen). Realice los siguientes pasos:

  • Cree scripts de migración para la transferencia de datos con valores de hash.

  • Configure AWS DMS las tareas con las reglas de transformación adecuadas.

  • Configure los puntos finales de origen y destino en AWS DMS.

  • Implemente mecanismos de gestión y registro de errores.

  • Diseñe una estrategia de procesamiento por lotes para conjuntos de datos grandes.

  • Cree consultas de validación para la verificación de los datos.

Ingeniero de datos, desarrollador de aplicaciones, administrador de base de datos

Utilizar la nueva función de hash de PostgreSQL.

Para utilizar la nueva función de hash de PostgreSQL y garantizar la coherencia, haga lo siguiente:

  • Implemente procedimientos de validación para verificar la coherencia del hash.

  • Cree scripts de comparación entre los sistemas de origen y destino.

  • Configure pruebas automatizadas para la verificación del valor de hash.

  • Documente cualquier discrepancia y los pasos para resolverlas.

Desarrollador de aplicaciones, administrador de bases de datos, ingeniero DevOps
TareaDescripciónHabilidades requeridas

Identificar las consultas de aplicaciones.

Para identificar las consultas de la aplicación que utilizan valores de hash, haga lo siguiente:

  • Analice la base de código de la aplicación en busca de consultas que utilicen valores de hash.

  • Revise los procedimientos y funciones almacenados que hacen referencia a las operaciones de hash.

  • Documente las métricas de rendimiento y los planes de ejecución de las consultas.

  • Identifique las dependencias en las búsquedas basadas en hash.

  • Planifique los componentes de la aplicación afectados.

Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos

Modificar consultas.

Si es necesario, modifique las consultas para usar la nueva función de hash de PostgreSQL. Haga lo siguiente:

  • Refactorice las consultas existentes para usar la función de hash de PostgreSQL.

  • Actualice los procedimientos y las funciones almacenados.

  • Implemente y pruebe nuevos patrones de consulta.

  • Optimice el rendimiento de las consultas modificadas.

Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos
TareaDescripciónHabilidades requeridas

Hacer pruebas.

Para llevar a cabo pruebas exhaustivas con un subconjunto de datos de producción, haga lo siguiente:

  • Cree un plan de pruebas para la validación del subconjunto de datos.

  • Extraiga una muestra representativa de los datos de producción.

  • Configure un entorno de prueba con las configuraciones adecuadas.

  • Ejecute pruebas de carga y transformación de datos.

  • Haga pruebas de volumen y estrés.

Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos

Validar que los valores de hash coincidan.

Para validar que los valores de hash coincidan entre SQL Server y PostgreSQL, haga lo siguiente:

  • Desarrolle scripts de comparación para valores de hash.

  • Cree informes de validación para la coincidencia del hash.

  • Implemente procedimientos de verificación automatizados.

  • Documente cualquier discrepancia encontrada.

  • Analice y resuelva las faltas de coincidencia del hash.

Desarrollador de aplicaciones, ingeniero de datos, administrador de base de datos

Verificar la funcionalidad de la aplicación.

Para verificar la funcionalidad de la aplicación mediante los datos migrados y la nueva implementación de hash, haga lo siguiente:

  • Ejecute las pruebas end-to-end de aplicaciones.

  • Valide todas las características de la aplicación mediante datos con hash.

  • Pruebe el rendimiento de la aplicación con la nueva implementación.

  • Verifique las integraciones y dependencias de las API.

Desarrollador de aplicaciones, administrador de base de datos, ingeniero de datos

Resolución de problemas

ProblemaSolución

Los valores de hash no coinciden.

Compruebe las codificaciones de caracteres y las intercalaciones entre el origen y el destino. Para obtener más información, consulte Administrar los cambios de intercalación en PostgreSQL en Amazon Aurora y Amazon AWS RDS (blog).

Recursos relacionados

AWS Blogs

Otros recursos