

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# SHA1 Implementa l'hashing per i dati PII durante la migrazione da SQL Server a 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*

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

Questo modello descrive come implementare l'hashing Secure Hash Algorithm 1 (SHA1) per gli indirizzi e-mail durante la migrazione da SQL Server ad Amazon RDS for PostgreSQL o Amazon Aurora PostgreSQL compatibile. *Un indirizzo e-mail è un esempio di informazioni di identificazione personale (PII).* Le PII sono informazioni che, se visualizzate direttamente o abbinate ad altri dati correlati, possono essere utilizzate per dedurre ragionevolmente l'identità di un individuo. 

Questo modello copre le sfide legate al mantenimento di valori hash coerenti tra diverse regole di confronto di database e codifiche di caratteri e fornisce una soluzione che utilizza funzioni e trigger PostgreSQL. Sebbene questo modello si concentri sull' SHA1 hashing, può essere adattato per altri algoritmi di hashing supportati dal modulo di PostgreSQL. `pgcrypto` Considerate sempre le implicazioni di sicurezza della vostra strategia di hashing e consultate gli esperti di sicurezza se gestite dati sensibili.

## Prerequisiti e limitazioni
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Database SQL Server di origine
+ Database PostgreSQL di destinazione (compatibile con Amazon RDS per PostgreSQL o Aurora PostgreSQL)
+ Esperienza nella codifica PL/PgSQL

