Implemente SHA1 o hashing para dados de PII ao migrar do SQL Server para o PostgreSQL - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implemente SHA1 o hashing para dados de PII ao migrar do SQL Server para o PostgreSQL

Rajkumar Raghuwanshi e Jagadish Kantubugata, Amazon Web Services

Resumo

Esse padrão descreve como implementar o hashing do Secure Hash Algorithm 1 (SHA1) para endereços de e-mail ao migrar do SQL Server para o Amazon RDS for PostgreSQL ou compatível com o Amazon Aurora PostgreSQL. Um endereço de e-mail consiste em um exemplo de informações de identificação pessoal (PII). A categoria de PII consiste em informações que, se analisadas diretamente ou em conjunto com informações correlatas, podem servir para identificar, de maneira razoável, um indivíduo.

Este padrão aborda os desafios de manter os valores de hash consistentes em diferentes agrupamentos e codificações de caracteres de banco de dados, além de fornecer uma solução usando funções e acionadores do PostgreSQL. Embora esse padrão se concentre no SHA1 hashing, ele pode ser adaptado para outros algoritmos de hash suportados pelo módulo do PostgreSQL. pgcrypto Sempre considere as implicações de segurança da sua estratégia de hash e consulte especialistas em segurança ao lidar com dados sensíveis.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS

  • Banco de dados de origem do SQL Server

  • Banco de dados de destino do PostgreSQL (Amazon RDS para PostgreSQL ou Aurora compatível com PostgreSQL)

  • Experiência em codificação PL/pgSQL

Limitações

  • Para este padrão, são necessárias alterações de agrupamento no nível do banco de dados conforme os casos de uso.

  • O impacto na performance em grandes conjuntos de dados ainda não foi avaliado.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Versões do produto

  • Microsoft SQL Server 2012 ou posterior

Arquitetura

Pilha de tecnologia de origem

  • SQL Server

  • NET Framework

Pilha de tecnologias de destino

  • PostgreSQL

  • Extensão para pgcrypto

Automação e escala

  • Considere implementar a função de hash como um procedimento armazenado para facilitar a manutenção.

  • Para grandes conjuntos de dados, avalie a performance e considere a realização de processamento em lotes ou o uso de estratégias de indexação.

Ferramentas

Serviços da AWS

Outras ferramentas

  • O pgAdmin é uma ferramenta de gerenciamento de código aberto para PostgreSQL. Ele fornece uma interface gráfica que ajuda você a criar, manter e usar objetos de banco de dados.

  • O SQL Server Management Studio (SSMS) consiste em um ambiente integrado para o gerenciamento de qualquer infraestrutura do SQL.

Práticas recomendadas

  • Use configurações de agrupamento apropriadas para lidar com caracteres especiais no banco de dados de destino.

  • Realize testes extensivos com uma variedade de endereços de e-mail, incluindo endereços que contêm caracteres fora do padrão ASCII.

  • Mantenha consistência no tratamento de maiúsculas e minúsculas entre as camadas da aplicação e do banco de dados.

  • Conduza avaliações comparativas da performance das consultas usando valores com hash.

Épicos

TarefaDescriptionHabilidades necessárias

Analise o código do SQL Server.

Para revisar o código do SQL Server que gera SHA1 hashes, faça o seguinte:

  • Analise a implementação existente do SHA1 hashing no SQL Server.

  • Identifique os métodos específicos usados para a geração do hash.

  • Documente os parâmetros de entrada e o formato de saída.

  • Analise quaisquer conversões ou transformações de tipos de dados.

  • Examine as configurações de agrupamento e o respectivo impacto.

Engenheiro de dados, DBA e desenvolvedor de aplicações

Documente informações sobre o algoritmo de hash e as transformações de dados.

Para documentar o algoritmo de hash específico e as transformações de dados, execute as etapas abaixo:

  • Crie uma documentação técnica detalhada do processo de hash.

  • Documente a lógica de step-by-step transformação.

  • Especifique os formatos de entrada e de saída, bem como os tipos de dados.

  • Inclua casos extremos e o tratamento de caracteres especiais.

Desenvolvedor de aplicativos, engenheiro de dados, DBA
TarefaDescriptionHabilidades necessárias

Crie a extensão pgcrypto.

Para criar a extensão pgcrypto, use pgAdmin/psql para executar o seguinte comando:

CREATE EXTENSION pgcrypto;
DBA, engenheiro de dados

Implemente uma função no PostgreSQL.

Implemente a função apresentada a seguir no PostgreSQL para replicar a lógica de hash do SQL Server. De forma geral, esta função conta com as seguintes etapas:

  1. Opcionalmente, converte a entrada para letras maiúsculas.

  2. Cria um SHA1 hash da entrada.

  3. Seleciona os últimos 10 bytes (80 bits) desse hash.

  4. Converte esses bytes em um inteiro 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$;
