Cette page explique comment inspecter une ressource Cloud Storage et créer des copies anonymisées des données à l'aide de l'API Cloud Data Loss Prevention.
Cette opération permet de s'assurer que les fichiers que vous utilisez dans vos processus métier ne contiennent pas de données sensibles, telles que des informations permettant d'identifier personnellement l'utilisateur. La protection des données sensibles 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 les copies anonymisées dans vos processus métier.
Pour en savoir plus sur cette fonctionnalité, consultez la page Anonymiser les données Cloud Storage sensibles.
Avant de commencer
Cette page suppose que vous avez déjà:
Vous avez activé la facturation.
Vous avez activé la protection des données sensibles.
Vous disposez d'un bucket Cloud Storage contenant des données que vous souhaitez anonymiser.
Vous savez envoyer une requête HTTP à l'API DLP. Pour en savoir plus, consultez Inspecter un texte sensible à l'aide de l'API DLP.
Découvrez les limites et points à prendre en compte pour 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 section Authentification auprès de l'API DLP.
Rôles IAM requis
Si toutes les ressources de cette opération se trouvent dans le même projet, le rôle Agent de service de l'API DLP (roles/dlp.serviceAgent
) sur l'agent de service est suffisant. Voici ce que ce rôle vous permet de faire:
- Créer la tâche d'inspection
- Lire les fichiers du 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 pertinentes incluent la tâche d'inspection, les modèles d'anonymisation, le bucket d'entrée, le bucket de sortie et le tableau 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 de l'espace de stockage" (
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. - Rôle "Éditeur de données BigQuery" (
roles/bigquery.dataEditor
) sur la table des détails de la transformation ou sur le projet qui la contient.
Pour attribuer un rôle à l'agent de service, consultez la section Attribuer un rôle unique. Vous pouvez également contrôler l'accès aux niveaux suivants:
Présentation de l'API
Pour créer des copies anonymisées du contenu stocké dans Cloud Storage, vous devez configurer une tâche d'inspection qui recherche les données sensibles conformément aux critères que vous spécifiez. Ensuite, dans la tâche d'inspection, vous fournissez des instructions de désidentification sous la forme d'une action Deidentify
.
Si vous ne souhaitez analyser qu'un sous-ensemble des fichiers de votre bucket, vous pouvez limiter les fichiers que la tâche analyse. Les options compatibles pour les tâches de désidentification sont le filtrage des fichiers par type (FileType
) et l'expression régulière (FileSet
).
Lorsque vous activez l'action Deidentify
, la protection des données sensibles crée par défaut des copies anonymisées (transformées) de 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 de suppression de l'identification
Si vous souhaitez contrôler la manière dont les résultats sont transformés, créez les modèles suivants. Ces modèles fournissent des instructions sur la transformation des résultats dans des fichiers structurés, des fichiers non structurés et des images.
Modèle de suppression de l'identification:
DeidentifyTemplate
par défaut à utiliser pour les fichiers non structurés, tels que les fichiers texte de format libre. Ce type deDeidentifyTemplate
ne peut pas contenir d'objetRecordTransformations
, qui n'est compatible qu'avec le contenu structuré. Si ce modèle n'est pas présent, Sensitive Data Protection utilise la méthodeReplaceWithInfoTypeConfig
pour transformer les fichiers non structurés.Modèle de désidentification structuré:
DeidentifyTemplate
à utiliser pour les fichiers structurés, tels que les fichiers CSV. CeDeidentifyTemplate
peut contenirRecordTransformations
. Si ce modèle n'est pas présent, Sensitive Data Protection utilise le modèle d'anonymisation par défaut que vous avez créé. Si ce n'est pas le cas, la protection des données sensibles utilise la méthodeReplaceWithInfoTypeConfig
pour transformer les fichiers structurés.Modèle de masquage d'image:
DeidentifyTemplate
à utiliser pour les images. Ce modèle doit contenir un objetImageTransformations
. Si ce modèle n'est pas présent, la protection des données sensibles masque tous les résultats des images à l'aide d'une zone noire.
Découvrez comment créer un modèle de désidentification.
Créer une tâche d'inspection avec une action de suppression de l'identification
L'objet DlpJob
fournit des instructions sur ce qu'il faut inspecter, les types de données à signaler comme sensibles et la marche à suivre en cas de résultats.
Pour anonymiser les données sensibles dans un répertoire Cloud Storage, votre DlpJob
doit définir au moins les éléments suivants:
- Objet
StorageConfig
, qui spécifie le répertoire Cloud Storage à inspecter. - Objet
InspectConfig
, qui contient les types de données à rechercher et des instructions d'inspection supplémentaires pour trouver les données sensibles. Une action
Deidentify
contenant les éléments suivants:Un objet
TransformationConfig
, qui spécifie tous les modèles que vous avez créés pour anonymiser les données dans des fichiers structurés et non structurés. Vous pouvez également inclure une configuration pour masquer les données sensibles des images.Si vous n'incluez pas d'objet
TransformationConfig
, la protection des données sensibles remplace les données sensibles dans le texte par leur infoType. Sur les images, il recouvre les données sensibles avec un cadre noir.Objet
TransformationDetailsStorageConfig
, qui spécifie une table BigQuery dans laquelle la protection des données sensibles doit stocker des informations sur chaque transformation. Pour chaque transformation, les détails incluent une description, un code de réussite ou d'erreur, des détails d'erreur, le nombre d'octets transformés, l'emplacement du contenu transformé et le nom de la tâche d'inspection dans laquelle la protection des données sensibles a effectué la transformation. Ce tableau ne stocke pas le contenu anonymisé.
Lorsque des données sont écrites dans une table BigQuery, la facturation et l'utilisation des quotas sont appliquées au projet contenant la table de destination.
Une fois le contenu copié anonymisé, la tâche d'anonymisation se termine. La tâche contient un résumé du nombre de fois où les transformations spécifiées ont été appliquées, que vous pouvez récupérer à l'aide de la méthode projects.dlpJobs.get
sur DlpJob
. L'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 qui se produit, la protection des données sensibles écrit une ligne de métadonnées dans la table. Pour en savoir plus sur le contenu du tableau, consultez la documentation de référence sur les détails des transformations.
Exemples de code
Les exemples suivants montrent comment utiliser l'API DLP pour créer des copies anonymisées de fichiers Cloud Storage.
Méthode HTTP et URL
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour la protection des données sensibles, consultez la page Bibliothèques clientes de la protection des données sensibles.
Pour vous authentifier auprès de la protection des données sensibles, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
REST
Entrée 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 exemple,gs://input-bucket/folder1/folder1a
). Si l'URL se termine par une barre oblique, aucun sous-répertoire deINPUT_DIRECTORY
n'est analysé.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 de désidentification par défaut (pour les fichiers structurés et non 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 de désidentification pour les fichiers structurés, si vous en avez créé un. 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 d'image pour les images, si vous en avez créé un. 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 automatiquement un.TRANSFORMATION_DETAILS_TABLE_ID
: ID de la table BigQuery dans laquelle vous souhaitez stocker les détails de la transformation.
Notez les éléments suivants:
inspectJob
: objet de configuration de la tâche (DlpJob
). Cet objet contient la configuration des étapes d'inspection et de suppression de l'identification.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 recherche du contenu correspondant à l'infoType intégréPERSON_NAME
.actions
: actions à effectuer une fois la partie inspection de la tâche terminée (Action
).deidentify
: spécifier cette action indique à la protection des données sensibles d'anonymiser les données sensibles correspondantes conformément à la configuration spécifiée à l'intérieur (Deidentify
).cloud_storage_output
: spécifie l'URL du répertoire Cloud Storage que vous souhaitez inspecter.transformation_config
: spécifie comment la protection des données sensibles doit anonymiser les données sensibles dans les fichiers structurés, les fichiers non structurés et les images (TransformationConfig
).Si vous n'incluez pas d'objet
TransformationConfig
, la protection des données sensibles remplace les données sensibles dans le texte par leur infoType. Sur les images, il recouvre les données sensibles avec un cadre noir.transformation_details_storage_config
: indique que la protection des données sensibles doit stocker des métadonnées sur chaque transformation qu'elle effectue pour cette tâche. Il spécifie également l'emplacement et le nom de la table dans laquelle la protection des données sensibles doit stocker ces métadonnées (TransformationDetailsStorageConfig
).fileTypesToTransform
: limite l'opération d'anonymisation aux seuls types de fichiers que vous listez. 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 de désidentification. Dans cet exemple, la protection des données sensibles ne dé-identifie que les fichiers image, CSV et texte, même si vous avez configuréDlpJob
pour inspecter tous les types de fichiers compatibles.
Créer une tâche d'inspection via l'API REST
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 REST précédent en tant que fichier JSON, puis 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é leDlpJob
.PATH_TO_JSON_FILE
: chemin d'accès au fichier JSON contenant le corps de la requête.
La protection des données sensibles renvoie l'identifiant de l'DlpJob
nouvellement créé, 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é leDlpJob
.JOB_ID
: ID de la tâche renvoyée lorsque vous avez crééDlpJob
.
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" }
Étape suivante
- En savoir plus sur le processus d'anonymisation des données stockées
- Découvrez comment anonymiser les données stockées à l'aide de la console Google Cloud.
- 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.