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 garantir que les fichiers que vous utilisez dans vos processus métier ne contiennent pas de données sensibles, telles que des informations personnelles. La protection des données sensibles peut rechercher des données sensibles dans les fichiers d'un bucket Cloud Storage 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 sensibles dans Cloud Storage.
Avant de commencer
Cette page suppose ce qui suit:
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 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 les 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 page S'authentifier sur 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. Ce rôle vous permet d'effectuer les opérations suivantes:
- Créer le job 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 sont le job 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 les ressources doivent se trouver dans des projets distincts, assurez-vous que l'agent de service de votre projet dispose également des rôles suivants:
- Le rôle de lecteur des objets Storage (
roles/storage.objectViewer
) sur le bucket d'entrée ou le projet qui le contient. - Le rôle de créateur d'objets Storage (
roles/storage.objectCreator
) sur le bucket de sortie ou sur le projet qui le contient - Le rôle Éditeur de données BigQuery (
roles/bigquery.dataEditor
) pour la table des détails de la transformation ou le projet qui la 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 l'accès aux niveaux suivants:
Présentation de l'API
Pour créer des copies anonymisées de contenus stockés 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 ne souhaitez analyser qu'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 avec anonymisation sont le filtrage de fichiers par type (FileType
) et les expressions régulières (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 d'anonymisation
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 pour transformer les résultats dans des fichiers structurés, des fichiers non structurés et des images.
Modèle d'anonymisation:un
DeidentifyTemplate
par défaut à utiliser pour les fichiers non structurés, tels que les fichiers texte au 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, la protection des données sensibles utilise la méthodeReplaceWithInfoTypeConfig
pour transformer les fichiers non structurés.Modèle d'anonymisation 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, la protection des données sensibles utilise le modèle d'anonymisation par défaut que vous avez créé. Si cette valeur n'est pas présente, 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 dans les images à l'aide d'une zone noire.
Découvrez comment créer un modèle d'anonymisation.
Créer un job 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 les opérations à effectuer avec les résultats.
Pour anonymiser 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 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 une case noire.Un objet
TransformationDetailsStorageConfig
, qui spécifie une table BigQuery dans laquelle la protection des données sensibles 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 la protection des données sensibles a effectué la transformation. Cette table 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 qui contient 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
. 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 la tâche d'inspection.
Si vous avez inclus un objet TransformationDetailsStorageConfig
dans votre DlpJob
, une table BigQuery est créée avec 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 de la table, consultez la documentation de référence sur les détails de la transformation.
Exemples de code
Les exemples suivants montrent comment créer des copies anonymisées de fichiers Cloud Storage à l'aide de l'API DLP.
Méthode et URL HTTP
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 Bibliothèques clientes pour 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 Bibliothèques clientes pour 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 Bibliothèques clientes pour 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 Bibliothèques clientes pour 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 Bibliothèques clientes pour 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 Bibliothèques clientes pour 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 exemplegs://input-bucket/folder1/folder1a
. Si l'URL se termine par une barre oblique finale, 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 de ressource complet du modèle d'anonymisation par défaut pour les fichiers non structurés et structurés, si vous en avez créé un. Cette valeur doit être au formatprojects/projectName/(locations/locationId)/deidentifyTemplates/templateName
.STRUCTURED_DEIDENTIFY_TEMPLATE_NAME
: nom de ressource complet du modèle d'anonymisation 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 des images si vous en avez créé une. 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.
Notez les objets suivants:
inspectJob
: objet de configuration de la tâche (DlpJob
). Cet objet contient la configuration des é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 recherche du contenu correspondant à l'infoTypePERSON_NAME
intégré.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 en fonction de la configuration spécifiée dans (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 une case noire.transformation_details_storage_config
: spécifie que la protection des données sensibles doit stocker des métadonnées sur chaque transformation effectuée 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 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, la protection des données sensibles anonymise uniquement les fichiers image, CSV et texte, même si vous avez configuréDlpJob
pour inspecter tous les types de fichiers acceptés.
Créer un job 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 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é 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 du 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 du job 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 lors de la création de l'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" }
Étapes suivantes
- En savoir plus sur le processus d'anonymisation des données dans l'espace de stockage
- Découvrez comment anonymiser des données dans un espace de stockage à l'aide de la console Google Cloud.
- Suivez l'atelier de programmation Créer une copie anonymisée de données dans Cloud Storage.
- En savoir plus sur les transformations d'anonymisation.
- Découvrez comment inspecter le stockage des données sensibles.