

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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql"></a>

*Rajkumar Raghuwanshi e Jagadish Kantubugata, Amazon Web Services*

## Resumo
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-summary"></a>

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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para endpoints específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e clique no link correspondente ao serviço desejado.

**Versões do produto**
+ Microsoft SQL Server 2012 ou posterior

## Arquitetura
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-architecture"></a>

**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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-tools"></a>

**Serviços da AWS**
+ O [Amazon Aurora compatível com PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) é um mecanismo de banco de dados relacional totalmente gerenciado, compatível com ACID, que auxilia na configuração, na operação e na escalabilidade de implantações do PostgreSQL.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) ajuda você a migrar armazenamentos de dados para Nuvem AWS ou entre combinações de configurações na nuvem e no local.
+ O [Amazon Relational Database Service (Amazon RDS) para PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) ajuda você a configurar, operar e escalar um banco de dados relacional do PostgreSQL na Nuvem AWS.
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) oferece suporte a migrações heterogêneas de banco de dados convertendo automaticamente o esquema do banco de dados de origem e a maior parte do código personalizado em um formato compatível com o banco de dados de destino.

**Outras ferramentas**
+ O [pgAdmin](https://www.pgadmin.org/) é 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)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) consiste em um ambiente integrado para o gerenciamento de qualquer infraestrutura do SQL.

## Práticas recomendadas
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ 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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-epics"></a>

### Análise da implementação do hash na origem
<a name="analyze-source-hashing-implementation"></a>


| Tarefa | Description | Habilidades 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desenvolvedor de aplicativos, engenheiro de dados, DBA | 

### Criação de uma função de hash no PostgreSQL
<a name="create-postgresql-hashing-function"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie a extensão `pgcrypto`. | Para criar a extensão `pgcrypto`, use `pgAdmin/psql` para executar o seguinte comando:<pre>CREATE EXTENSION pgcrypto;</pre> | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html)<pre>CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( <br />     par_val character varying, <br />     par_upper character varying DEFAULT 'lower'::character varying) <br />RETURNS bigint <br />LANGUAGE 'plpgsql' <br />AS $BODY$ <br />DECLARE <br />    retnumber bigint; <br />    digest_bytes bytea;<br />BEGIN <br />    if lower(par_upper) = 'upper' <br />    then <br />        digest_bytes := digest(upper(par_val), 'sha1');<br />    else <br />        digest_bytes := digest((par_val), 'sha1');<br />    end if; <br />    retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; <br />    RETURN retnumber; <br />END; <br />$BODY$;</pre> | 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: .<pre>select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue;<br /><br />--OUTPUT<br />/*<br />email 	        hashvalue<br />"alejandro_rosalez@example.com"	451397011176045063<br />*/<br /></pre> | Desenvolvedor de aplicações, DBA e engenheiro de dados | 

### Implementação de acionadores para hash automático
<a name="implement-triggers-for-automatic-hashing"></a>


| Tarefa | Description | Habilidades 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:<pre>CREATE OR REPLACE FUNCTION update_email_hash() <br />RETURNS TRIGGER <br />AS $$ <br />BEGIN <br />    NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); <br />    RETURN NEW; <br />END; <br />$$ LANGUAGE plpgsql;</pre><pre>CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();</pre> | Desenvolvedor de aplicativos, engenheiro de dados, DBA | 

### Migração dos dados existentes
<a name="migrate-existing-data"></a>


| Tarefa | Description | Habilidades 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desenvolvedor de aplicativos, DBA, engenheiro DevOps  | 

### Atualização das consultas da aplicação
<a name="update-application-queries"></a>


| Tarefa | Description | Habilidades 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desenvolvedor de aplicações, DBA e engenheiro de dados | 

### Teste e validação
<a name="test-and-validate"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Realize testes. | Para conduzir testes completos com um subconjunto dos dados de produção, execute as etapas abaixo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Desenvolvedor de aplicações, DBA e engenheiro de dados | 

## Solução de problemas
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| Problema | Soluçã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](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)).AWS  | 

## Recursos relacionados
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-resources"></a>

**AWS Blogs**
+ [Manage collation changes in PostgreSQL on Amazon Aurora and Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Migrate SQL Server to Amazon Aurora PostgreSQL using best practices and lessons learned from the field](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**Outros recursos**
+ [PostgreSQL pgcrypto module](https://www.postgresql.org/docs/current/pgcrypto.html) (documentação do PostgreSQL)
+ [PostgreSQL trigger functions](https://www.postgresql.org/docs/current/plpgsql-trigger.html) (documentação do PostgreSQL)
+ [SQL Server HASHBYTES function](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql) (documentação da Microsoft)