

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# SHA1 Implémenter le hachage des données personnelles lors de la migration de SQL Server vers PostgreSQL
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql"></a>

*Rajkumar Raghuwanshi et Jagadish Kantubugata, Amazon Web Services*

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

Ce modèle décrit comment implémenter le hachage Secure Hash Algorithm 1 (SHA1) pour les adresses e-mail lors de la migration de SQL Server vers Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL compatible. Une adresse e-mail est un exemple d'*informations personnelles identifiables* (PII). Les informations personnelles sont des informations qui, lorsqu'elles sont consultées directement ou associées à d'autres données connexes, peuvent être utilisées pour déduire raisonnablement l'identité d'une personne. 

Ce modèle couvre les défis liés au maintien de valeurs de hachage cohérentes entre les différents classements de base de données et encodages de caractères, et fournit une solution utilisant les fonctions et les déclencheurs PostgreSQL. Bien que ce modèle se concentre sur le SHA1 hachage, il peut être adapté à d'autres algorithmes de hachage pris en charge par le module de PostgreSQL. `pgcrypto` Tenez toujours compte des implications de sécurité de votre stratégie de hachage et consultez des experts en sécurité si vous manipulez des données sensibles.

## Conditions préalables et limitations
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Base de données source SQL Server
+ Base de données PostgreSQL cible (compatible avec Amazon RDS for PostgreSQL ou Aurora PostgreSQL)
+ Expertise en codage PL/pgSQL

**Limites**
+ Ce modèle nécessite des modifications du classement au niveau de la base de données en fonction des cas d'utilisation.
+ L'impact sur les performances sur les grands ensembles de données n'a pas été évalué.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Microsoft SQL Server 2012 ou version ultérieure

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

**Pile technologique source**
+ SQL Server
+ .NET Framework

**Pile technologique cible**
+ PostgreSQL
+ `pgcrypto`extension

**Automatisation et mise à l'échelle**
+ Envisagez d'implémenter la fonction de hachage en tant que procédure stockée pour faciliter la maintenance.
+ Pour les grands ensembles de données, évaluez les performances et envisagez des stratégies de traitement par lots ou d'indexation.

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

**Services AWS**
+ [Amazon Aurora PostgreSQL compatible](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) vous aide à migrer les banques de données vers AWS Cloud ou entre des combinaisons de configurations cloud et sur site.
+ [Amazon Relational Database Service Amazon RDS pour PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) vous aide à configurer, exploiter et dimensionner une base de données relationnelle PostgreSQL dans le. AWS Cloud
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) prend en charge les migrations de bases de données hétérogènes en convertissant automatiquement le schéma de base de données source et la majorité du code personnalisé dans un format compatible avec la base de données cible.

**Autres outils**
+ [pgAdmin](https://www.pgadmin.org/) est un outil de gestion open source pour PostgreSQL. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.
+ [SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) est un environnement intégré permettant de gérer n'importe quelle infrastructure SQL.

## Bonnes pratiques
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ Utilisez les paramètres de classement appropriés pour gérer les caractères spéciaux du côté de la base de données cible.
+ Effectuez des tests approfondis avec diverses adresses e-mail, y compris les adresses contenant des caractères non ASCII.
+ Maintenez la cohérence de la gestion des majuscules et des minuscules entre les couches d'application et de base de données.
+ Comparez les performances des requêtes à l'aide des valeurs hachées.

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

### Analyser la mise en œuvre du hachage de source
<a name="analyze-source-hashing-implementation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue le code SQL Server. | Pour examiner le code SQL Server qui génère SHA1 des hachages, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingénieur de données, DBA, développeur d'applications | 
| Documentez l'algorithme de hachage et les transformations de données. | Pour documenter l'algorithme de hachage exact et les transformations de données, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, ingénieur de données, DBA | 

### Création d'une fonction de hachage PostgreSQL
<a name="create-postgresql-hashing-function"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une `pgcrypto` extension. | Pour créer l'`pgcrypto`extension, `pgAdmin/psql` exécutez la commande suivante :<pre>CREATE EXTENSION pgcrypto;</pre> | DBA, ingénieur de données | 
| Implémentez une fonction PostgreSQL. | Implémentez la fonction PostgreSQL suivante pour répliquer la logique de hachage de SQL Server. À un niveau élevé, cette fonction utilise les étapes suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/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> | Ingénieur de données, DBA, développeur d'applications | 
| Test de la fonction. | Pour tester la fonction, utilisez des exemples de données provenant de SQL Server pour vérifier les valeurs de hachage correspondantes. Exécutez la commande suivante :<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> | Développeur d'applications, DBA, ingénieur de données | 

### Implémenter des déclencheurs pour le hachage automatique
<a name="implement-triggers-for-automatic-hashing"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des déclencheurs sur les tables pertinentes. | Pour créer des déclencheurs sur les tables pertinentes afin de générer automatiquement des valeurs de hachage lors de l'insertion ou de la mise à jour, exécutez la commande suivante :<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> | Développeur d'applications, ingénieur de données, DBA | 

### Migrer les données existantes
<a name="migrate-existing-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Développez un script de migration ou utilisez-le AWS DMS.  | Développez un script de migration ou AWS DMS utilisez-le pour renseigner les valeurs de hachage des données existantes (y compris les valeurs de hachage stockées `BIGINT` dans le système source). Réalisez les tâches suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Ingénieur de données, développeur d'applications, DBA | 
| Utilisez la nouvelle fonction de hachage de PostgreSQL. | Pour utiliser la nouvelle fonction de hachage de PostgreSQL afin de garantir la cohérence, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, DBA, ingénieur DevOps  | 

### Mettre à jour les requêtes d'application
<a name="update-application-queries"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez les requêtes relatives aux applications. | Pour identifier les requêtes d'application qui utilisent des valeurs hachées, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, DBA, ingénieur de données | 
| Modifiez les requêtes. | Si nécessaire, modifiez les requêtes pour utiliser la nouvelle fonction de hachage PostgreSQL. Procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, DBA, ingénieur de données | 

### Tester et valider
<a name="test-and-validate"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez des tests. | Pour effectuer des tests approfondis avec un sous-ensemble de données de production, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, ingénieur de données, DBA | 
| Vérifiez que les valeurs de hachage correspondent. | Pour vérifier que les valeurs de hachage correspondent entre SQL Server et PostgreSQL, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, ingénieur de données, DBA | 
| Vérifiez le fonctionnement de l'application. | Pour vérifier le fonctionnement de l'application à l'aide des données migrées et de la nouvelle implémentation de hachage, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Développeur d'applications, DBA, ingénieur de données | 

## Résolution des problèmes
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les valeurs de hachage ne correspondent pas. | Vérifiez les codages de caractères et les classements entre la source et la cible. Pour plus d'informations, consultez [Gérer les modifications de classement dans PostgreSQL sur Amazon Aurora et Amazon](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)AWS RDS (blog). | 

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

**AWS Blogs**
+ [Gérez les modifications de classement dans PostgreSQL sur Amazon Aurora et Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Migrez SQL Server vers Amazon Aurora PostgreSQL en utilisant les meilleures pratiques et les leçons apprises sur le terrain](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**Autres ressources**
+ Module [pgcrypto de PostgreSQL (documentation](https://www.postgresql.org/docs/current/pgcrypto.html) PostgreSQL)
+ [Fonctions de déclenchement de PostgreSQL (documentation](https://www.postgresql.org/docs/current/plpgsql-trigger.html) PostgreSQL)
+ [Fonction HASHBYTES de SQL Server](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql) (documentation Microsoft)