Published on

April 10, 2018

Randomisation des données dans SQL Server

À mesure que les réglementations sur la protection des données telles que le RGPD deviennent plus strictes, il est crucial pour les entreprises de veiller à ce que les informations personnelles soient correctement protégées. Une façon d’y parvenir est de procéder à un nettoyage des données, qui consiste à remplacer les données sensibles par des valeurs aléatoires dans les bases de données de bas niveau. Dans cet article, nous explorerons le concept de nettoyage des données et discuterons de la façon de le mettre en œuvre dans SQL Server.

Comprendre le nettoyage des données

Le nettoyage des données consiste à remplacer les informations personnelles sensibles par des valeurs aléatoires. Traditionnellement, les informations personnelles sensibles comprennent les numéros de carte de crédit, les numéros d’identification de santé et autres informations permettant d’identifier une personne. Cependant, avec le RGPD, les entreprises sont désormais tenues de protéger toutes les informations personnelles, y compris les noms, les adresses physiques et les adresses e-mail.

Le remplacement aléatoire est une technique courante utilisée dans le nettoyage des données. Cependant, il est important de trouver un équilibre entre sécurité et utilisabilité. Alors que des chaînes totalement aléatoires peuvent entraver les tests, l’utilisation de mots réels peut rendre les données de test plus utilisables à la fois pour les tests de code et les tests de performance. Les mots réels se répartissent également dans un index de manière similaire aux noms, ce qui permet d’obtenir une meilleure référence de performance.

Mise en œuvre de la randomisation dans SQL Server

Pour mettre en œuvre la randomisation dans SQL Server, nous pouvons créer une petite base de données appelée “Words” qui contient une table peuplée de mots provenant d’un dictionnaire open source. Nous pouvons ensuite utiliser des fonctions définies par l’utilisateur (UDF) pour générer des mots aléatoires et des nombres aléatoires.

Voici un exemple de création de la table “Words” :

CREATE TABLE [dbo].[wordsEn](
[TheWord] [varchar](50) NOT NULL,
[WordID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_wordsEn] PRIMARY KEY CLUSTERED 
(
[TheWord] ASC
)
WITH 
(
PAD_INDEX = OFF
, STATISTICS_NORECOMPUTE = OFF
, IGNORE_DUP_KEY = OFF
, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]

Nous pouvons ensuite créer des UDF pour générer des mots aléatoires et des nombres aléatoires. Voici un exemple de l’UDF pour générer un mot aléatoire :

CREATE Function [dbo].[RANDWORD]()
returns VARCHAR(255)
as
BEGIN
return 
(
    select 
    top 1 
    UPPER(LEFT(TheWord,1)) +
    LOWER(SUBSTRING(TheWord,2,LEN(TheWord))) as TheWord 
    from [wordsEn] 
    where WordId = dbo.RANDBETWEEN(1,(select max(wordid) from WordsEn))
)
END;

Avec ces UDF en place, nous pouvons maintenant les utiliser pour randomiser les données dans nos bases de données de bas niveau. Par exemple, nous pouvons mettre à jour la table “CUSTOMER” pour remplacer les informations sensibles par des valeurs aléatoires :

Update CUSTOMER
SET
    [First Name] = Words.dbo.RANDWORD()
    ,[Last Name] = Words.dbo.RANDWORD()
    , [Email Address] = Words.dbo.RANDWORD() + Words.dbo.RANDWORD() + '@' + Words.dbo.RANDWORD() + '.nothing';

Randomisation des dates

En plus de la randomisation des noms et des adresses e-mail, nous devons également randomiser les dates, telles que les dates de naissance ou les dates de traitement. Dans SQL Server, nous pouvons utiliser la fonction DATEADD avec les fonctions CHECKSUM et NEWID pour générer des dates aléatoires dans une plage spécifiée. Voici un exemple :

DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 21440), '1949-01-01')

Cela produira un champ datetime contenant une date aléatoire entre le 1er janvier 1949 et 21 440 jours après ce jour-là.

Conclusion

Le nettoyage des données est une pratique essentielle pour protéger les informations personnelles dans les bases de données de bas niveau. En remplaçant les données sensibles par des valeurs aléatoires, les entreprises peuvent garantir la conformité aux réglementations sur la protection des données telles que le RGPD. Dans SQL Server, nous pouvons utiliser des UDF et des techniques de randomisation pour y parvenir. Cependant, il est important de trouver un équilibre entre sécurité et utilisabilité lors de la génération de valeurs aléatoires.

N’oubliez pas qu’il est crucial de tester minutieusement le processus de nettoyage des données avant de le mettre en œuvre dans un environnement de production. En suivant les meilleures pratiques et en utilisant les techniques discutées dans cet article, vous pouvez anonymiser efficacement les informations personnelles et protéger la confidentialité de vos clients.

Auteur : John F. Tamburo

Twitter : @SQLBlimp

Blog : www.sqlblimp.com

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.