Anonymiser et restaurer l'identification des données sensibles
Le processus décrit dans ce guide de démarrage rapide est appelé pseudonymisation (ou tokenisation). Dans ce processus, la protection des données sensibles utilise une clé cryptographique pour convertir (anonymiser) le texte sensible en jeton. Pour restaurer (restaurer l'identification) ce texte, vous avez besoin de la clé cryptographique que vous avez utilisée lors de l'anonymisation et du jeton.
La protection des données sensibles est compatible avec les méthodes cryptographiques réversibles et non réversibles. Pour restaurer l'identification du contenu, vous devez choisir une méthode réversible.
La méthode cryptographique décrite ici est appelée chiffrement déterministe à l'aide de l'algorithme AES-SIV (Advanced Encryption Standard, en mode vecteur d'initialisation synthétique). Nous vous recommandons cette option parmi toutes les méthodes cryptographiques réversibles compatibles avec la protection des données sensibles, car elle offre le plus haut niveau de sécurité.
Vous pouvez suivre la procédure décrite dans cette rubrique en 10 à 20 minutes, sans compter les étapes Avant de commencer.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Étape 1 : Créer un trousseau et une clé
Avant d'entamer cette procédure, déterminez où vous souhaitez que la protection des données sensibles traite vos demandes d'anonymisation et de restauration de l'identification. Lorsque vous créez une clé Cloud KMS, vous devez la stocker dans global
ou dans la même région que celle que vous utiliserez pour vos requêtes de protection des données sensibles.
Sinon, les demandes de protection des données sensibles échoueront.
Vous trouverez une liste des emplacements acceptés dans la section Emplacements de protection des données sensibles. Notez le nom de la région choisie (par exemple, us-west1
).
Cette procédure utilise global
comme emplacement pour toutes les requêtes API. Si vous souhaitez utiliser une autre région, remplacez global
par le nom de la région.
Créez un trousseau de clés comme suit :
gcloud kms keyrings create "dlp-keyring" \ --location "global"
Créez une clé :
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"
Répertoriez votre trousseau de clés et votre clé :
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"
Vous obtenez le résultat suivant :
NAME PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED
Dans ce résultat,
PROJECT_ID
correspond à l'ID de votre projet.Le chemin d'accès sous
NAME
correspond au nom complet de la ressource de votre clé Cloud KMS. Prenez-en note, car les requêtes de suppression de l'identification et de restauration de l'identification l'exigent.
Étape 2 : Créer une clé AES encodée en base64
Cette section explique comment créer une clé AES (Advanced Encryption Standard) et l'encoder en base64.
Créez une clé AES 128, 192 ou 256 bits. La commande suivante utilise
openssl
pour créer une clé 256 bits dans le répertoire actuel :openssl rand -out "./aes_key.bin" 32
Le fichier
aes_key.bin
est ajouté à votre répertoire actuel.Encodez la clé AES en tant que chaîne base64 :
base64 -i ./aes_key.bin
Un résultat semblable aux lignes suivantes doit s'afficher :
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
Étape 3 : Encapsuler la clé AES avec la clé Cloud KMS
Cette section explique comment utiliser la clé Cloud KMS que vous avez créée à l'étape 1 pour encapsuler la clé AES encodée en base64 que vous avez créée à l'étape 2.
Pour encapsuler la clé AES, utilisez curl
pour envoyer la requête suivante à l'API Cloud KMS projects.locations.keyRings.cryptoKeys.encrypt
:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
Remplacez les éléments suivants :
PROJECT_ID
: par l'ID de votre projet.BASE64_ENCODED_AES_KEY
: chaîne encodée en base64 renvoyée à l'étape 2.
La réponse que vous obtenez de Cloud KMS est semblable à la réponse JSON suivante :
{ "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1", "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "ciphertextCrc32c": "901327763", "protectionLevel": "SOFTWARE" }
Dans ce résultat, PROJECT_ID
correspond à l'ID de votre projet.
Notez la valeur de ciphertext
dans la réponse que vous obtenez.
Il s'agit de votre clé encapsulée.
Étape 4: Envoyer une requête d'anonymisation à l'API DLP
Cette section explique comment anonymiser des données sensibles dans du contenu textuel.
Pour terminer cette tâche, vous aurez besoin des éléments suivants :
- Nom complet de la ressource Cloud KMS que vous avez créée à l'étape 1.
- La clé encapsulée que vous avez créée à l'étape 3.
Dans cette section, vous devez enregistrer l'exemple de requête dans un fichier JSON. Si vous utilisez Cloud Shell, vous pouvez utiliser l'éditeur Cloud Shell pour créer le fichier. Pour lancer l'éditeur, cliquez sur
Ouvrir l'éditeur dans la barre d'outils de la fenêtre Cloud Shell.Pour supprimer l'identification des données sensibles dans du contenu textuel, procédez comme suit :
Créez un fichier de requête JSON contenant le texte ci-dessous.
{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }
Remplacez les éléments suivants :
PROJECT_ID
: par l'ID du projet.WRAPPED_KEY
: clé encapsulée que vous avez créée à l'étape 3.
Assurez-vous que la valeur obtenue pour
cryptoKeyName
constitue le nom complet de la ressource Cloud KMS.Pour en savoir plus sur les composants de cette requête JSON, consultez la page
projects.locations.content.deidentify
. Une fois ce guide de démarrage rapide terminé, essayez de tester différentes entrées pour cette requête. Vous pouvez utilisercurl
comme décrit ici. Vous pouvez également utiliser l'explorateur d'API sur la page de référence de cette API sous Essayer cette API.Enregistrez le fichier sous le nom
deidentify-request.json
.Utilisez
curl
pour effectuer une requêteprojects.locations.content.deidentify
:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:deidentify \ -d @deidentify-request.json
Remplacez
PROJECT_ID
par l'ID de votre projet.Pour transmettre un nom de fichier à
curl
, vous devez utiliser l'option-d
(pour les données) et faire précéder le nom de fichier du symbole@
. Ce fichier doit se trouver dans le même répertoire que celui depuis lequel vous exécutez la commandecurl
.La réponse que vous recevez de la protection des données sensibles est semblable à la réponse JSON suivante:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q." }, "overview": { "transformedBytes": "22", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "22" } ] } }
Dans le champ
item
, l'adresse e-mail est remplacée par un jeton tel queEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
. Pour ce faire, vous devez transmettre l'intégralité du jeton dans la requête de restauration de l'identification.
Étape 5: Envoyer une requête de restauration de l'identification à l'API DLP
Cette section explique comment désanonymiser les données tokenisées dans le contenu textuel.
Pour terminer cette tâche, vous aurez besoin des éléments suivants :
- Nom complet de la ressource Cloud KMS que vous avez créée à l'étape 1.
- La clé encapsulée que vous avez créée à l'étape 3.
- Le jeton reçu à l'étape 4.
Pour restaurer l'identification du contenu tokenisé, procédez comme suit :
Créez un fichier de requête JSON contenant le texte ci-dessous.
{ "reidentifyConfig":{ "infoTypeTransformations":{ "transformations":[ { "infoTypes":[ { "name":"EMAIL_ADDRESS_TOKEN" } ], "primitiveTransformation":{ "cryptoDeterministicConfig":{ "cryptoKey":{ "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType":{ "name":"EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"EMAIL_ADDRESS_TOKEN" }, "surrogateType":{ } } ] }, "item":{ "value": "My name is Alicia Abernathy, and my email address is TOKEN." } }
Remplacez les éléments suivants :
PROJECT_ID
: par l'ID du projet.WRAPPED_KEY
: clé encapsulée que vous avez créée à l'étape 3.TOKEN
: jeton que vous avez reçu à l'étape 4, par exempleEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
.
Assurez-vous que la valeur obtenue pour
cryptoKeyName
constitue le nom complet de la ressource Cloud KMS.Pour en savoir plus sur les composants de cette requête JSON, consultez la page
projects.locations.content.reidentify
. Une fois ce guide de démarrage rapide terminé, essayez de tester différentes entrées pour cette requête. Vous pouvez utilisercurl
comme décrit ici. Vous pouvez également utiliser l'explorateur d'API sur la page de référence de cette API sous Essayer cette API.Enregistrez le fichier sous le nom
reidentify-request.json
.Utilisez
curl
pour effectuer une requêteprojects.locations.content.reidentify
:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:reidentify \ -d @reidentify-request.json
Remplacez
PROJECT_ID
par l'ID de votre projet.Pour transmettre un nom de fichier à
curl
, vous devez utiliser l'option-d
(pour les données) et faire précéder le nom de fichier du symbole@
. Ce fichier doit se trouver dans le même répertoire que celui depuis lequel vous exécutez la commandecurl
.La réponse que vous recevez de la protection des données sensibles est semblable à la réponse JSON suivante:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "overview": { "transformedBytes": "70", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "70" } ] } }
Dans le champ
item
, le jeton d'adresse e-mail est remplacé par l'adresse e-mail réelle du texte d'origine.Vous venez d'anonymiser et de restaurer l'identification des données sensibles dans du contenu textuel à l'aide d'un chiffrement déterministe.
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, supprimez le projet Google Cloud contenant les ressources.
Détruire la version de clé
Si vous ne souhaitez plus utiliser la clé que vous avez créée dans ce guide de démarrage rapide, détruisez sa version.
Dressez une liste des versions disponibles pour votre clé :
gcloud kms keys versions list \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Pour détruire une version, exécutez la commande suivante :
gcloud kms keys versions destroy KEY_VERSION \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Remplacez KEY_VERSION
par le numéro de la version à détruire.
Supprimer le projet
Si vous avez créé un projet pour ce guide de démarrage rapide, le moyen le plus simple d'éviter des frais supplémentaires consiste à le supprimer.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Révoquer vos identifiants
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
Étapes suivantes
- Pour obtenir des informations plus détaillées sur la suppression de l'identification du contenu sensible, consultez la page Supprimer l'identification des données sensibles.
- Pour en savoir plus sur l'intégration d'un workflow d'anonymisation dans des déploiements réels, consultez la page Anonymiser et restaurer l'identification des informations personnelles dans les ensembles de données à grande échelle à l'aide de la protection des données sensibles.
- Pour obtenir des informations conceptuelles sur la tokenisation des données via une clé de chiffrement, consultez la section Pseudonymisation.