Anonymiser et désanonymiser des données sensibles
Le processus décrit dans ce document est appelé pseudonymisation (ou tokenisation). Dans ce processus, Sensitive Data Protection utilise une clé cryptographique pour convertir (anonymiser) du texte sensible en jeton. Pour restaurer (restaurer l'identification) ce texte, vous avez besoin de la clé cryptographique utilisée lors de l'anonymisation et du jeton.
Sensitive Data Protection est compatible avec les méthodes de chiffrement 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 recommandons cette méthode, car elle offre le plus haut niveau de sécurité parmi toutes les méthodes de chiffrement cryptographiques réversibles compatibles avec la protection des données sensibles.
Vous pouvez suivre la procédure décrite dans ce document 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.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Administrateur Cloud KMS (
roles/cloudkms.admin) -
Chiffreur de CryptoKeys Cloud KMS (
roles/cloudkms.cryptoKeyEncrypter) -
Utilisateur DLP (
roles/dlp.user) 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: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLEDDans ce résultat,
PROJECT_IDcorrespond à l'ID de votre projet.La valeur de
NAMEcorrespond au nom complet de la ressource de votre clé Cloud KMS. Notez cette valeur, car les requêtes de suppression de l'identification et de restauration de l'identification l'exigent.Créez une clé AES 128, 192 ou 256 bits. La commande suivante utilise
opensslpour créer une clé 256 bits dans le répertoire actuel :openssl rand -out "./aes_key.bin" 32Le fichier
aes_key.binest ajouté à votre répertoire actuel.Encodez la clé AES en tant que chaîne base64 :
base64 -i ./aes_key.binUn résultat semblable aux lignes suivantes doit s'afficher :
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=PROJECT_ID: par l'ID de votre projet.BASE64_ENCODED_AES_KEY: chaîne encodée en base64 renvoyée dans Créer une clé AES encodée en base64.- Nom complet de la ressource Cloud KMS que vous avez créée à l'étape 1.
- La clé encapsulée que vous avez créée dans Encapsuler la clé AES avec la clé Cloud KMS.
Créez un fichier de requête JSON appelé
deidentify-request.jsoncontenant le texte suivant.{ "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 dans Encapsuler la clé AES avec la clé Cloud KMS.
Assurez-vous que la valeur obtenue pour
cryptoKeyNameconstitue le nom complet de la ressource Cloud KMS.Pour en savoir plus sur les composants de cette requête JSON, consultez
projects.locations.content.deidentify. Une fois cette tâche terminée, essayez de tester différentes entrées pour cette requête. Vous pouvez utilisercurlcomme décrit ici. Vous pouvez également utiliser l'explorateur d'API sur la page de référence de cette API sous Essayer cette méthode.Utilisez
curlpour 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.jsonRemplacez
PROJECT_IDpar l'ID de votre projet.Pour transmettre un nom de fichier à
curl, utilisez l'option-d(pour les données) et faites 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 obtenez de Sensitive Data Protection est semblable au JSON suivant :
{ "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/<var>PROJECT_ID</var>/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. Notez la valeur du jeton dans la réponse. Pour réidentifier le contenu anonymisé, vous devez transmettre l'intégralité du jeton dans la requête de réidentification.- Nom complet de la ressource Cloud KMS que vous avez créée à l'étape 1.
- La clé encapsulée que vous avez créée dans Encapsuler la clé AES avec la clé Cloud KMS.
- Jeton que vous avez reçu dans la section Envoyer une requête d'anonymisation à l'API DLP.
Créez un fichier de requête JSON appelé
reidentify-request.jsoncontenant le texte suivant.{ "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 dans Encapsuler la clé AES avec la clé Cloud KMS.TOKEN: jeton que vous avez reçu dans Envoyer une demande de désidentification à l'API DLP, par exempleEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.
Assurez-vous que la valeur obtenue pour
cryptoKeyNameconstitue le nom complet de la ressource Cloud KMS.Pour en savoir plus sur les composants de cette requête JSON, consultez
projects.locations.content.reidentify. Une fois cette tâche terminée, essayez de tester différentes entrées pour cette requête. Vous pouvez utilisercurlcomme décrit ici. Vous pouvez également utiliser l'explorateur d'API sur la page de référence de cette API sous Essayer cette méthode.Utilisez
curlpour 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.jsonRemplacez
PROJECT_IDpar l'ID de votre projet.Pour transmettre un nom de fichier à
curl, utilisez l'option-d(pour les données) et faites 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 obtenez de Sensitive Data Protection est semblable au JSON suivant :
{ "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/<var>PROJECT_ID</var>/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.
- Pour en savoir plus sur l'anonymisation du contenu sensible, consultez Supprimer l'identification des données sensibles.
- Pour découvrir comment un workflow d'anonymisation s'intègre aux déploiements réels, consultez Anonymiser et désanonymiser les informations permettant d'identifier personnellement l'utilisateur 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 avec une clé cryptographique, consultez Pseudonymisation.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer une clé AES encapsulée, désidentifier des données sensibles et les réidentifier, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un trousseau de clés et une clé
Avant de commencer cette procédure, décidez où vous souhaitez que Sensitive Data Protection traite vos requêtes 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 Protection des données sensibles.
Sinon, les requêtes Sensitive Data Protection échoueront.
Vous trouverez la liste des emplacements compatibles dans la section Emplacements Sensitive Data Protection. 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é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.
Encapsuler la clé AES avec la clé Cloud KMS
Cette section explique comment utiliser la clé Cloud KMS que vous avez créée dans Créer un trousseau et une clé pour encapsuler la clé AES encodée en base64 que vous avez créée dans Créer une clé AES encodée en base64.
Pour encapsuler la clé AES, utilisez curl pour envoyer la requête suivante à la méthode projects.locations.keyRings.cryptoKeys.encrypt de l'API Cloud KMS :
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 :
La réponse que vous obtenez de Cloud KMS est semblable à la réponse JSON suivante :
{
"name": "projects/<var>PROJECT_ID</var>/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.
Il s'agit de votre clé encapsulée.
Envoyer une requête de suppression de l'identification à 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 :
Vous devez enregistrer l'exemple de requête dans un fichier JSON. Si vous utilisez Cloud Shell, utilisez l'éditeur Cloud Shell pour créer le fichier. Pour lancer l'éditeur, cliquez sur Ouvrir l'éditeur dans la barre d'outils Cloud Shell.
Pour supprimer l'identification des données sensibles dans du contenu textuel, procédez comme suit :
Envoyer une requête de ré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 :
Pour restaurer l'identification du contenu tokenisé, procédez comme suit :
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud qui les contient.
Détruire la version de clé
Si vous ne souhaitez plus utiliser la clé que vous avez créée dans cette tâche, 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, par exemple 1.
Supprimer le projet
Si vous avez créé un projet pour cette tâche, 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