Engenheiro de dados, DBA e desenvolvedor de aplicações

Testar a função.

Para testar a função, use os dados de amostra do SQL Server para verificar se os valores de hash coincidem. Execute este 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 */
Desenvolvedor de aplicações, DBA e engenheiro de dados
TarefaDescriptionHabilidades necessárias

Crie acionadores nas tabelas relevantes.

Para criar acionadores nas tabelas relevantes que gerem automaticamente valores de hash em operações de inserção ou atualização, execute o seguinte 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();
Desenvolvedor de aplicativos, engenheiro de dados, DBA
TarefaDescriptionHabilidades necessárias

Desenvolva ou use um script de migração AWS DMS.

Desenvolva um script de migração ou use AWS DMS para preencher valores de hash para dados existentes (incluindo valores de hash armazenados como BIGINT no sistema de origem). Complete as seguintes tarefas:

  • Crie scripts de migração para a transferência de dados com valores de hash.

  • Configure AWS DMS tarefas com as regras de transformação apropriadas.

  • Configure os endpoints de origem e destino em AWS DMS.

  • Implemente mecanismos de tratamento de erros e de registro em log.

  • Planeje uma estratégia de processamento em lote para grandes conjuntos de dados.

  • Crie consultas de validação para realizar a verificação dos dados.

Desenvolvedor de aplicações, engenheiro de dados e DBA

Use a nova função de hash do PostgreSQL.

Para usar a nova função de hash do PostgreSQL e garantir consistência, execute as etapas abaixo:

  • Implemente procedimentos de validação para verificar a consistência dos hashes.

  • Crie scripts de comparação entre os sistemas de origem e de destino.

  • Configure testes automatizados para a verificação dos valores de hash.

  • Documente quaisquer discrepâncias e as etapas necessárias para resolvê-las.

Desenvolvedor de aplicativos, DBA, engenheiro DevOps
TarefaDescriptionHabilidades necessárias

Identifique as consultas da aplicação.

Para identificar as consultas da aplicação que usam os valores de hash, execute as etapas abaixo:

  • Analise o código-fonte da aplicação em busca de consultas que usam valores de hash.

  • Revise os procedimentos armazenados e as funções que fazem referência a operações de hash.

  • Documente as métricas de performance das consultas e os planos de execução.

  • Identifique as dependências em pesquisas baseadas em hash.

  • Mapeie os componentes da aplicação que foram afetados.

Desenvolvedor de aplicações, DBA e engenheiro de dados

Modifique as consultas.

Se necessário, modifique as consultas para usar a nova função de hash do PostgreSQL. Faça o seguinte:

  • Refatore as consultas existentes para usar a função de hash do PostgreSQL.

  • Atualize os procedimentos armazenados e as funções.

  • Implemente e teste novos padrões de consultas.

  • Otimize as consultas modificadas para melhorar a performance.

Desenvolvedor de aplicações, DBA e engenheiro de dados
TarefaDescriptionHabilidades necessárias

Realize testes.

Para conduzir testes completos com um subconjunto dos dados de produção, execute as etapas abaixo:

  • Crie um plano de testes para a validação do subconjunto de dados.

  • Extraia uma amostra representativa dos dados de produção.

  • Configure um ambiente de teste com as configurações adequadas.

  • Execute testes de carregamento e de transformação de dados.

  • Realize testes de volume e de esforço.

Desenvolvedor de aplicativos, engenheiro de dados, DBA

Valide a correspondência dos valores de hash.

Para validar que os valores de hash correspondem entre SQL Server e PostgreSQL, execute as etapas abaixo:

  • Desenvolva scripts de comparação para os valores de hash.

  • Crie relatórios de validação para a correspondência de hashes.

  • Implemente procedimentos automatizados de verificação.

  • Documente quaisquer discrepâncias encontradas.

  • Analise e resolva inconsistências nos valores de hash.

Desenvolvedor de aplicativos, engenheiro de dados, DBA

Verifique a funcionalidade da aplicação.

Para verificar a funcionalidade da aplicação usando os dados migrados e a nova implementação de hash, execute as etapas abaixo:

  • Execute testes de end-to-end aplicativos.

  • Valide todos os recursos da aplicação usando os dados com hash.

  • Teste a performance da aplicação com a nova implementação.

  • Verifique as integrações e as dependências de APIs.

Desenvolvedor de aplicações, DBA e engenheiro de dados

Solução de problemas

ProblemaSolução

Os valores de hash não correspondem.

Verifique as codificações de caracteres e os agrupamentos entre a origem e o destino. Para obter mais informações, consulte Gerenciar alterações de agrupamento no PostgreSQL no Amazon Aurora e no Amazon RDS (Blog).AWS

Recursos relacionados

AWS Blogs

Outros recursos