**Limitazioni**
+ Questo modello richiede modifiche alle regole di confronto a livello di database in base ai casi d'uso.
+ L'impatto sulle prestazioni su set di dati di grandi dimensioni non è stato valutato.
+ Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, vedi [AWS Servizi per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

**Versioni del prodotto**
+ Microsoft SQL Server 2012 o versioni successive

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

**Stack tecnologico di origine**
+ SQL Server
+ .NET Framework

**Stack tecnologico di destinazione**
+ PostgreSQL
+ `pgcrypto`estensione

**Automazione e scalabilità**
+ Prendi in considerazione l'implementazione della funzione di hashing come procedura memorizzata per semplificare la manutenzione.
+ Per set di dati di grandi dimensioni, valuta le prestazioni e prendi in considerazione l'elaborazione in batch o le strategie di indicizzazione.

## Tools (Strumenti)
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-tools"></a>

**Servizi AWS**
+ [Amazon Aurora PostgreSQL Compatible](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) è un motore di database relazionale completamente gestito e conforme ad ACID che ti aiuta a configurare, gestire e scalare le distribuzioni PostgreSQL.
+ [AWS Database Migration Service () ti aiuta a migrare gli archivi di dati all'interno o tra combinazioni di AWS DMS configurazioni](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) cloud e locali. Cloud AWS 
+ [Amazon Relational Database Service Amazon RDS per PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) ti aiuta a configurare, gestire e scalare un database relazionale PostgreSQL in. Cloud AWS
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) supporta migrazioni di database eterogenee convertendo automaticamente lo schema del database di origine e la maggior parte del codice personalizzato in un formato compatibile con il database di destinazione.

**Altri strumenti**
+ [pgAdmin](https://www.pgadmin.org/) è uno strumento di gestione open source per PostgreSQL. Fornisce un'interfaccia grafica che consente di creare, gestire e utilizzare oggetti di database.
+ [SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) è un ambiente integrato per la gestione di qualsiasi infrastruttura SQL.

## Best practice
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ Utilizza le impostazioni di confronto appropriate per gestire i caratteri speciali sul lato del database di destinazione.
+ Esegui test approfonditi con una varietà di indirizzi e-mail, inclusi gli indirizzi con caratteri non ASCII.
+ Mantieni la coerenza nella gestione delle lettere maiuscole e minuscole tra i livelli dell'applicazione e del database.
+ Esegui il benchmark delle prestazioni delle query utilizzando i valori con hash.

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

### Analizza l'implementazione dell'hashing dei sorgenti
<a name="analyze-source-hashing-implementation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Rivedi il codice di SQL Server. | Per esaminare il codice di SQL Server che genera gli SHA1 hash, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingegnere dei dati, DBA, sviluppatore di app | 
| Documenta l'algoritmo di hashing e le trasformazioni dei dati. | Per documentare l'esatto algoritmo di hashing e le trasformazioni dei dati, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, ingegnere dei dati, DBA | 

### Crea una funzione di hashing PostgreSQL
<a name="create-postgresql-hashing-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea `pgcrypto` estensione. | Per creare l'`pgcrypto`estensione, usa `pgAdmin/psql` per eseguire il seguente comando:<pre>CREATE EXTENSION pgcrypto;</pre> | DBA, ingegnere dei dati | 
| Implementa una funzione PostgreSQL. | Implementa la seguente funzione PostgreSQL per replicare la logica di hashing di SQL Server. A un livello elevato, questa funzione utilizza i seguenti passaggi:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/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> | Ingegnere dei dati, DBA, sviluppatore di app | 
| Esegui il test della funzione. | Per testare la funzione, utilizza dati di esempio provenienti da SQL Server per verificare i valori hash corrispondenti. Esegui il comando seguente:<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> | Sviluppatore di app, DBA, ingegnere dei dati | 

### Implementa i trigger per l'hashing automatico
<a name="implement-triggers-for-automatic-hashing"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea trigger su tabelle pertinenti. | Per creare trigger nelle tabelle pertinenti per generare automaticamente valori hash all'inserimento o all'aggiornamento, esegui il comando seguente:<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> | Sviluppatore di app, ingegnere dei dati, DBA | 

### Migrazione dei dati esistenti
<a name="migrate-existing-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Sviluppa o utilizza uno script di migrazione AWS DMS.  | Sviluppa uno script di migrazione o AWS DMS utilizzalo per compilare i valori hash per i dati esistenti (inclusi i valori hash memorizzati come `BIGINT` nel sistema di origine). Completa le seguenti operazioni:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingegnere dei dati, sviluppatore di app, DBA | 
| Usa la nuova funzione di hashing PostgreSQL. | Per utilizzare la nuova funzione di hashing PostgreSQL per garantire la coerenza, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, DBA, ingegnere DevOps  | 

### Aggiorna le interrogazioni delle applicazioni
<a name="update-application-queries"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Identifica le domande relative all'applicazione. | Per identificare le query dell'applicazione che utilizzano valori con hash, effettuate le seguenti operazioni:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, DBA, ingegnere dei dati | 
| Modifica le interrogazioni. | Se necessario, modifica le query per utilizzare la nuova funzione di hashing PostgreSQL. Esegui questa operazione:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, DBA, ingegnere dei dati | 

### Testa e convalida
<a name="test-and-validate"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eseguire test. | Per eseguire test approfonditi con un sottoinsieme di dati di produzione, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, ingegnere dei dati, DBA | 
| Verifica che i valori hash corrispondano. | Per verificare che i valori hash corrispondano tra SQL Server e PostgreSQL, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, ingegnere dei dati, DBA | 
| Verifica la funzionalità dell'applicazione. | Per verificare la funzionalità dell'applicazione utilizzando i dati migrati e la nuova implementazione di hashing, procedi come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Sviluppatore di app, DBA, ingegnere dei dati | 

## risoluzione dei problemi
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| I valori hash non corrispondono. | Verifica le codifiche e le regole di confronto dei caratteri tra origine e destinazione. Per ulteriori informazioni, consulta [Gestire le modifiche alle regole di confronto in PostgreSQL su Amazon Aurora e Amazon RDS (Blog](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)).AWS  | 

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

**AWS Blog**
+ [Gestisci le modifiche alle regole di confronto in PostgreSQL su Amazon Aurora e Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Esegui la migrazione di SQL Server ad Amazon Aurora PostgreSQL utilizzando le migliori pratiche e le lezioni apprese sul campo](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**Altre risorse**
+ [Modulo PostgreSQL pgcrypto (documentazione PostgreSQL](https://www.postgresql.org/docs/current/pgcrypto.html))
+ [Funzioni di attivazione di PostgreSQL (documentazione PostgreSQL](https://www.postgresql.org/docs/current/plpgsql-trigger.html))
+ [Funzione HASHBYTES di SQL Server](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql) (documentazione Microsoft)