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 pour y détecter des données sensibles, puis créer des copies anonymisées de ces fichiers dans un bucket distinct. Vous pourrez ensuite utiliser les copies anonymisées dans vos processus métier.
Pour en savoir plus sur cette fonctionnalité, consultez Anonymiser les données sensibles dans Cloud Storage.
Avant de commencer
Cette page suppose les éléments suivants :
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 Inspecter un 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 S'authentifier 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 concernées 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 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
) dans le tableau des détails de la transformation ou dans le projet qui le contient.
Pour attribuer un rôle à l'agent de service, consultez 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 de contenus stockés dans Cloud Storage, vous configurez un job 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 de désidentification sous la forme d'une action Deidentify
.
Si vous souhaitez n'analyser qu'un sous-ensemble des fichiers de votre bucket, vous pouvez limiter les fichiers analysés par le job. Les options compatibles pour les jobs 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 transforme uniquement 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 sur la transformation des résultats dans les fichiers structurés, les fichiers non structurés et les images.
Modèle d'anonymisation :
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, 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 elle n'est pas non plus 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 avec une boîte noire.
Découvrez comment créer un modèle de désidentification.
Créer un job d'inspection avec une action de désidentification
L'objet DlpJob
fournit des instructions sur les éléments à inspecter, les types de données à signaler comme sensibles et les actions à effectuer en fonction des 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
contenant 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 les modèles que vous avez 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
, la protection des données sensibles remplace les données sensibles dans le texte par leur infoType. Dans les images, il recouvre les données sensibles avec un cadre noir.Objet
TransformationDetailsStorageConfig
, qui spécifie une table BigQuery dans laquelle Sensitive Data Protection doit stocker des informations sur 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 du job d'inspection dans lequel la transformation a été effectuée par la protection des données sensibles. Cette table ne stocke pas le contenu réel 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é, le job d'anonymisation se termine. Le job contient un récapitulatif du nombre de fois où les transformations spécifiées ont été appliquées. Vous pouvez le récupérer à l'aide de la méthode projects.dlpJobs.get
sur DlpJob
. L'objet DlpJob
renvoyé inclut 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. Elle contient des métadonnées sur les détails de la transformation. Pour chaque transformation effectuée, Sensitive Data Protection écrit une ligne de métadonnées dans la table. Pour en savoir plus sur le contenu du tableau, consultez 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 le job 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, 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 de désidentification 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 complet de la ressource 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 d'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 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 pour le job (DlpJob
). Cet objet contient la configuration pour les é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 inspecte le 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 en fonction de 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 Sensitive Data Protection doit désidentifier 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. Dans les images, il recouvre les données sensibles avec un cadre noir.transformation_details_storage_config
: indique que Sensitive Data Protection doit stocker les métadonnées de chaque transformation qu'il effectue pour ce job. Il spécifie également l'emplacement et le nom de la table dans laquelle Sensitive Data Protection doit stocker ces métadonnées (TransformationDetailsStorageConfig
).fileTypesToTransform
: limite l'opération d'anonymisation aux 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 désidentifie uniquement les fichiers image, CSV et texte, même si vous avez configuréDlpJob
pour inspecter tous les types de fichiers compatibles.
Créer un job d'inspection à l'aide de l'API REST
Pour créer le job 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 de la DlpJob
nouvellement créée, 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 du job renvoyé 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 stockées
- Découvrez comment anonymiser des 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.