La pseudonymisation et vous : optimiser la protection des données
Tout le monde a détesté l’armageddon des emails de politique de confidentialité, y compris les entreprises. Non pas parce que certains de leurs emails allaient directement dans les spams, mais parce que de nombreuses entreprises ont dû revoir leurs mesures de sécurité. Revoir les mesures de sécurité peut être pénible, mais perdre une tonne d’informations personnelles est absolument la pire des choses.
Que pouvons-nous faire ?
Les entreprises peuvent réduire le risque de vol d’informations en appliquant les bonnes pratiques de protection des données, et certaines sont très simples à adopter. L’une des méthodes que nous apprécions particulièrement est la pseudonymisation, une façon élégante de parler de camouflage des données sensibles. La pseudonymisation remplace les informations d’identification d’un enregistrement par de faux identifiants (pseudonymes), ce qui rend difficile la traçabilité d’une donnée. En y réfléchissant, c’est un peu comme ce faux profil MySpace que vous aviez en 2007.
Cela semble compliqué, pourquoi le faire ?
L’avantage de la pseudonymisation, c’est qu’il s’agit des mêmes données mais sous un nom d’emprunt ou, dans ce cas, sous la forme d’une très longue chaîne de caractères. Bien qu’aucune protection ne suffise à elle seule, sa combinaison avec d’autres pratiques comme le chiffrement, le hachage ou la tokenisation aide à réduire le risque de réidentification. Appliquer la pseudonymisation à vos données est relativement simple et il existe plusieurs façons d’y parvenir. Dans cet exemple, nous allons nous pencher sur le plugin de filtre Fingerprint de Logstash, mais vous pouvez également essayer un script de fichier générique utilisant un plugin de filtre Ruby si cela ne vous convient pas. Les deux méthodes masqueront les champs du nom d’utilisateur et de l’adresse IP, alors gardez cela à l’esprit !
Implémenter la pseudonymisation
Avant de commencer, prenez du Mountain Dew, car rien ne vous donne plus l’impression d’être un génie de l’informatique que des choix de sodas discutables. Une fois cette boisson fraîche ouverte, téléchargez les fichiers du dépôt dans un répertoire local. Voici un peu de code provenant de GitHub qui permet de télécharger les fichiers individuellement plus facilement :
curl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/docker-compose.ymlrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/logstash_fingerprint.confrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/logstash_script_fingerprint.confrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/pipelines.ymlrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/pseudonymise.rbrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/Dockerfilernrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/sample_docs
Vérifiez que le répertoire contenant les fichiers téléchargés est partagé avec Docker. Allez ensuite dans le répertoire et exécutez la commande suivante :
ELASTIC_PASSWORD=changeme TAG=6.2.2 docker-compose up
Cherchez la ligne de journal ci-dessous. Cela vous indiquera que Logstash a démarré et peut maintenant recevoir des données.
logstash_1 | [2018-03-20T12:40:33,638][INFO ][logstash.agent ] Pipelines running {:count=>2, :pipelines=>["fingerprint_filter", "ruby_filter"]}
Prenez une gorgée, les amis. Nous y sommes presque.

Pour le plugin de filtre Fingerprint, exécutez la commande suivante :
cat sample_docs | nc localhost 5000
Tada ! Vous pouvez maintenant inspecter et utiliser les données ! Les informations pseudonymisées seront indexées dans un index d’événements auquel vous pouvez accéder via la requête suivante :
curl "http://localhost:9200/events/_search?pretty" -u elastic:changeme
Cela devrait ressembler un peu à ceci :
{rnrn "_index": "events",rnrn "_type": "doc",rnrn "_id": "tQOjQ2IBED8Jv9YVVDxs",rnrn "_score": 1,rnrn "_source": {rnrn "host": "gateway",rnrn "user_agent": "Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1",rnrn "job_title": "Electrical Engineer",rnrn "username": "95b88d8d477e18a8acca833e7bcbd2c5d5f646b29e2d1c9604a1d930e2f63313",rnrn "@timestamp": "2018-03-20T13:39:59.799Z",rnrn "ip": "e85022a9801b356dd8c3ed6b2e02f0061a3aeea5bbad15a9ff4aed35b5bb3a42",rnrn "source": "ruby_pipeline",rnrn "city": "Komsomol’skiy",rnrn "title": "Mr",rnrn "country_code": "UZ",rnrn "@version": "1",rnrn "gender": "Female",rnrn "country": "Uzbekistan",rnrn "port": 41126rnrn }rnrn }
C’est génial, non ? Mais ce n’est pas tout ! Les recherches de paires clé-valeur se trouvent dans un index d’identités, auquel vous pouvez accéder avec cette requête :
curl "http://localhost:9200/identities/_search?pretty" -u elastic:changeme
Si vous vous demandez à quoi cela ressemble, jetez un œil ci-dessous :
{rnrn "_index": "identities",rnrn "_type": "doc",rnrn "_id": "1924d02bd98a46c795cb2a925b98a22ae59c563e0de49f4ba4aa49e6cab072ad",rnrn "_score": 1,rnrn "_source": {rnrn "key": "1924d02bd98a46c795cb2a925b98a22ae59c563e0de49f4ba4aa49e6cab072ad",rnrn "value": "174.145.248.21",rnrn "tags": [rnrn "identities"rnrn ],rnrn "@timestamp": "2018-03-20T13:39:59.957Z",rnrn "@version": "1",rnrn "source": "ruby_pipeline"rnrn }
Vous devriez toujours avoir 200 documents dans un index de pseudonymes, peu importe le nombre de fois que vous indexez les données. Il y a un document pour chaque valeur unique du tableau et, dans ce cas, nous avons le nom d’utilisateur et l’adresse IP. Besoin de réidentifier une valeur ? Vous pouvez la chercher par ID dans l’index des identités. Pour rappel : voici à quoi ressemble une valeur pseudonymisée :
6efda88d5338599ef1cc29df5dad8da681984580dc1f7f495dcf17ebcf7191f8
Si vous avez besoin de la valeur d’origine, vous pouvez l’obtenir avec cette commande :
curl "http://localhost:9200/identities/doc/6efda88d5338599ef1cc29df5dad8da681984580dc1f7f495dcf17ebcf7191f8?pretty" -u elastic:changeme
Conclusion

BAM ! Pseudonymisation ! C’est comme le programme de protection des témoins pour les données : nous sommes de grands fans. Toutes ces données pseudonymisées empêchent les acteurs malveillants d’en faire quoi que ce soit, même s’ils sont doués dans leur domaine. Avec une solide politique de conservation des données, votre risque de vol peut être considérablement réduit, et qui n’aimerait pas cela ? Si vous êtes curieux au sujet du traitement des données par Mailgun, consultez notre site Web ! Nous devenons très techniques avec l’email, très vite.