Cette page explique comment anonymiser les données sensibles stockées dans Cloud Storage à l'aide de l'API Cloud Data Loss Prevention.
Cette opération permet de garantir que les fichiers que vous utilisez dans vos processus d'entreprise ne contiennent pas de données sensibles, telles que des informations personnelles. Cloud Data Loss Prevention peut inspecter les fichiers d'un bucket Cloud Storage à la recherche de données sensibles et créer des copies anonymisées de ces fichiers dans un bucket distinct. Vous pouvez ensuite utiliser des copies anonymisées dans vos processus métier.
Pour en savoir plus sur ce qui se passe lorsque vous anonymisez des données dans le stockage, consultez la page Anonymiser des données sensibles dans le stockage.
Avant de commencer
Cette page part du principe que:
Vous avez activé la facturation.
Vous avez activé Cloud DLP.
Vous disposez d'un bucket Cloud Storage avec des données dont vous souhaitez supprimer l'identification.
Vous savez comment envoyer une requête HTTP à l'API DLP. Pour en savoir plus, consultez la page Inspecter du texte sensible à l'aide de l'API DLP.
Découvrez les limites et points de considération concernant cette opération.
L'inspection du stockage nécessite le champ d'application OAuth suivant : https://www.googleapis.com/auth/cloud-platform
. Pour en savoir plus, consultez la page S'authentifier sur l'API DLP.
Rôles IAM requis
Si toutes les ressources de cette opération appartiennent au même projet, le rôle Agent de service de l'API DLP (roles/dlp.serviceAgent
) sur l'agent de service est suffisant. Ce rôle vous permet d'effectuer les opérations suivantes:
- Créer la tâche d'inspection
- Lire les fichiers dans le répertoire d'entrée
- Écrire les fichiers anonymisés dans le répertoire de sortie
- Écrire les détails de la transformation dans une table BigQuery
Les ressources concernées incluent la tâche d'inspection, les modèles de suppression de l'identification, le bucket d'entrée, le bucket de sortie et la table des détails de la transformation.
Si vous devez disposer des ressources dans des projets distincts, assurez-vous que l'agent de service de votre projet dispose également des rôles suivants:
- Le rôle Lecteur des objets Storage (
roles/storage.objectViewer
) sur le bucket d'entrée ou le projet qui le contient. - Le rôle Créateur d'objets Storage (
roles/storage.objectCreator
) sur le bucket de sortie ou le projet qui le contient. - Le rôle Éditeur de données BigQuery (
roles/bigquery.dataEditor
) sur la table de détails de la transformation ou le projet qui le contient.
Pour attribuer un rôle à votre agent de service, qui est un compte de service géré par Google, consultez Attribuer un seul rôle. Vous pouvez également contrôler les accès aux niveaux suivants:
Présentation de l'API
Pour supprimer l'identification du contenu stocké dans Cloud Storage, vous devez configurer une tâche d'inspection qui recherche les données sensibles selon les critères que vous spécifiez. Ensuite, dans la tâche d'inspection, vous fournissez des instructions d'anonymisation sous la forme d'une action Deidentify
.
Si vous souhaitez analyser uniquement un sous-ensemble des fichiers de votre bucket, vous pouvez limiter les fichiers analysés par la tâche. Les options acceptées pour les tâches d'anonymisation sont le filtrage par fichier (FileType
) et l'expression régulière (FileSet
).
Lorsque vous activez l'action Deidentify
, Cloud DLP transforme par défaut tous les types de fichiers compatibles inclus dans l'analyse. Toutefois, vous pouvez configurer la tâche pour qu'elle ne transforme qu'un sous-ensemble des types de fichiers compatibles.
Facultatif: Créer des modèles d'anonymisation
Si vous souhaitez contrôler la transformation des résultats, créez les modèles suivants. Ces modèles fournissent des instructions sur la transformation des résultats dans les fichiers structurés, non structurés et les images.
Modèle d'anonymisation:un
DeidentifyTemplate
par défaut à utiliser pour les fichiers non structurés, tels que les fichiers texte à forme libre. Ce type d'élémentDeidentifyTemplate
ne peut pas contenir d'objetRecordTransformations
, qui n'est compatible qu'avec le contenu structuré. Si ce modèle n'est pas présent, Cloud DLP transforme les fichiers non structurés à l'aide de la méthodeReplaceWithInfoTypeConfig
.Modèle d'anonymisation structuré : un
DeidentifyTemplate
à utiliser pour les fichiers structurés, tels que les fichiers CSV. CeDeidentifyTemplate
peut contenirRecordTransformations
. Si ce modèle n'est pas présent, Cloud DLP utilise le modèle d'anonymisation par défaut que vous avez créé. Si ce n'est pas le cas, Cloud DLP transforme les fichiers structurés à l'aide de la méthodeReplaceWithInfoTypeConfig
.Modèle de masquage d'images : un
DeidentifyTemplate
à utiliser pour les images. Ce modèle doit contenir un objetImageTransformations
. Si ce modèle n'est pas présent, Cloud DLP masque tous les résultats dans les images avec une zone noire.
En savoir plus sur la création d'un modèle de suppression de l'identification
Créer une tâche d'inspection avec une action d'anonymisation
L'objet DlpJob
fournit des instructions sur les éléments à inspecter, les types de données à signaler comme sensibles et la procédure à suivre avec les résultats.
Pour supprimer l'identification des données sensibles dans un répertoire Cloud Storage, votre DlpJob
doit définir au moins les éléments suivants:
- Un objet
StorageConfig
qui spécifie le répertoire Cloud Storage à inspecter. - Un objet
InspectConfig
, qui contient les types de données à rechercher et des instructions d'inspection supplémentaires pour identifier les données sensibles Une action
Deidentify
contenant les éléments suivants:Un objet
TransformationConfig
, qui spécifie les modèles créés pour anonymiser les données dans les fichiers structurés et non structurés. Vous pouvez également inclure une configuration permettant de masquer les données sensibles des images.Si vous n'incluez pas d'objet
TransformationConfig
, Cloud DLP remplace les données sensibles dans le texte par son infoType. Sur les images, il recouvre les données sensibles avec une zone noire.Un objet
TransformationDetailsStorageConfig
, qui spécifie une table BigQuery dans laquelle Cloud DLP doit stocker les détails de chaque transformation. Pour chaque transformation, les détails incluent une description, un code de réussite ou d'erreur, les détails de l'erreur, le nombre d'octets transformés, l'emplacement du contenu transformé et le nom de la tâche d'inspection dans laquelle Cloud DLP a effectué la transformation. Ce tableau ne stocke pas le contenu anonymisé.
Lorsque des données sont écrites dans une table BigQuery, l'utilisation de la facturation et des quotas est appliquée au projet contenant la table de destination.
Une fois que le contenu copié a été anonymisé, la tâche d'anonymisation se termine. La tâche contient un récapitulatif du nombre de transformations appliquées, que vous pouvez récupérer à l'aide de la méthode projects.dlpJobs.get
sur DlpJob
. Le DlpJob
renvoyé inclut à la fois un objet DeidentifyDataSourceDetails
et un objet InspectDataSourceDetails
. Ces objets contiennent respectivement les résultats d'une action Deidentify
et de la tâche d'inspection.
Si vous avez inclus un objet TransformationDetailsStorageConfig
dans votre DlpJob
, une table BigQuery est créée, contenant des métadonnées sur les détails de la transformation. Pour chaque transformation, Cloud DLP écrit une ligne de métadonnées dans la table. Pour en savoir plus sur le contenu de la table, consultez la documentation de référence sur les détails de la transformation.
Exemple de code
L'exemple JSON suivant montre comment anonymiser les fichiers dans un répertoire Cloud Storage.
Méthode et URL HTTP
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
Saisie JSON
{
"inspect_job": {
"storage_config": {
"cloud_storage_options": {
"file_set": {
"url": "INPUT_DIRECTORY"
}
}
},
"inspect_config": {
"info_types": [
{
"name": "PERSON_NAME"
}
]
},
"actions": {
"deidentify": {
"cloud_storage_output": "OUTPUT_DIRECTORY",
"transformation_config": {
"deidentify_template": "DEIDENTIFY_TEMPLATE_NAME",
"structured_deidentify_template": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME",
"image_redact_template": "IMAGE_REDACTION_TEMPLATE_NAME"
},
"transformation_details_storage_config": {
"table": {
"project_id": "TRANSFORMATION_DETAILS_PROJECT_ID",
"dataset_id": "TRANSFORMATION_DETAILS_DATASET_ID",
"table_id": "TRANSFORMATION_DETAILS_TABLE_ID"
}
},
"fileTypesToTransform": ["IMAGE","CSV", "TEXT_FILE"]
}
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel vous souhaitez stocker la tâche d'inspection.INPUT_DIRECTORY
: répertoire Cloud Storage que vous souhaitez inspecter, par exemplegs://input-bucket/folder1/folder1a
. Si l'URL se termine par une barre oblique, les sous-répertoires deINPUT_DIRECTORY
ne sont pas analysés.OUTPUT_DIRECTORY
: répertoire Cloud Storage dans lequel vous souhaitez stocker les fichiers anonymisés. Ce répertoire ne doit pas se trouver dans le même bucket Cloud Storage queINPUT_DIRECTORY
.DEIDENTIFY_TEMPLATE_NAME
: nom complet de la ressource du modèle d'anonymisation par défaut (pour les fichiers non structurés et les fichiers structurés), si vous en avez créé un. Cette valeur doit être au formatprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
: nom complet de la ressource du modèle d'anonymisation des fichiers structurés, le cas échéant. Cette valeur doit être au formatprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.IMAGE_REDACTION_TEMPLATE_NAME
: nom complet de la ressource du modèle de masquage des images, le cas échéant. Cette valeur doit être au formatprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.TRANSFORMATION_DETAILS_PROJECT_ID
: ID du projet dans lequel vous souhaitez stocker les détails de la transformation.TRANSFORMATION_DETAILS_DATASET_ID
: ID de l'ensemble de données BigQuery dans lequel vous souhaitez stocker les détails de la transformation. Si vous ne fournissez pas d'ID de table, le système en crée un automatiquement.TRANSFORMATION_DETAILS_TABLE_ID
: ID de la table BigQuery dans laquelle vous souhaitez stocker les détails de la transformation.
Dans l'exemple JSON précédent, notez les points suivants:
inspectJob
: objet de configuration de la tâche (DlpJob
). Cet objet contient la configuration pour les étapes d'inspection et d'anonymisation.storageConfig
: emplacement du contenu à inspecter (StorageConfig
). Cet exemple spécifie un bucket Cloud StorageCloudStorageOptions
.inspectConfig
: informations sur les données sensibles que vous souhaitez inspecter (InspectConfig
). Cet exemple examine le contenu correspondant à l'infoType intégréPERSON_NAME
.actions
: actions à effectuer une fois la partie d'inspection de la tâche terminée (Action
).deidentify
: spécifier cette action indique à Cloud DLP d'anonymiser les données sensibles correspondantes en fonction de la configuration spécifiée dansDeidentify
.cloud_storage_output
: spécifie l'URL du répertoire Cloud Storage que vous souhaitez inspecter.transformation_config
: indique comment Cloud DLP doit anonymiser les données sensibles dans les fichiers structurés, non structurés et les images (TransformationConfig
).Si vous n'incluez pas d'objet
TransformationConfig
, Cloud DLP remplace les données sensibles dans le texte par son infoType. Sur les images, il recouvre les données sensibles avec une zone noire.transformation_details_storage_config
: indique que Cloud DLP doit stocker les métadonnées de chaque transformation effectuée pour cette tâche. Il spécifie également l'emplacement et le nom de la table dans laquelle Cloud DLP doit stocker ces métadonnées (TransformationDetailsStorageConfig
).fileTypesToTransform
: limite l'opération d'anonymisation uniquement aux types de fichiers que vous répertoriez. Si vous ne définissez pas ce champ, tous les types de fichiers compatibles inclus dans l'opération d'inspection sont également inclus dans l'opération d'anonymisation. Dans cet exemple, Cloud DLP anonymise uniquement les fichiers image, CSV et texte, même si vous avez configuréDlpJob
pour inspecter tous les types de fichiers compatibles.
Créer la tâche d'inspection
Pour créer la tâche d'inspection (DlpJob
), envoyez une requête projects.dlpJobs.create
. Pour envoyer la requête à l'aide de cURL, enregistrez l'exemple précédent en tant que fichier JSON et exécutez la commande suivante:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs \
-d @PATH_TO_JSON_FILE
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel vous avez stocké l'élémentDlpJob
.PATH_TO_JSON_FILE
: chemin d'accès au fichier JSON contenant le corps de la requête.
Cloud DLP renvoie l'identifiant du nouveau fichier DlpJob
, son état et un instantané de la configuration d'inspection que vous avez définie.
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "PENDING", ... }
Récupérer les résultats de la tâche d'inspection
Pour récupérer les résultats de DlpJob
, envoyez une requête projects.dlpJobs.get
:
curl -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel vous avez stocké l'élémentDlpJob
.JOB_ID
: ID de l'offre d'emploi renvoyée lors de la création deDlpJob
.
Si l'opération est terminée, vous obtenez une réponse semblable à celle-ci:
{ "name": "projects/PROJECT_ID/dlpJobs/JOB_ID", "type": "INSPECT_JOB", "state": "DONE", "inspectDetails": { "requestedOptions": { "snapshotInspectTemplate": {}, "jobConfig": { "storageConfig": { "cloudStorageOptions": { "fileSet": { "url": "INPUT_DIRECTORY" } } }, "inspectConfig": { "infoTypes": [ { "name": "PERSON_NAME" } ], "limits": {} }, "actions": [ { "deidentify": { "transformationDetailsStorageConfig": { "table": { "projectId": "TRANSFORMATION_DETAILS_PROJECT_ID", "datasetId": "TRANSFORMATION_DETAILS_DATASET_ID", "tableId": "TRANSFORMATION_DETAILS_TABLE_ID" } }, "transformationConfig": { "deidentifyTemplate": "DEIDENTIFY_TEMPLATE_NAME", "structuredDeidentifyTemplate": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "imageRedactTemplate": "IMAGE_REDACTION_TEMPLATE_NAME" }, "fileTypesToTransform": [ "IMAGE", "CSV", "TEXT_FILE" ], "cloudStorageOutput": "OUTPUT_DIRECTORY" } } ] } }, "result": { "processedBytes": "25242", "totalEstimatedBytes": "25242", "infoTypeStats": [ { "infoType": { "name": "PERSON_NAME" }, "count": "114" } ] } }, "createTime": "2022-06-09T23:00:53.380Z", "startTime": "2022-06-09T23:01:27.986383Z", "endTime": "2022-06-09T23:02:00.443536Z", "actionDetails": [ { "deidentifyDetails": { "requestedOptions": { "snapshotDeidentifyTemplate": { "name": "DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T17:46:34.208923Z", "updateTime": "2022-06-09T17:46:34.208923Z", "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "characterMaskConfig": { "maskingCharacter": "*", "numberToMask": 25 } } } ] } }, "locationId": "global" }, "snapshotStructuredDeidentifyTemplate": { "name": "STRUCTURED_DEIDENTIFY_TEMPLATE_NAME", "createTime": "2022-06-09T20:51:12.411456Z", "updateTime": "2022-06-09T21:07:53.633149Z", "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "Name" } ], "primitiveTransformation": { "replaceConfig": { "newValue": { "stringValue": "[redacted]" } } } } ] } }, "locationId": "global" }, "snapshotImageRedactTemplate": { "name": "IMAGE_REDACTION_TEMPLATE_NAME", "createTime": "2022-06-09T20:52:25.453564Z", "updateTime": "2022-06-09T20:52:25.453564Z", "deidentifyConfig": {}, "locationId": "global" } }, "deidentifyStats": { "transformedBytes": "3972", "transformationCount": "110" } } } ], "locationId": "global" }
Étapes suivantes
- En savoir plus sur le processus d'anonymisation des données dans le stockage
- Découvrez comment anonymiser les données stockées.
- Suivez l'atelier de programmation Créer une copie anonymisée des données dans Cloud Storage.
- En savoir plus sur les transformations d'anonymisation
- Découvrez comment inspecter le stockage pour identifier les données sensibles.