Créer et planifier des tâches d'inspection dans le cadre de la protection des données sensibles

Cet article explique en détail comment créer une tâche d'inspection Sensitive Data Protection et comment planifier des tâches d'inspection récurrentes en créant un déclencheur de tâche. Pour savoir rapidement comment créer un déclencheur de job à l'aide de l'interface utilisateur de la protection des données sensibles, consultez la section Démarrage rapide: Créer un déclencheur de job de protection des données sensibles.

À propos des tâches d'inspection et des déclencheurs de tâche

Lorsque Sensitive Data Protection effectue une analyse d'inspection pour identifier les données sensibles, chaque analyse s'exécute en tant que tâche. La protection des données sensibles crée et exécute une ressource de tâche chaque fois que vous lui demandez d'inspecter vos dépôts de stockage Google Cloud, tels que vos buckets Cloud Storage, vos tables BigQuery, vos genres Datastore et vos données externes.

Vous pouvez planifier des tâches d'analyse d'inspection dans le cadre de la protection des données sensibles en créant des déclencheurs de tâche. Un déclencheur de tâche automatise la création de tâches Sensitive Data Protection de manière périodique et peut également être exécuté à la demande.

Pour en savoir plus sur les tâches et les déclencheurs de tâche dans Sensitive Data Protection, consultez la page conceptuelle Tâches et déclencheurs de tâches.

Créer une tâche d'inspection

Pour créer une tâche d'inspection Sensitive Data Protection:

Console

Dans la section "Protection des données sensibles" de la console Google Cloud, accédez à la page Créer une tâche ou un déclencheur de tâche.

Accéder à la page "Créer un job ou un déclencheur de job"

La page Créer une tâche ou un déclencheur de tâche contient les sections suivantes:

Choisir les données d'entrée

Nom

Saisissez un nom pour la tâche. Vous pouvez utiliser des lettres, des chiffres et des traits d'union. Nommer votre tâche est facultatif Si vous n'indiquez pas de nom, la protection des données sensibles attribue à la tâche un identifiant de numéro unique.

Emplacement

Dans le menu Type de stockage, choisissez le type de dépôt qui stockera les données que vous souhaitez analyser :

  • Cloud Storage : saisissez l'URL du bucket que vous souhaitez analyser, ou sélectionnez Inclure/Exclure dans le menu Type d'emplacement, puis cliquez sur Parcourir pour accéder au bucket ou au sous-dossier à analyser. Cochez la case Analyser le dossier de manière récursive pour analyser le répertoire spécifié et tous les répertoires contenus. Ne cochez pas la case si vous ne souhaitez analyser que le répertoire spécifié.
  • BigQuery : saisissez les identifiants du projet, de l'ensemble de données et de la table à analyser.
  • Datastore : saisissez les identifiants du projet, de l'espace de noms (facultatif) et du genre à analyser.
  • Hybride: vous pouvez ajouter des libellés obligatoires, des libellés facultatifs et des options pour gérer les données tabulaires. Pour en savoir plus, consultez la section Types de métadonnées que vous pouvez fournir.

Échantillonnage

L'échantillonnage est une méthode facultative permettant d'économiser des ressources si vous disposez d'une très grande quantité de données.

Sous Sampling (Échantillonnage), vous pouvez choisir d’analyser toutes les données sélectionnées ou d'échantillonner les données en analysant un certain pourcentage. L'échantillonnage fonctionne différemment selon le type de dépôt de stockage utilisé pour l'analyse :

  • Pour BigQuery, vous pouvez échantillonner un sous-ensemble du nombre total de lignes sélectionnées, correspondant au pourcentage spécifié de fichiers à inclure dans l'analyse.
  • Pour Cloud Storage, si un fichier dépasse la taille spécifiée dans Max byte size to scan per file (Taille d'octets maximale à analyser par fichier), la protection des données sensibles effectue l'analyse jusqu'à cette valeur, puis passe au fichier suivant.

Pour activer l'échantillonnage, choisissez l'une des options suivantes dans le premier menu :

  • Démarrer l'échantillonnage à partir du début: Sensitive Data Protection lance l'analyse partielle au début des données. Pour BigQuery, l'analyse démarre à la première ligne. Pour Cloud Storage, l'analyse démarre au début de chaque fichier et s'arrête une fois que Sensitive Data Protection a analysé les données jusqu'à la taille de fichier maximale spécifiée.
  • Démarrer l'échantillonnage à partir d'un emplacement aléatoire: Sensitive Data Protection démarre l'analyse partielle à partir d'un emplacement aléatoire dans les données. Pour BigQuery, l'analyse se lance sur une ligne au hasard. Pour Cloud Storage, ce paramètre ne s'applique qu'aux fichiers qui dépassent une taille maximale spécifiée. La protection des données sensibles analyse intégralement les fichiers dont la taille est inférieure à la taille maximale indiquée. Les fichiers dont la taille dépasse la taille maximale autorisée sont analysés jusqu'à concurrence de cette taille maximale.

Pour effectuer une analyse partielle, vous devez également choisir le pourcentage de données que vous souhaitez analyser. Utilisez le curseur pour définir le pourcentage.

Vous pouvez également limiter par date le nombre de fichiers ou d'enregistrements à analyser. Consultez la section Programmation ci-après pour en savoir plus.

Configuration avancée

Lorsque vous créez une tâche pour une analyse de buckets Cloud Storage ou de tables BigQuery, vous pouvez affiner votre recherche en spécifiant une configuration avancée. Plus précisément, vous pouvez configurer les éléments suivants :

  • Fichiers (Cloud Storage seulement) : types de fichiers à analyser, y compris les fichiers texte, les fichiers binaires et les fichiers image.
  • Champs d'identification (BigQuery uniquement) : identifiants de ligne uniques dans la table.
  • Pour Cloud Storage, si un fichier dépasse la taille spécifiée dans Max byte size to scan per file (Taille d'octets maximale à analyser par fichier), la protection des données sensibles effectue l'analyse jusqu'à cette valeur, puis passe au fichier suivant.

Pour activer l'échantillonnage, choisissez le pourcentage de données à analyser. Utilisez le curseur pour définir le pourcentage. Sélectionnez ensuite l'une des options suivantes dans le premier menu :

  • Démarrer l'échantillonnage à partir du début: Sensitive Data Protection lance l'analyse partielle au début des données. Pour BigQuery, l'analyse démarre à la première ligne. Pour Cloud Storage, l'analyse démarre au début de chaque fichier et s'arrête une fois que la protection des données sensibles a analysé les données jusqu'à la taille de fichier maximale spécifiée (voir ci-dessus).
  • Démarrer l'échantillonnage à partir d'un emplacement aléatoire: Sensitive Data Protection démarre l'analyse partielle à partir d'un emplacement aléatoire dans les données. Pour BigQuery, l'analyse se lance sur une ligne au hasard. Pour Cloud Storage, ce paramètre ne s'applique qu'aux fichiers qui dépassent une taille maximale spécifiée. La protection des données sensibles analyse intégralement les fichiers dont la taille est inférieure à la taille maximale indiquée. Les fichiers dont la taille dépasse la taille maximale autorisée sont analysés jusqu'à concurrence de cette taille maximale.
Fichiers

Pour les fichiers stockés dans Cloud Storage, l'onglet Files (Fichiers) permet de spécifier les types à inclure dans l'analyse.

Vous pouvez choisir entre les fichiers binaires, texte, image, CSV, TSV, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, PDF et Apache Avro. Pour obtenir une liste complète des extensions de fichiers que l'outil de protection des données sensibles peut analyser dans des buckets Cloud Storage, consultez FileType. Si vous sélectionnez l'option Fichiers binaires, la protection des données sensibles analyse les fichiers de types non reconnus.

Champs d'identification

Pour les tables dans BigQuery, dans le champ Champs d'identification, vous pouvez demander à Sensitive Data Protection d'inclure les valeurs des colonnes de clés primaires de la table dans les résultats. Vous pouvez ainsi associer les résultats aux lignes du tableau qui les contiennent.

Saisissez les noms des colonnes qui identifient de manière unique chaque ligne de la table. Si nécessaire, utilisez la notation par points pour spécifier les champs imbriqués. Vous pouvez ajouter autant de champs que vous le souhaitez.

Vous devez également activer l'action Enregistrer dans BigQuery pour exporter les résultats vers BigQuery. Lorsque les résultats sont exportés vers BigQuery, chacun d'eux contient les valeurs respectives des champs d'identification. Pour en savoir plus, consultez la page sur la méthode identifyingFields.

Configurer la détection

La section Configurer la détection vous permet de spécifier les types de données sensibles que vous souhaitez analyser. Cette section est facultative. Si vous ne la complétez pas, la protection des données sensibles recherche un ensemble d'infoTypes par défaut dans vos données.

Modèle

Vous pouvez également utiliser un modèle de protection des données sensibles pour réutiliser les informations de configuration spécifiées précédemment.

Si vous avez déjà créé un modèle que vous souhaitez utiliser, cliquez sur le champ Nom du modèle pour afficher une liste des modèles d'inspection existants. Choisissez ou saisissez le nom du modèle que vous souhaitez utiliser.

Pour en savoir plus sur la création de modèles, consultez la section Créer des modèles d'inspection Sensitive Data Protection.

InfoTypes

Les détecteurs d'infoType trouvent des données sensibles d'un certain type. Par exemple, le détecteur d'infoType intégré US_SOCIAL_SECURITY_NUMBER de la protection des données sensibles identifie les numéros de sécurité sociale américains. En plus des détecteurs d'infoType intégrés, vous pouvez créer vos propres détecteurs d'infoType personnalisés.

Sous InfoTypes, choisissez le détecteur d'infoType qui correspond au type de données que vous souhaitez analyser. Nous vous recommandons de ne pas laisser cette section vide. Dans ce cas, la protection des données sensibles analyse vos données avec un ensemble d'infoTypes par défaut, qui peut inclure des infoTypes dont vous n'avez pas besoin. Pour en savoir plus sur chaque détecteur, consultez la documentation de référence sur les détecteurs d'infoTypes.

Pour en savoir plus sur la gestion des infoTypes intégrés et personnalisés dans cette section, consultez la section Gérer les infoTypes via la console Google Cloud.

Ensembles de règles d'inspection

Les ensembles de règles d'inspection vous permettent de personnaliser à la fois les détecteurs d'infoTypes intégrés et personnalisés à l'aide de règles de contexte. Les deux types de règles d'inspection sont les suivants :

Pour ajouter un ensemble de règles, spécifiez d'abord un ou plusieurs détecteurs d'infoType intégrés ou personnalisés dans la section InfoTypes. Il s'agit des détecteurs d'infoTypes que vos règles vont modifier. Ensuite, procédez comme suit :

  1. Cliquez dans le champ Choisir des infoTypes. L'infoType ou les infoTypes que vous avez spécifiés précédemment s'affichent sous le champ dans un menu, comme illustré ci-dessous:
  2. Capture d'écran de la configuration des règles d'inspection de l'interface utilisateur DLP.
  3. Sélectionnez un infoType dans le menu, puis cliquez sur Ajouter une règle. Un menu s'affiche avec les deux options Règle relative aux mots clés et Règle d'exclusion.

Pour les règles relatives aux mots clés, sélectionnez Règles relatives aux mots clés. Ensuite, procédez comme suit :

  1. Dans le champ Mot clé, saisissez une expression régulière que la protection des données sensibles doit rechercher.
  2. Dans le menu Proximité du mot clé, indiquez si le mot clé que vous avez saisi doit être trouvé avant ou après l'infoType choisi.
  3. Dans Distance des mots clés depuis l'infoType, saisissez le nombre approximatif de caractères entre le mot clé et l'infoType choisi.
  4. Dans Ajustement du niveau de confiance, choisissez d'attribuer aux correspondances un niveau de probabilité fixe, ou d'augmenter ou de diminuer le niveau de probabilité par défaut d'une certaine valeur.

Pour les règles d'exclusion, sélectionnez Règles d'exclusion. Ensuite, procédez comme suit :

  1. Dans le champ Exclure, saisissez une expression régulière que la protection des données sensibles doit rechercher.
  2. Dans le menu Type de correspondance, sélectionnez l'une des options suivantes:
    • Correspondance exacte: le résultat doit correspondre entièrement à l'expression régulière.
    • Correspondance partielle: une sous-chaîne du résultat peut correspondre à l'expression régulière.
    • Correspondance inverse: le résultat ne correspond pas à l'expression régulière.

Vous pouvez ajouter des règles et des ensembles de règles d'exclusion ou de mots clés pour affiner davantage les résultats de votre analyse.

Seuil de confiance

Chaque fois que la protection des données sensibles détecte une correspondance potentielle pour des données sensibles, elle lui attribue une valeur de probabilité sur une échelle allant de "Très peu probable" à "Très probable". Lorsque vous définissez une valeur de probabilité ici, vous demandez à Sensitive Data Protection de ne faire correspondre que les données qui correspondent à cette valeur de probabilité ou plus.

La valeur par défaut "Possible" est suffisante dans la plupart des cas. Si vous obtenez régulièrement des correspondances trop larges lorsque vous utilisez ce modèle, déplacez le curseur vers le haut. Si vous obtenez trop peu de correspondances, déplacez le curseur vers le bas.

Lorsque vous avez terminé, cliquez sur Continuer.

Ajouter des actions

Dans l'étape Add actions (Ajouter des actions), sélectionnez une ou plusieurs actions que vous souhaitez que la protection des données sensibles effectue une fois la tâche terminée.

Vous pouvez configurer les actions suivantes:

  • Enregistrer dans BigQuery: enregistre les résultats de la tâche de protection des données sensibles dans une table BigQuery. Avant de visualiser ou d'analyser les résultats, assurez-vous que la tâche est bien terminée.

    Chaque fois qu'une analyse est exécutée, Sensitive Data Protection enregistre les résultats d'analyse dans la table BigQuery que vous spécifiez. Les résultats exportés contiennent des détails sur l'emplacement de chaque résultat et la probabilité de correspondance. Si vous souhaitez que chaque résultat inclue la chaîne correspondant au détecteur d'infoType, activez l'option Inclure la citation.

    Si vous ne spécifiez pas d'ID de table, BigQuery attribue un nom par défaut à une nouvelle table lors de la première exécution de l'analyse. Si vous spécifiez un nom de table existante, la protection des données sensibles y ajoute les résultats d'analyse.

    Si vous n'enregistrez pas les résultats dans BigQuery, ils ne contiennent que des statistiques sur le nombre et les infoTypes des résultats.

    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.

  • Publier dans Pub/Sub: publiez une notification contenant le nom de la tâche de protection des données sensibles en tant qu'attribut d'un canal Pub/Sub. Vous pouvez spécifier un ou plusieurs sujets auxquels envoyer le message de notification. Assurez-vous que le compte de service Sensitive Data Protection exécutant la tâche d'analyse dispose d'un accès en publication sur le sujet.

  • Publier dans Security Command Center: publiez un résumé des résultats de la tâche dans Security Command Center. Pour en savoir plus, consultez la section Envoyer les résultats de l'analyse de la protection des données sensibles à Security Command Center.

  • Publier dans Dataplex: envoie les résultats de la tâche à Dataplex, le service de gestion des métadonnées de Google Cloud.

  • Notifier par e-mail: envoie un e-mail lorsque la tâche est terminée. L'e-mail est envoyé aux propriétaires de projets IAM et aux contacts essentiels techniques.

  • Publier dans Cloud Monitoring: envoie les résultats d'inspection à Cloud Monitoring dans Google Cloud Observability.

  • Créer une copie anonymisée: anonymisez tous les résultats des données inspectées, puis écrivez le contenu anonymisé dans un nouveau fichier. Vous pouvez ensuite utiliser la copie anonymisée dans vos processus métier, à la place des données contenant des informations sensibles. Pour en savoir plus, consultez Créer une copie anonymisée des données Cloud Storage à l'aide de la protection des données sensibles dans la console Google Cloud.

Pour en savoir plus, consultez la section Actions.

Lorsque vous avez fini de sélectionner des actions, cliquez sur Continue (Continuer).

Examen

La section Examen contient un résumé au format JSON des paramètres de tâche que vous venez de spécifier.

Cliquez sur Créer pour créer la tâche (si vous n'avez pas spécifié de programmation) et exécuter la tâche une fois. La page d'informations de la tâche apparaît, qui contient son état et d'autres informations. Si la tâche est en cours d'exécution, vous pouvez cliquer sur le bouton Annuler pour l'arrêter. Vous pouvez également supprimer la tâche en cliquant sur Supprimer.

Pour revenir à la page principale de la protection des données sensibles, cliquez sur la flèche Retour de la console Google Cloud.

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.


using System;
using System.Linq;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using static Google.Cloud.Dlp.V2.StorageConfig.Types;

public class JobsCreate
{
    public static DlpJob CreateJob(string projectId, string gcsPath)
    {
        var dlp = DlpServiceClient.Create();

        var storageConfig = new StorageConfig
        {
            CloudStorageOptions = new CloudStorageOptions
            {
                FileSet = new CloudStorageOptions.Types.FileSet()
                {
                    Url = gcsPath
                }
            },
            TimespanConfig = new TimespanConfig
            {
                EnableAutoPopulationOfTimespanConfig = true
            }
        };

        var inspectConfig = new InspectConfig
        {
            InfoTypes = { new[] { "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER" }.Select(it => new InfoType() { Name = it }) },
            IncludeQuote = true,
            MinLikelihood = Likelihood.Unlikely,
            Limits = new InspectConfig.Types.FindingLimits() { MaxFindingsPerItem = 100 }
        };

        var response = dlp.CreateDlpJob(new CreateDlpJobRequest
        {
            Parent = new LocationName(projectId, "global").ToString(),
            InspectJob = new InspectJobConfig
            {
                InspectConfig = inspectConfig,
                StorageConfig = storageConfig,
            }
        });

        Console.WriteLine($"Job: {response.Name} status: {response.State}");

        return response;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// createJob creates an inspection job
func createJob(w io.Writer, projectID, gcsPath string, infoTypeNames []string) error {
	// projectID := "my-project-id"
	// gcsPath := "gs://" + "your-bucket-name" + "path/to/file.txt";
	// infoTypeNames := []string{"EMAIL_ADDRESS", "PERSON_NAME", "LOCATION", "PHONE_NUMBER"}

	ctx := context.Background()

	// Initialize a client once and reuse it to send multiple requests. Clients
	// are safe to use across goroutines. When the client is no longer needed,
	// call the Close method to cleanup its resources.
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return err
	}

	// Closing the client safely cleans up background resources.
	defer client.Close()

	// Specify the GCS file to be inspected.
	storageConfig := &dlppb.StorageConfig{
		Type: &dlppb.StorageConfig_CloudStorageOptions{
			CloudStorageOptions: &dlppb.CloudStorageOptions{
				FileSet: &dlppb.CloudStorageOptions_FileSet{
					Url: gcsPath,
				},
			},
		},

		// Set autoPopulateTimespan to true to scan only new content.
		TimespanConfig: &dlppb.StorageConfig_TimespanConfig{
			EnableAutoPopulationOfTimespanConfig: true,
		},
	}

	// Specify the type of info the inspection will look for.
	// See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types.
	var infoTypes []*dlppb.InfoType
	for _, c := range infoTypeNames {
		infoTypes = append(infoTypes, &dlppb.InfoType{Name: c})
	}

	inspectConfig := &dlppb.InspectConfig{
		InfoTypes:    infoTypes,
		IncludeQuote: true,

		// The minimum likelihood required before returning a match:
		// See: https://cloud.google.com/dlp/docs/likelihood
		MinLikelihood: dlppb.Likelihood_UNLIKELY,

		// The maximum number of findings to report (0 = server maximum)
		Limits: &dlppb.InspectConfig_FindingLimits{
			MaxFindingsPerItem: 100,
		},
	}

	// Create and send the request.
	req := dlppb.CreateDlpJobRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
		Job: &dlppb.CreateDlpJobRequest_InspectJob{
			InspectJob: &dlppb.InspectJobConfig{
				InspectConfig: inspectConfig,
				StorageConfig: storageConfig,
			},
		},
	}

	// Send the request.
	response, err := client.CreateDlpJob(ctx, &req)
	if err != nil {
		return err
	}

	// Print the results.
	fmt.Fprintf(w, "Created a Dlp Job %v and Status is: %v", response.Name, response.State)
	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.Action;
import com.google.privacy.dlp.v2.CloudStorageOptions;
import com.google.privacy.dlp.v2.CreateDlpJobRequest;
import com.google.privacy.dlp.v2.DlpJob;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectJobConfig;
import com.google.privacy.dlp.v2.Likelihood;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.StorageConfig;
import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class JobsCreate {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt";
    createJobs(projectId, gcsPath);
  }

  // Creates a DLP Job
  public static void createJobs(String projectId, String gcsPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Set autoPopulateTimespan to true to scan only new content
      boolean autoPopulateTimespan = true;
      TimespanConfig timespanConfig =
          TimespanConfig.newBuilder()
              .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan)
              .build();

      // Specify the GCS file to be inspected.
      CloudStorageOptions cloudStorageOptions =
          CloudStorageOptions.newBuilder()
              .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath))
              .build();
      StorageConfig storageConfig =
          StorageConfig.newBuilder()
              .setCloudStorageOptions(cloudStorageOptions)
              .setTimespanConfig(timespanConfig)
              .build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      List<InfoType> infoTypes =
          Stream.of("EMAIL_ADDRESS", "PERSON_NAME", "LOCATION", "PHONE_NUMBER")
              .map(it -> InfoType.newBuilder().setName(it).build())
              .collect(Collectors.toList());
      // The minimum likelihood required before returning a match:
      // See: https://cloud.google.com/dlp/docs/likelihood
      Likelihood minLikelihood = Likelihood.UNLIKELY;

      // The maximum number of findings to report (0 = server maximum)
      InspectConfig.FindingLimits findingLimits =
          InspectConfig.FindingLimits.newBuilder().setMaxFindingsPerItem(100).build();

      InspectConfig inspectConfig =
          InspectConfig.newBuilder()
              .addAllInfoTypes(infoTypes)
              .setIncludeQuote(true)
              .setMinLikelihood(minLikelihood)
              .setLimits(findingLimits)
              .build();

      // Specify the action that is triggered when the job completes.
      Action.PublishSummaryToCscc publishSummaryToCscc =
          Action.PublishSummaryToCscc.getDefaultInstance();
      Action action = Action.newBuilder().setPublishSummaryToCscc(publishSummaryToCscc).build();

      // Configure the inspection job we want the service to perform.
      InspectJobConfig inspectJobConfig =
          InspectJobConfig.newBuilder()
              .setInspectConfig(inspectConfig)
              .setStorageConfig(storageConfig)
              .addActions(action)
              .build();

      // Construct the job creation request to be sent by the client.
      CreateDlpJobRequest createDlpJobRequest =
          CreateDlpJobRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setInspectJob(inspectJobConfig)
              .build();

      // Send the job creation request and process the response.
      DlpJob createdDlpJob = dlpServiceClient.createDlpJob(createDlpJobRequest);
      System.out.println("Job created successfully: " + createdDlpJob.getName());
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Initialize google DLP Client
const dlp = new DLP.DlpServiceClient();

async function jobsCreate() {
  // Construct cloud storage configuration
  const cloudStorageConfig = {
    cloudStorageOptions: {
      fileSet: {
        url: cloudFileUrl,
      },
    },
    timespanConfig: {
      enableAutoPopulationOfTimespanConfig: true,
    },
  };

  // Construct inspect job configuration
  const inspectJob = {
    storageConfig: cloudStorageConfig,
  };

  // Construct inspect configuration
  const inspectConfig = {
    infoTypes: [
      {name: 'EMAIL_ADDRESS'},
      {name: 'PERSON_NAME'},
      {name: 'LOCATION'},
      {name: 'PHONE_NUMBER'},
    ],
    includeQuote: true,
    minLikelihood: DLP.protos.google.privacy.dlp.v2.Likelihood.LIKELY,
    excludeInfoTypes: false,
  };

  // Combine configurations into a request for the service.
  const request = {
    parent: `projects/${projectId}/locations/global`,
    inspectJob: inspectJob,
    inspectConfig: inspectConfig,
  };

  // Send the request and receive response from the service
  const [response] = await dlp.createDlpJob(request);
  // Print the results
  console.log(`Job created successfully: ${response.name}`);
}

jobsCreate();

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.

use Google\Cloud\Dlp\V2\Action;
use Google\Cloud\Dlp\V2\Action\PublishSummaryToCscc;
use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\CloudStorageOptions;
use Google\Cloud\Dlp\V2\CloudStorageOptions\FileSet;
use Google\Cloud\Dlp\V2\CreateDlpJobRequest;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectConfig\FindingLimits;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Cloud\Dlp\V2\StorageConfig;
use Google\Cloud\Dlp\V2\StorageConfig\TimespanConfig;

/**
 * Creates an inspection job with the Cloud Data Loss Prevention API.
 *
 * @param string $callingProjectId  The project ID to run the API call under.
 * @param string $gcsPath           GCS file to be inspected. Example : gs://GOOGLE_STORAGE_BUCKET_NAME/dlp_sample.csv
 */
function create_job(
    string $callingProjectId,
    string $gcsPath
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Set autoPopulateTimespan to true to scan only new content.
    $timespanConfig = (new TimespanConfig())
        ->setEnableAutoPopulationOfTimespanConfig(true);

    // Specify the GCS file to be inspected.
    $cloudStorageOptions = (new CloudStorageOptions())
        ->setFileSet((new FileSet())
            ->setUrl($gcsPath));
    $storageConfig = (new StorageConfig())
        ->setCloudStorageOptions(($cloudStorageOptions))
        ->setTimespanConfig($timespanConfig);

    // ----- Construct inspection config -----
    $emailAddressInfoType = (new InfoType())
        ->setName('EMAIL_ADDRESS');
    $personNameInfoType = (new InfoType())
        ->setName('PERSON_NAME');
    $locationInfoType = (new InfoType())
        ->setName('LOCATION');
    $phoneNumberInfoType = (new InfoType())
        ->setName('PHONE_NUMBER');
    $infoTypes = [$emailAddressInfoType, $personNameInfoType, $locationInfoType, $phoneNumberInfoType];

    // Whether to include the matching string in the response.
    $includeQuote = true;
    // The minimum likelihood required before returning a match.
    $minLikelihood = likelihood::LIKELIHOOD_UNSPECIFIED;

    // The maximum number of findings to report (0 = server maximum).
    $limits = (new FindingLimits())
        ->setMaxFindingsPerRequest(100);

    // Create the Inspect configuration object.
    $inspectConfig = (new InspectConfig())
        ->setMinLikelihood($minLikelihood)
        ->setLimits($limits)
        ->setInfoTypes($infoTypes)
        ->setIncludeQuote($includeQuote);

    // Specify the action that is triggered when the job completes.
    $action = (new Action())
        ->setPublishSummaryToCscc(new PublishSummaryToCscc());

    // Configure the inspection job we want the service to perform.
    $inspectJobConfig = (new InspectJobConfig())
        ->setInspectConfig($inspectConfig)
        ->setStorageConfig($storageConfig)
        ->setActions([$action]);

    // Send the job creation request and process the response.
    $parent = "projects/$callingProjectId/locations/global";
    $createDlpJobRequest = (new CreateDlpJobRequest())
        ->setParent($parent)
        ->setInspectJob($inspectJobConfig);
    $job = $dlp->createDlpJob($createDlpJobRequest);

    // Print results.
    printf($job->getName());
}

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.


import google.cloud.dlp


def create_dlp_job(
    project: str,
    bucket: str,
    info_types: list[str],
    job_id: str = None,
    max_findings: int = 100,
    auto_populate_timespan: bool = True,
) -> None:
    """Uses the Data Loss Prevention API to create a DLP job.
    Args:
        project: The project id to use as a parent resource.
        bucket: The name of the GCS bucket to scan. This sample scans all
            files in the bucket.
        info_types: A list of strings representing info types to look for.
            A full list of info type categories can be fetched from the API.
        job_id: The id of the job. If omitted, an id will be randomly generated.
        max_findings: The maximum number of findings to report; 0 = no maximum.
        auto_populate_timespan: Automatically populates time span config start
            and end times in order to scan new content only.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries (protos are also accepted).
    info_types = [{"name": info_type} for info_type in info_types]

    # Construct the configuration dictionary. Keys which are None may
    # optionally be omitted entirely.
    inspect_config = {
        "info_types": info_types,
        "min_likelihood": google.cloud.dlp_v2.Likelihood.UNLIKELY,
        "limits": {"max_findings_per_request": max_findings},
        "include_quote": True,
    }

    # Construct a cloud_storage_options dictionary with the bucket's URL.
    url = f"gs://{bucket}/*"
    storage_config = {
        "cloud_storage_options": {"file_set": {"url": url}},
        # Time-based configuration for each storage object.
        "timespan_config": {
            # Auto-populate start and end times in order to scan new objects
            # only.
            "enable_auto_population_of_timespan_config": auto_populate_timespan
        },
    }

    # Construct the job definition.
    job = {"inspect_config": inspect_config, "storage_config": storage_config}

    # Call the API.
    response = dlp.create_dlp_job(
        request={"parent": parent, "inspect_job": job, "job_id": job_id}
    )

    # Print out the result.
    print(f"Job : {response.name} status: {response.state}")

REST

Une tâche est représentée dans l'API DLP par la ressource DlpJobs. Vous pouvez créer un job à l'aide de la méthode de la ressource DlpJob.

Cet exemple de code JSON peut être envoyé dans une requête POST au point de terminaison REST de la protection des données sensibles spécifié. Cet exemple de code JSON montre comment créer une tâche dans la protection des données sensibles. La tâche est une analyse d'inspection Datastore.

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. N'oubliez pas que la requête aboutit, même une requête créée dans l'explorateur d'API, créera une tâche. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage JSON.

Entrée JSON :

{
  "inspectJob": {
    "storageConfig": {
      "bigQueryOptions": {
        "tableReference": {
          "projectId": "bigquery-public-data",
          "datasetId": "san_francisco_sfpd_incidents",
          "tableId": "sfpd_incidents"
        }
      },
      "timespanConfig": {
        "startTime": "2020-01-01T00:00:01Z",
        "endTime": "2020-01-31T23:59:59Z",
        "timestampField": {
          "name": "timestamp"
        }
      }
    },
    "inspectConfig": {
      "infoTypes": [
        {
          "name": "PERSON_NAME"
        },
        {
          "name": "STREET_ADDRESS"
        }
      ],
      "excludeInfoTypes": false,
      "includeQuote": true,
      "minLikelihood": "LIKELY"
    },
    "actions": [
      {
        "saveFindings": {
          "outputConfig": {
            "table": {
              "projectId": "[PROJECT-ID]",
              "datasetId": "[DATASET-ID]"
            }
          }
        }
      }
    ]
  }
}

Sortie JSON :

La sortie suivante indique que la tâche a été créé avec succès.

{
  "name": "projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
  "type": "INSPECT_JOB",
  "state": "PENDING",
  "inspectDetails": {
    "requestedOptions": {
      "snapshotInspectTemplate": {},
      "jobConfig": {
        "storageConfig": {
          "bigQueryOptions": {
            "tableReference": {
              "projectId": "bigquery-public-data",
              "datasetId": "san_francisco_sfpd_incidents",
              "tableId": "sfpd_incidents"
            }
          },
          "timespanConfig": {
            "startTime": "2020-01-01T00:00:01Z",
            "endTime": "2020-01-31T23:59:59Z",
            "timestampField": {
              "name": "timestamp"
            }
          }
        },
        "inspectConfig": {
          "infoTypes": [
            {
              "name": "PERSON_NAME"
            },
            {
              "name": "STREET_ADDRESS"
            }
          ],
          "minLikelihood": "LIKELY",
          "limits": {},
          "includeQuote": true
        },
        "actions": [
          {
            "saveFindings": {
              "outputConfig": {
                "table": {
                  "projectId": "[PROJECT-ID]",
                  "datasetId": "[DATASET-ID]",
                  "tableId": "[TABLE-ID]"
                }
              }
            }
          }
        ]
      }
    },
    "result": {}
  },
  "createTime": "2020-07-10T07:26:33.643Z"
}

Créer un déclencheur de job :

Pour créer un déclencheur de job de protection des données sensibles:

Console

Dans la section "Protection des données sensibles" de la console Google Cloud, accédez à la page Créer une tâche ou un déclencheur de tâche.

Accéder à la page "Créer un job ou un déclencheur de job"

La page Créer une tâche ou un déclencheur de tâche contient les sections suivantes:

Choisir les données d'entrée

Nom

Saisissez un nom pour le déclencheur de tâche. Vous pouvez utiliser des lettres, des chiffres et des traits d'union. Nommer votre déclencheur de tâche est facultatif. Si vous ne saisissez pas de nom, la protection des données sensibles attribue au déclencheur de tâche un identifiant numérique unique.

Emplacement

Dans le menu Type de stockage, choisissez le type de dépôt qui stockera les données que vous souhaitez analyser :

  • Cloud Storage : saisissez l'URL du bucket que vous souhaitez analyser, ou sélectionnez Inclure/Exclure dans le menu Type d'emplacement, puis cliquez sur Parcourir pour accéder au bucket ou au sous-dossier à analyser. Cochez la case Analyser le dossier de manière récursive pour analyser le répertoire spécifié et tous les répertoires contenus. Ne cochez pas la case si vous ne souhaitez analyser que le répertoire spécifié.
  • BigQuery : saisissez les identifiants du projet, de l'ensemble de données et de la table à analyser.
  • Datastore : saisissez les identifiants du projet, de l'espace de noms (facultatif) et du genre à analyser.

Échantillonnage

L'échantillonnage est une méthode facultative permettant d'économiser des ressources si vous disposez d'une très grande quantité de données.

Sous Sampling (Échantillonnage), vous pouvez choisir d’analyser toutes les données sélectionnées ou d'échantillonner les données en analysant un certain pourcentage. L'échantillonnage fonctionne différemment selon le type de dépôt de stockage utilisé pour l'analyse :

  • Pour BigQuery, vous pouvez échantillonner un sous-ensemble du nombre total de lignes sélectionnées, correspondant au pourcentage spécifié de fichiers à inclure dans l'analyse.
  • Pour Cloud Storage, si un fichier dépasse la taille spécifiée dans Max byte size to scan per file (Taille d'octets maximale à analyser par fichier), la protection des données sensibles effectue l'analyse jusqu'à cette valeur, puis passe au fichier suivant.

Pour activer l'échantillonnage, choisissez l'une des options suivantes dans le premier menu :

  • Démarrer l'échantillonnage à partir du début: Sensitive Data Protection lance l'analyse partielle au début des données. Pour BigQuery, l'analyse démarre à la première ligne. Pour Cloud Storage, l'analyse démarre au début de chaque fichier et s'arrête une fois que la protection des données sensibles a analysé les données jusqu'à la taille de fichier maximale spécifiée (voir ci-dessus).
  • Démarrer l'échantillonnage à partir d'un emplacement aléatoire: Sensitive Data Protection démarre l'analyse partielle à partir d'un emplacement aléatoire dans les données. Pour BigQuery, l'analyse se lance sur une ligne au hasard. Pour Cloud Storage, ce paramètre ne s'applique qu'aux fichiers qui dépassent une taille maximale spécifiée. La protection des données sensibles analyse intégralement les fichiers dont la taille est inférieure à la taille maximale indiquée. Les fichiers dont la taille dépasse la taille maximale autorisée sont analysés jusqu'à concurrence de cette taille maximale.

Pour effectuer une analyse partielle, vous devez également choisir le pourcentage de données que vous souhaitez analyser. Utilisez le curseur pour définir le pourcentage.

Configuration avancée

Lorsque vous créez un déclencheur de tâche pour une analyse des buckets Cloud Storage ou des tables BigQuery, vous pouvez affiner votre recherche en spécifiant une configuration avancée. Plus précisément, vous pouvez configurer les éléments suivants :

  • Fichiers (Cloud Storage seulement) : types de fichiers à analyser, y compris les fichiers texte, les fichiers binaires et les fichiers image.
  • Champs d'identification (BigQuery uniquement) : identifiants de ligne uniques dans la table.
  • Pour Cloud Storage, si un fichier dépasse la taille spécifiée dans Max byte size to scan per file (Taille d'octets maximale à analyser par fichier), la protection des données sensibles effectue l'analyse jusqu'à cette valeur, puis passe au fichier suivant.

Pour activer l'échantillonnage, choisissez le pourcentage de données à analyser. Utilisez le curseur pour définir le pourcentage. Sélectionnez ensuite l'une des options suivantes dans le premier menu :

  • Démarrer l'échantillonnage à partir du début: Sensitive Data Protection lance l'analyse partielle au début des données. Pour BigQuery, l'analyse démarre à la première ligne. Pour Cloud Storage, l'analyse démarre au début de chaque fichier et s'arrête une fois que la protection des données sensibles a analysé les données jusqu'à la taille de fichier maximale spécifiée (voir ci-dessus).
  • Démarrer l'échantillonnage à partir d'un emplacement aléatoire: Sensitive Data Protection démarre l'analyse partielle à partir d'un emplacement aléatoire dans les données. Pour BigQuery, l'analyse se lance sur une ligne au hasard. Pour Cloud Storage, ce paramètre ne s'applique qu'aux fichiers qui dépassent une taille maximale spécifiée. La protection des données sensibles analyse intégralement les fichiers dont la taille est inférieure à la taille maximale indiquée. Les fichiers dont la taille dépasse la taille maximale autorisée sont analysés jusqu'à concurrence de cette taille maximale.

Fichiers

Pour les fichiers stockés dans Cloud Storage, l'onglet Files (Fichiers) permet de spécifier les types à inclure dans l'analyse.

Vous avez le choix entre les fichiers binaires, texte, image, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, PDF et Apache Avro. Pour obtenir une liste complète des extensions de fichiers que la protection des données sensibles peut analyser dans des buckets Cloud Storage, consultez FileType. Si vous sélectionnez l'option Fichiers binaires, la protection des données sensibles analyse les fichiers de types non reconnus.

Champs d'identification

Pour les tables dans BigQuery, dans le champ Champs d'identification, vous pouvez demander à Sensitive Data Protection d'inclure les valeurs des colonnes de clés primaires de la table dans les résultats. Vous pouvez ainsi associer les résultats aux lignes du tableau qui les contiennent.

Saisissez les noms des colonnes qui identifient de manière unique chaque ligne de la table. Si nécessaire, utilisez la notation par points pour spécifier les champs imbriqués. Vous pouvez ajouter autant de champs que vous le souhaitez.

Vous devez également activer l'action Enregistrer dans BigQuery pour exporter les résultats vers BigQuery. Lorsque les résultats sont exportés vers BigQuery, chacun d'eux contient les valeurs respectives des champs d'identification. Pour en savoir plus, consultez la page sur la méthode identifyingFields.

Configurer la détection

La section Configurer la détection vous permet de spécifier les types de données sensibles que vous souhaitez analyser. Cette section est facultative. Si vous ne la complétez pas, la protection des données sensibles recherche un ensemble d'infoTypes par défaut dans vos données.

Modèle

Vous pouvez également utiliser un modèle de protection des données sensibles pour réutiliser les informations de configuration spécifiées précédemment.

Si vous avez déjà créé un modèle que vous souhaitez utiliser, cliquez sur le champ Nom du modèle pour afficher une liste des modèles d'inspection existants. Choisissez ou saisissez le nom du modèle que vous souhaitez utiliser.

Pour en savoir plus sur la création de modèles, consultez la section Créer des modèles d'inspection Sensitive Data Protection.

InfoTypes

Les détecteurs d'infoType trouvent des données sensibles d'un certain type. Par exemple, le détecteur d'infoType intégré US_SOCIAL_SECURITY_NUMBER de la protection des données sensibles identifie les numéros de sécurité sociale américains. En plus des détecteurs d'infoType intégrés, vous pouvez créer vos propres détecteurs d'infoType personnalisés.

Sous InfoTypes, choisissez le détecteur d'infoType qui correspond au type de données que vous souhaitez analyser. Vous pouvez également laisser ce champ vide pour rechercher tous les infoTypes par défaut. Vous trouverez plus d'informations sur chaque détecteur dans la documentation de référence sur les détecteurs d'infoType.

Vous pouvez également ajouter des détecteurs d'infoType personnalisés dans la section InfoTypes personnalisés, et personnaliser les détecteurs d'infoType intégrés et personnalisés dans la section Ensembles de règles d'inspection.

InfoTypes personnalisés
Ensembles de règles d'inspection

Les ensembles de règles d'inspection vous permettent de personnaliser à la fois les détecteurs d'infoTypes intégrés et personnalisés à l'aide de règles de contexte. Les deux types de règles d'inspection sont les suivants :

Pour ajouter un ensemble de règles, spécifiez d'abord un ou plusieurs détecteurs d'infoType intégrés ou personnalisés dans la section InfoTypes. Il s'agit des détecteurs d'infoTypes que vos règles vont modifier. Ensuite, procédez comme suit :

  1. Cliquez dans le champ Choisir des infoTypes. L'infoType ou les infoTypes que vous avez spécifiés précédemment s'affichent sous le champ dans un menu, comme illustré ci-dessous:
  2. Capture d&#39;écran de la configuration des règles d&#39;inspection de l&#39;interface utilisateur DLP.
  3. Sélectionnez un infoType dans le menu, puis cliquez sur Ajouter une règle. Un menu s'affiche avec les deux options Règle relative aux mots clés et Règle d'exclusion.

Pour les règles relatives aux mots clés, sélectionnez Règles relatives aux mots clés. Ensuite, procédez comme suit :

  1. Dans le champ Mot clé, saisissez une expression régulière que la protection des données sensibles doit rechercher.
  2. Dans le menu Proximité du mot clé, indiquez si le mot clé que vous avez saisi doit être trouvé avant ou après l'infoType choisi.
  3. Dans Distance des mots clés depuis l'infoType, saisissez le nombre approximatif de caractères entre le mot clé et l'infoType choisi.
  4. Dans Ajustement du niveau de confiance, choisissez d'attribuer aux correspondances un niveau de probabilité fixe, ou d'augmenter ou de diminuer le niveau de probabilité par défaut d'une certaine valeur.

Pour les règles d'exclusion, sélectionnez Règles d'exclusion. Ensuite, procédez comme suit :

  1. Dans le champ Exclure, saisissez une expression régulière que la protection des données sensibles doit rechercher.
  2. Dans le menu Type de correspondance, sélectionnez l'une des options suivantes:
    • Correspondance exacte: le résultat doit correspondre entièrement à l'expression régulière.
    • Correspondance partielle: une sous-chaîne du résultat peut correspondre à l'expression régulière.
    • Correspondance inverse: le résultat ne correspond pas à l'expression régulière.

Vous pouvez ajouter des règles et des ensembles de règles d'exclusion ou de mots clés pour affiner davantage les résultats de votre analyse.

Seuil de confiance

Chaque fois que la protection des données sensibles détecte une correspondance potentielle pour des données sensibles, elle lui attribue une valeur de probabilité sur une échelle allant de "Très peu probable" à "Très probable". Lorsque vous définissez une valeur de probabilité ici, vous demandez à Sensitive Data Protection de ne faire correspondre que les données qui correspondent à cette valeur de probabilité ou plus.

La valeur par défaut "Possible" est suffisante dans la plupart des cas. Si vous obtenez régulièrement des correspondances trop larges lorsque vous utilisez ce modèle, déplacez le curseur vers le haut. Si vous obtenez trop peu de correspondances, déplacez le curseur vers le bas.

Lorsque vous avez terminé, cliquez sur Continuer.

Ajouter des actions

Dans l'étape Add actions (Ajouter des actions), sélectionnez une ou plusieurs actions que vous souhaitez que la protection des données sensibles effectue une fois la tâche terminée.

Vous pouvez configurer les actions suivantes:

  • Enregistrer dans BigQuery: enregistre les résultats de la tâche de protection des données sensibles dans une table BigQuery. Avant de visualiser ou d'analyser les résultats, assurez-vous que la tâche est bien terminée.

    Chaque fois qu'une analyse est exécutée, Sensitive Data Protection enregistre les résultats d'analyse dans la table BigQuery que vous spécifiez. Les résultats exportés contiennent des détails sur l'emplacement de chaque résultat et la probabilité de correspondance. Si vous souhaitez que chaque résultat inclue la chaîne correspondant au détecteur d'infoType, activez l'option Inclure la citation.

    Si vous ne spécifiez pas d'ID de table, BigQuery attribue un nom par défaut à une nouvelle table lors de la première exécution de l'analyse. Si vous spécifiez un nom de table existante, la protection des données sensibles y ajoute les résultats d'analyse.

    Si vous n'enregistrez pas les résultats dans BigQuery, ils ne contiennent que des statistiques sur le nombre et les infoTypes des résultats.

    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.

  • Publier dans Pub/Sub: publiez une notification contenant le nom de la tâche de protection des données sensibles en tant qu'attribut d'un canal Pub/Sub. Vous pouvez spécifier un ou plusieurs sujets auxquels envoyer le message de notification. Assurez-vous que le compte de service Sensitive Data Protection exécutant la tâche d'analyse dispose d'un accès en publication sur le sujet.

  • Publier dans Security Command Center: publiez un résumé des résultats de la tâche dans Security Command Center. Pour en savoir plus, consultez la section Envoyer les résultats de l'analyse de la protection des données sensibles à Security Command Center.

  • Publier dans Dataplex: envoie les résultats de la tâche à Dataplex, le service de gestion des métadonnées de Google Cloud.

  • Notifier par e-mail: envoie un e-mail lorsque la tâche est terminée. L'e-mail est envoyé aux propriétaires de projets IAM et aux contacts essentiels techniques.

  • Publier dans Cloud Monitoring: envoie les résultats d'inspection à Cloud Monitoring dans Google Cloud Observability.

  • Créer une copie anonymisée: anonymisez tous les résultats des données inspectées, puis écrivez le contenu anonymisé dans un nouveau fichier. Vous pouvez ensuite utiliser la copie anonymisée dans vos processus métier, à la place des données contenant des informations sensibles. Pour en savoir plus, consultez Créer une copie anonymisée des données Cloud Storage à l'aide de la protection des données sensibles dans la console Google Cloud.

Pour en savoir plus, consultez la section Actions.

Lorsque vous avez fini de sélectionner des actions, cliquez sur Continue (Continuer).

Horaires

Dans la section Programmation, vous disposez de deux options :

  • Specify timespan (Spécifier l'intervalle de temps) : cette option limite par date le nombre de fichiers ou de lignes à analyser. Cliquez sur Heure de début pour spécifier l'horodatage de fichier le plus ancien à inclure. Laissez cette valeur vide pour spécifier tous les fichiers. Cliquez sur Heure de fin pour spécifier le dernier horodatage de fichier à inclure. Laissez cette valeur vide pour ne spécifier aucune limite d'horodatage postérieure.
  • Créer un déclencheur pour exécuter la tâche selon une programmation régulière: cette option transforme la tâche en déclencheur de tâche qui s'exécute selon une programmation régulière. Si vous ne spécifiez pas de programmation, vous allez créer effectivement une tâche unique qui démarre immédiatement et ne s'exécute qu'une fois. Pour créer un déclencheur de tâche qui s'exécute régulièrement, vous devez définir cette option.

    La valeur par défaut est également la valeur minimale, soit 24 heures. La valeur maximale est de 60 jours.

    Si vous souhaitez que la protection des données sensibles n'analyse que les nouveaux fichiers ou les nouvelles lignes, sélectionnez Limiter les analyses au nouveau contenu. Pour l'inspection BigQuery, seules les lignes datant d'au moins trois heures sont incluses dans l'analyse. Consultez le problème connu associé à cette opération.

Récapitulatif

La section Examen contient un résumé au format JSON des paramètres de tâche que vous venez de spécifier.

Cliquez sur Créer pour créer le déclencheur de tâche (si vous avez spécifié une programmation). La page d'informations du déclencheur de tâche apparaît, qui contient l'état et d'autres informations. Si la tâche est en cours d'exécution, vous pouvez cliquer sur le bouton Annuler pour l'arrêter. Vous pouvez également supprimer le déclencheur de tâche en cliquant sur Supprimer.

Pour revenir à la page principale de la protection des données sensibles, cliquez sur la flèche Retour de la console Google Cloud.

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.


using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using System;
using System.Collections.Generic;
using static Google.Cloud.Dlp.V2.CloudStorageOptions.Types;
using static Google.Cloud.Dlp.V2.InspectConfig.Types;
using static Google.Cloud.Dlp.V2.JobTrigger.Types;
using static Google.Cloud.Dlp.V2.StorageConfig.Types;

public class TriggersCreate
{
    public static JobTrigger Create(
        string projectId,
        string bucketName,
        Likelihood minLikelihood,
        int maxFindings,
        bool autoPopulateTimespan,
        int scanPeriod,
        IEnumerable<InfoType> infoTypes,
        string triggerId,
        string displayName,
        string description)
    {
        var dlp = DlpServiceClient.Create();

        var jobConfig = new InspectJobConfig
        {
            InspectConfig = new InspectConfig
            {
                MinLikelihood = minLikelihood,
                Limits = new FindingLimits
                {
                    MaxFindingsPerRequest = maxFindings
                },
                InfoTypes = { infoTypes }
            },
            StorageConfig = new StorageConfig
            {
                CloudStorageOptions = new CloudStorageOptions
                {
                    FileSet = new FileSet
                    {
                        Url = $"gs://{bucketName}/*"
                    }
                },
                TimespanConfig = new TimespanConfig
                {
                    EnableAutoPopulationOfTimespanConfig = autoPopulateTimespan
                }
            }
        };

        var jobTrigger = new JobTrigger
        {
            Triggers =
            {
                new Trigger
                {
                    Schedule = new Schedule
                    {
                        RecurrencePeriodDuration = new Google.Protobuf.WellKnownTypes.Duration
                        {
                            Seconds = scanPeriod * 60 * 60 * 24
                        }
                    }
                }
            },
            InspectJob = jobConfig,
            Status = Status.Healthy,
            DisplayName = displayName,
            Description = description
        };

        var response = dlp.CreateJobTrigger(
            new CreateJobTriggerRequest
            {
                Parent = new LocationName(projectId, "global").ToString(),
                JobTrigger = jobTrigger,
                TriggerId = triggerId
            });

        Console.WriteLine($"Successfully created trigger {response.Name}");
        return response;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"github.com/golang/protobuf/ptypes/duration"
)

// createTrigger creates a trigger with the given configuration.
func createTrigger(w io.Writer, projectID string, triggerID, displayName, description, bucketName string, infoTypeNames []string) error {
	// projectID := "my-project-id"
	// triggerID := "my-trigger"
	// displayName := "My Trigger"
	// description := "My trigger description"
	// bucketName := "my-bucket"
	// infoTypeNames := []string{"US_SOCIAL_SECURITY_NUMBER"}

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %w", err)
	}
	defer client.Close()

	// Convert the info type strings to a list of InfoTypes.
	var infoTypes []*dlppb.InfoType
	for _, it := range infoTypeNames {
		infoTypes = append(infoTypes, &dlppb.InfoType{Name: it})
	}

	// Create a configured request.
	req := &dlppb.CreateJobTriggerRequest{
		Parent:    fmt.Sprintf("projects/%s/locations/global", projectID),
		TriggerId: triggerID,
		JobTrigger: &dlppb.JobTrigger{
			DisplayName: displayName,
			Description: description,
			Status:      dlppb.JobTrigger_HEALTHY,
			// Triggers control when the job will start.
			Triggers: []*dlppb.JobTrigger_Trigger{
				{
					Trigger: &dlppb.JobTrigger_Trigger_Schedule{
						Schedule: &dlppb.Schedule{
							Option: &dlppb.Schedule_RecurrencePeriodDuration{
								RecurrencePeriodDuration: &duration.Duration{
									Seconds: 10 * 60 * 60 * 24, // 10 days in seconds.
								},
							},
						},
					},
				},
			},
			// Job configures the job to run when the trigger runs.
			Job: &dlppb.JobTrigger_InspectJob{
				InspectJob: &dlppb.InspectJobConfig{
					InspectConfig: &dlppb.InspectConfig{
						InfoTypes:     infoTypes,
						MinLikelihood: dlppb.Likelihood_POSSIBLE,
						Limits: &dlppb.InspectConfig_FindingLimits{
							MaxFindingsPerRequest: 10,
						},
					},
					StorageConfig: &dlppb.StorageConfig{
						Type: &dlppb.StorageConfig_CloudStorageOptions{
							CloudStorageOptions: &dlppb.CloudStorageOptions{
								FileSet: &dlppb.CloudStorageOptions_FileSet{
									Url: "gs://" + bucketName + "/*",
								},
							},
						},
						// Time-based configuration for each storage object. See more at
						// https://cloud.google.com/dlp/docs/reference/rest/v2/InspectJobConfig#TimespanConfig
						TimespanConfig: &dlppb.StorageConfig_TimespanConfig{
							// Auto-populate start and end times in order to scan new objects only.
							EnableAutoPopulationOfTimespanConfig: true,
						},
					},
				},
			},
		},
	}

	// Send the request.
	resp, err := client.CreateJobTrigger(ctx, req)
	if err != nil {
		return fmt.Errorf("CreateJobTrigger: %w", err)
	}
	fmt.Fprintf(w, "Successfully created trigger: %v", resp.GetName())
	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.CloudStorageOptions;
import com.google.privacy.dlp.v2.CreateJobTriggerRequest;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectJobConfig;
import com.google.privacy.dlp.v2.JobTrigger;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.Schedule;
import com.google.privacy.dlp.v2.StorageConfig;
import com.google.privacy.dlp.v2.StorageConfig.TimespanConfig;
import com.google.protobuf.Duration;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TriggersCreate {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String gcsPath = "gs://" + "your-bucket-name" + "path/to/file.txt";
    createTrigger(projectId, gcsPath);
  }

  public static void createTrigger(String projectId, String gcsPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Set autoPopulateTimespan to true to scan only new content
      boolean autoPopulateTimespan = true;
      TimespanConfig timespanConfig =
          TimespanConfig.newBuilder()
              .setEnableAutoPopulationOfTimespanConfig(autoPopulateTimespan)
              .build();

      // Specify the GCS file to be inspected.
      CloudStorageOptions cloudStorageOptions =
          CloudStorageOptions.newBuilder()
              .setFileSet(CloudStorageOptions.FileSet.newBuilder().setUrl(gcsPath))
              .build();
      StorageConfig storageConfig =
          StorageConfig.newBuilder()
              .setCloudStorageOptions(cloudStorageOptions)
              .setTimespanConfig(timespanConfig)
              .build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      List<InfoType> infoTypes =
          Stream.of("PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER")
              .map(it -> InfoType.newBuilder().setName(it).build())
              .collect(Collectors.toList());

      InspectConfig inspectConfig = InspectConfig.newBuilder().addAllInfoTypes(infoTypes).build();

      // Configure the inspection job we want the service to perform.
      InspectJobConfig inspectJobConfig =
          InspectJobConfig.newBuilder()
              .setInspectConfig(inspectConfig)
              .setStorageConfig(storageConfig)
              .build();

      // Set scanPeriod to the number of days between scans (minimum: 1 day)
      int scanPeriod = 1;

      // Optionally set a display name of max 100 chars and a description of max 250 chars
      String displayName = "Daily Scan";
      String description = "A daily inspection for personally identifiable information.";

      // Schedule scan of GCS bucket every scanPeriod number of days (minimum = 1 day)
      Duration duration = Duration.newBuilder().setSeconds(scanPeriod * 24 * 3600).build();
      Schedule schedule = Schedule.newBuilder().setRecurrencePeriodDuration(duration).build();
      JobTrigger.Trigger trigger = JobTrigger.Trigger.newBuilder().setSchedule(schedule).build();
      JobTrigger jobTrigger =
          JobTrigger.newBuilder()
              .setInspectJob(inspectJobConfig)
              .setDisplayName(displayName)
              .setDescription(description)
              .setStatus(JobTrigger.Status.HEALTHY)
              .addTriggers(trigger)
              .build();

      // Create scan request to be sent by client
      CreateJobTriggerRequest createJobTriggerRequest =
          CreateJobTriggerRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setJobTrigger(jobTrigger)
              .build();

      // Send the scan request and process the response
      JobTrigger createdJobTrigger = dlpServiceClient.createJobTrigger(createJobTriggerRequest);

      System.out.println("Created Trigger: " + createdJobTrigger.getName());
      System.out.println("Display Name: " + createdJobTrigger.getDisplayName());
      System.out.println("Description: " + createdJobTrigger.getDescription());
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// (Optional) The name of the trigger to be created.
// const triggerId = 'my-trigger';

// (Optional) A display name for the trigger to be created
// const displayName = 'My Trigger';

// (Optional) A description for the trigger to be created
// const description = "This is a sample trigger.";

// The name of the bucket to scan.
// const bucketName = 'YOUR-BUCKET';

// Limit scan to new content only.
// const autoPopulateTimespan = true;

// How often to wait between scans, in days (minimum = 1 day)
// const scanPeriod = 1;

// The infoTypes of information to match
// const infoTypes = [{ name: 'PHONE_NUMBER' }, { name: 'EMAIL_ADDRESS' }, { name: 'CREDIT_CARD_NUMBER' }];

// The minimum likelihood required before returning a match
// const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';

// The maximum number of findings to report per request (0 = server maximum)
// const maxFindings = 0;

async function createTrigger() {
  // Get reference to the bucket to be inspected
  const storageItem = {
    cloudStorageOptions: {
      fileSet: {url: `gs://${bucketName}/*`},
    },
    timeSpanConfig: {
      enableAutoPopulationOfTimespanConfig: autoPopulateTimespan,
    },
  };

  // Construct job to be triggered
  const job = {
    inspectConfig: {
      infoTypes: infoTypes,
      minLikelihood: minLikelihood,
      limits: {
        maxFindingsPerRequest: maxFindings,
      },
    },
    storageConfig: storageItem,
  };

  // Construct trigger creation request
  const request = {
    parent: `projects/${projectId}/locations/global`,
    jobTrigger: {
      inspectJob: job,
      displayName: displayName,
      description: description,
      triggers: [
        {
          schedule: {
            recurrencePeriodDuration: {
              seconds: scanPeriod * 60 * 60 * 24, // Trigger the scan daily
            },
          },
        },
      ],
      status: 'HEALTHY',
    },
    triggerId: triggerId,
  };

  // Run trigger creation request
  const [trigger] = await dlp.createJobTrigger(request);
  console.log(`Successfully created trigger ${trigger.name}.`);
}

createTrigger();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\CloudStorageOptions;
use Google\Cloud\Dlp\V2\CloudStorageOptions\FileSet;
use Google\Cloud\Dlp\V2\CreateJobTriggerRequest;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectConfig\FindingLimits;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\JobTrigger;
use Google\Cloud\Dlp\V2\JobTrigger\Status;
use Google\Cloud\Dlp\V2\JobTrigger\Trigger;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Cloud\Dlp\V2\Schedule;
use Google\Cloud\Dlp\V2\StorageConfig;
use Google\Cloud\Dlp\V2\StorageConfig\TimespanConfig;
use Google\Protobuf\Duration;

/**
 * Create a Data Loss Prevention API job trigger.
 *
 * @param string $callingProjectId     The project ID to run the API call under
 * @param string $bucketName           The name of the bucket to scan
 * @param string $triggerId            (Optional) The name of the trigger to be created
 * @param string $displayName          (Optional) The human-readable name to give the trigger
 * @param string $description          (Optional) A description for the trigger to be created
 * @param int    $scanPeriod           (Optional) How often to wait between scans, in days (minimum = 1 day)
 * @param bool   $autoPopulateTimespan (Optional) Automatically limit scan to new content only
 * @param int    $maxFindings          (Optional) The maximum number of findings to report per request (0 = server maximum)
 */
function create_trigger(
    string $callingProjectId,
    string $bucketName,
    string $triggerId,
    string $displayName,
    string $description,
    int $scanPeriod,
    bool $autoPopulateTimespan,
    int $maxFindings
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // ----- Construct job config -----
    // The infoTypes of information to match
    $personNameInfoType = (new InfoType())
        ->setName('PERSON_NAME');
    $phoneNumberInfoType = (new InfoType())
        ->setName('PHONE_NUMBER');
    $infoTypes = [$personNameInfoType, $phoneNumberInfoType];

    // The minimum likelihood required before returning a match
    $minLikelihood = likelihood::LIKELIHOOD_UNSPECIFIED;

    // Specify finding limits
    $limits = (new FindingLimits())
        ->setMaxFindingsPerRequest($maxFindings);

    // Create the inspectConfig object
    $inspectConfig = (new InspectConfig())
        ->setMinLikelihood($minLikelihood)
        ->setLimits($limits)
        ->setInfoTypes($infoTypes);

    // Create triggers
    $duration = (new Duration())
        ->setSeconds($scanPeriod * 60 * 60 * 24);

    $schedule = (new Schedule())
        ->setRecurrencePeriodDuration($duration);

    $triggerObject = (new Trigger())
        ->setSchedule($schedule);

    // Create the storageConfig object
    $fileSet = (new FileSet())
        ->setUrl('gs://' . $bucketName . '/*');

    $storageOptions = (new CloudStorageOptions())
        ->setFileSet($fileSet);

    // Auto-populate start and end times in order to scan new objects only.
    $timespanConfig = (new TimespanConfig())
        ->setEnableAutoPopulationOfTimespanConfig($autoPopulateTimespan);

    $storageConfig = (new StorageConfig())
        ->setCloudStorageOptions($storageOptions)
        ->setTimespanConfig($timespanConfig);

    // Construct the jobConfig object
    $jobConfig = (new InspectJobConfig())
        ->setInspectConfig($inspectConfig)
        ->setStorageConfig($storageConfig);

    // ----- Construct trigger object -----
    $jobTriggerObject = (new JobTrigger())
        ->setTriggers([$triggerObject])
        ->setInspectJob($jobConfig)
        ->setStatus(Status::HEALTHY)
        ->setDisplayName($displayName)
        ->setDescription($description);

    // Run trigger creation request
    $parent = $dlp->locationName($callingProjectId, 'global');
    $createJobTriggerRequest = (new CreateJobTriggerRequest())
        ->setParent($parent)
        ->setJobTrigger($jobTriggerObject)
        ->setTriggerId($triggerId);
    $trigger = $dlp->createJobTrigger($createJobTriggerRequest);

    // Print results
    printf('Successfully created trigger %s' . PHP_EOL, $trigger->getName());
}

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.

from typing import Optional

import google.cloud.dlp


def create_trigger(
    project: str,
    bucket: str,
    scan_period_days: int,
    info_types: List[str],
    trigger_id: Optional[str] = None,
    display_name: Optional[str] = None,
    description: Optional[str] = None,
    min_likelihood: Optional[int] = None,
    max_findings: Optional[int] = None,
    auto_populate_timespan: Optional[bool] = False,
) -> None:
    """Creates a scheduled Data Loss Prevention API inspect_content trigger.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        bucket: The name of the GCS bucket to scan. This sample scans all
            files in the bucket using a wildcard.
        scan_period_days: How often to repeat the scan, in days.
            The minimum is 1 day.
        info_types: A list of strings representing info types to look for.
            A full list of info type categories can be fetched from the API.
        trigger_id: The id of the trigger. If omitted, an id will be randomly
            generated.
        display_name: The optional display name of the trigger.
        description: The optional description of the trigger.
        min_likelihood: A string representing the minimum likelihood threshold
            that constitutes a match. One of: 'LIKELIHOOD_UNSPECIFIED',
            'VERY_UNLIKELY', 'UNLIKELY', 'POSSIBLE', 'LIKELY', 'VERY_LIKELY'.
        max_findings: The maximum number of findings to report; 0 = no maximum.
        auto_populate_timespan: Automatically populates time span config start
            and end times in order to scan new content only.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries (protos are also accepted).
    info_types = [{"name": info_type} for info_type in info_types]

    # Construct the configuration dictionary. Keys which are None may
    # optionally be omitted entirely.
    inspect_config = {
        "info_types": info_types,
        "min_likelihood": min_likelihood,
        "limits": {"max_findings_per_request": max_findings},
    }

    # Construct a cloud_storage_options dictionary with the bucket's URL.
    url = f"gs://{bucket}/*"
    storage_config = {
        "cloud_storage_options": {"file_set": {"url": url}},
        # Time-based configuration for each storage object.
        "timespan_config": {
            # Auto-populate start and end times in order to scan new objects
            # only.
            "enable_auto_population_of_timespan_config": auto_populate_timespan
        },
    }

    # Construct the job definition.
    job = {"inspect_config": inspect_config, "storage_config": storage_config}

    # Construct the schedule definition:
    schedule = {
        "recurrence_period_duration": {"seconds": scan_period_days * 60 * 60 * 24}
    }

    # Construct the trigger definition.
    job_trigger = {
        "inspect_job": job,
        "display_name": display_name,
        "description": description,
        "triggers": [{"schedule": schedule}],
        "status": google.cloud.dlp_v2.JobTrigger.Status.HEALTHY,
    }

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Call the API.
    response = dlp.create_job_trigger(
        request={"parent": parent, "job_trigger": job_trigger, "trigger_id": trigger_id}
    )

    print(f"Successfully created trigger {response.name}")

REST

Un déclencheur de tâche est représenté dans l'API DLP par la ressource JobTrigger. Pour créer un déclencheur de job, vous pouvez utiliser la méthode de la ressource JobTrigger.

Cet exemple de code JSON peut être envoyé dans une requête POST au point de terminaison REST de la protection des données sensibles spécifié. Cet exemple de code JSON montre comment créer un déclencheur de tâche dans la protection des données sensibles. La tâche lancée par ce déclencheur est une analyse d'inspection Cloud Datastore. Le déclencheur de tâche créé est exécuté toutes les 86 400 secondes (soit toutes les 24 heures).

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Gardez à l'esprit qu'une requête réussie, même dans l'API Explorer, entraînera la création d'un déclencheur de tâche planifiée. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Entrée JSON :

{
  "jobTrigger":{
    "displayName":"JobTrigger1",
    "description":"Starts an inspection of a Datastore kind",
    "triggers":[
      {
        "schedule":{
          "recurrencePeriodDuration":"86400s"
        }
      }
    ],
    "status":"HEALTHY",
    "inspectJob":{
      "storageConfig":{
        "datastoreOptions":{
          "kind":{
            "name":"Example-Kind"
          },
          "partitionId":{
            "projectId":"[PROJECT_ID]",
            "namespaceId":"[NAMESPACE_ID]"
          }
        }
      },
      "inspectConfig":{
        "infoTypes":[
          {
            "name":"PHONE_NUMBER"
          }
        ],
        "excludeInfoTypes":false,
        "includeQuote":true,
        "minLikelihood":"LIKELY"
      },
      "actions":[
        {
          "saveFindings":{
            "outputConfig":{
              "table":{
                "projectId":"[PROJECT_ID]",
                "datasetId":"[BIGQUERY_DATASET_NAME]",
                "tableId":"[BIGQUERY_TABLE_NAME]"
              }
            }
          }
        }
      ]
    }
  }
}

Sortie JSON :

La sortie suivante indique que le déclencheur de tâche a été créé avec succès.

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "displayName":"JobTrigger1",
  "description":"Starts an inspection of a Datastore kind",
  "inspectJob":{
    "storageConfig":{
      "datastoreOptions":{
        "partitionId":{
          "projectId":"[PROJECT_ID]",
          "namespaceId":"[NAMESPACE_ID]"
        },
        "kind":{
          "name":"Example-Kind"
        }
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"PHONE_NUMBER"
        }
      ],
      "minLikelihood":"LIKELY",
      "limits":{

      },
      "includeQuote":true
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"[PROJECT_ID]",
              "datasetId":"[BIGQUERY_DATASET_NAME]",
              "tableId":"[BIGQUERY_TABLE_NAME]"
            }
          }
        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2018-11-30T01:52:41.171857Z",
  "updateTime":"2018-11-30T01:52:41.171857Z",
  "status":"HEALTHY"
}

Répertorier toutes les tâches

Pour répertorier toutes les tâches du projet en cours, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page "Protection des données sensibles".

    Accéder à la protection des données sensibles

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Inspecter les jobs.

La console affiche la liste de toutes les tâches du projet en cours, avec leur identifiant, leur état, leur date de création et leur heure de fin. Vous pouvez obtenir plus d'informations sur une tâche (et consulter un résumé de ses résultats) en cliquant sur son identifiant.

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.


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class JobsList
{
    public static PagedEnumerable<ListDlpJobsResponse, DlpJob> ListDlpJobs(string projectId, string filter, DlpJobType jobType)
    {
        var dlp = DlpServiceClient.Create();

        var response = dlp.ListDlpJobs(new ListDlpJobsRequest
        {
            Parent = new LocationName(projectId, "global").ToString(),
            Filter = filter,
            Type = jobType
        });

        // Uncomment to print jobs
        // foreach (var job in response)
        // {
        //     Console.WriteLine($"Job: {job.Name} status: {job.State}");
        // }

        return response;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"google.golang.org/api/iterator"
)

// listJobs lists jobs matching the given optional filter and optional jobType.
func listJobs(w io.Writer, projectID, filter, jobType string) error {
	// projectID := "my-project-id"
	// filter := "`state` = FINISHED"
	// jobType := "RISK_ANALYSIS_JOB"
	ctx := context.Background()
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %w", err)
	}
	defer client.Close()

	// Create a configured request.
	req := &dlppb.ListDlpJobsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
		Filter: filter,
		Type:   dlppb.DlpJobType(dlppb.DlpJobType_value[jobType]),
	}
	// Send the request and iterate over the results.
	it := client.ListDlpJobs(ctx, req)
	for {
		j, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("Next: %w", err)
		}
		fmt.Fprintf(w, "Job %v status: %v\n", j.GetName(), j.GetState())
	}
	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DlpJob;
import com.google.privacy.dlp.v2.DlpJobType;
import com.google.privacy.dlp.v2.ListDlpJobsRequest;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

public class JobsList {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listJobs(projectId);
  }

  // Lists DLP jobs
  public static void listJobs(String projectId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the request to be sent by the client.
      // For more info on filters and job types,
      // see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
      ListDlpJobsRequest listDlpJobsRequest =
          ListDlpJobsRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setFilter("state=DONE")
              .setType(DlpJobType.valueOf("INSPECT_JOB"))
              .build();

      // Send the request to list jobs and process the response
      DlpServiceClient.ListDlpJobsPagedResponse response =
          dlpServiceClient.listDlpJobs(listDlpJobsRequest);

      System.out.println("DLP jobs found:");
      for (DlpJob dlpJob : response.getPage().getValues()) {
        System.out.println(dlpJob.getName() + " -- " + dlpJob.getState());
      }
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The filter expression to use
// For more information and filter syntax, see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
// const filter = `state=DONE`;

// The type of job to list (either 'INSPECT_JOB' or 'RISK_ANALYSIS_JOB')
// const jobType = 'INSPECT_JOB';
async function listJobs() {
  // Construct request for listing DLP scan jobs
  const request = {
    parent: `projects/${projectId}/locations/global`,
    filter: filter,
    type: jobType,
  };

  // Run job-listing request
  const [jobs] = await dlp.listDlpJobs(request);
  jobs.forEach(job => {
    console.log(`Job ${job.name} status: ${job.state}`);
  });
}

listJobs();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\DlpJob\JobState;
use Google\Cloud\Dlp\V2\DlpJobType;
use Google\Cloud\Dlp\V2\ListDlpJobsRequest;

/**
 * List Data Loss Prevention API jobs corresponding to a given filter.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 * @param string $filter            The filter expression to use
 */
function list_jobs(string $callingProjectId, string $filter): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // The type of job to list (either 'INSPECT_JOB' or 'REDACT_JOB')
    $jobType = DlpJobType::INSPECT_JOB;

    // Run job-listing request
    // For more information and filter syntax,
    // @see https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/list
    $parent = "projects/$callingProjectId/locations/global";
    $listDlpJobsRequest = (new ListDlpJobsRequest())
        ->setParent($parent)
        ->setFilter($filter)
        ->setType($jobType);
    $response = $dlp->listDlpJobs($listDlpJobsRequest);

    // Print job list
    $jobs = $response->iterateAllElements();
    foreach ($jobs as $job) {
        printf('Job %s status: %s' . PHP_EOL, $job->getName(), $job->getState());
        $infoTypeStats = $job->getInspectDetails()->getResult()->getInfoTypeStats();

        if ($job->getState() == JobState::DONE) {
            if (count($infoTypeStats) > 0) {
                foreach ($infoTypeStats as $infoTypeStat) {
                    printf(
                        '  Found %s instance(s) of type %s' . PHP_EOL,
                        $infoTypeStat->getCount(),
                        $infoTypeStat->getInfoType()->getName()
                    );
                }
            } else {
                print('  No findings.' . PHP_EOL);
            }
        }
    }
}

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.


from typing import Optional

import google.cloud.dlp


def list_dlp_jobs(
    project: str, filter_string: Optional[str] = None, job_type: Optional[str] = None
) -> None:
    """Uses the Data Loss Prevention API to lists DLP jobs that match the
        specified filter in the request.
    Args:
        project: The project id to use as a parent resource.
        filter: (Optional) Allows filtering.
            Supported syntax:
            * Filter expressions are made up of one or more restrictions.
            * Restrictions can be combined by 'AND' or 'OR' logical operators.
            A sequence of restrictions implicitly uses 'AND'.
            * A restriction has the form of '<field> <operator> <value>'.
            * Supported fields/values for inspect jobs:
                - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED
                - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
                - `trigger_name` - The resource name of the trigger that
                                   created job.
            * Supported fields for risk analysis jobs:
                - `state` - RUNNING|CANCELED|FINISHED|FAILED
            * The operator must be '=' or '!='.
            Examples:
            * inspected_storage = cloud_storage AND state = done
            * inspected_storage = cloud_storage OR inspected_storage = bigquery
            * inspected_storage = cloud_storage AND
                                  (state = done OR state = canceled)
        type: (Optional) The type of job. Defaults to 'INSPECT'.
            Choices:
            DLP_JOB_TYPE_UNSPECIFIED
            INSPECT_JOB: The job inspected content for sensitive data.
            RISK_ANALYSIS_JOB: The job executed a Risk Analysis computation.

    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Job type dictionary
    job_type_to_int = {
        "DLP_JOB_TYPE_UNSPECIFIED": google.cloud.dlp.DlpJobType.DLP_JOB_TYPE_UNSPECIFIED,
        "INSPECT_JOB": google.cloud.dlp.DlpJobType.INSPECT_JOB,
        "RISK_ANALYSIS_JOB": google.cloud.dlp.DlpJobType.RISK_ANALYSIS_JOB,
    }
    # If job type is specified, convert job type to number through enums.
    if job_type:
        job_type = job_type_to_int[job_type]

    # Call the API to get a list of jobs.
    response = dlp.list_dlp_jobs(
        request={"parent": parent, "filter": filter_string, "type_": job_type}
    )

    # Iterate over results.
    for job in response:
        print(f"Job: {job.name}; status: {job.state.name}")

REST

La ressource DlpJob possède une méthode projects.dlpJobs.list qui vous permet de répertorier toutes les tâches.

Pour répertorier toutes les tâches actuellement définies dans votre projet, envoyez une requête GET au point de terminaison dlpJobs, comme indiqué ici :

URL :

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}

Le résultat JSON suivant répertorie l'une des tâches renvoyées. Notez que la structure de la tâche reflète celle de la ressource DlpJob.

Sortie JSON :

{
  "jobs":[
    {
      "name":"projects/[PROJECT-ID]/dlpJobs/i-5270277269264714623",
      "type":"INSPECT_JOB",
      "state":"DONE",
      "inspectDetails":{
        "requestedOptions":{
          "snapshotInspectTemplate":{
          },
          "jobConfig":{
            "storageConfig":{
              "cloudStorageOptions":{
                "fileSet":{
                  "url":"[CLOUD-STORAGE-URL]"
                },
                "fileTypes":[
                  "FILE_TYPE_UNSPECIFIED"
                ],
                "filesLimitPercent":100
              },
              "timespanConfig":{
                "startTime":"2019-09-08T22:43:16.623Z",
                "enableAutoPopulationOfTimespanConfig":true
              }
            },
            "inspectConfig":{
              "infoTypes":[
                {
                  "name":"US_SOCIAL_SECURITY_NUMBER"
                },
                {
                  "name":"CANADA_SOCIAL_INSURANCE_NUMBER"
                }
              ],
              "minLikelihood":"LIKELY",
              "limits":{
              },
              "includeQuote":true
            },
            "actions":[
              {
                "saveFindings":{
                  "outputConfig":{
                    "table":{
                      "projectId":"[PROJECT-ID]",
                      "datasetId":"[DATASET-ID]",
                      "tableId":"[TABLE-ID]"
                    }
                  }
                }
              }
            ]
          }
        },
        "result":{
          ...
        }
      },
      "createTime":"2019-09-09T22:43:16.918Z",
      "startTime":"2019-09-09T22:43:16.918Z",
      "endTime":"2019-09-09T22:43:53.091Z",
      "jobTriggerName":"projects/[PROJECT-ID]/jobTriggers/sample-trigger2"
    },
    ...

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Répertorier tous les déclencheurs de tâche

Pour répertorier tous les déclencheurs de tâche du projet en cours, procédez comme suit :

Console

Dans la console Google Cloud, accédez à la page "Protection des données sensibles".

Accéder à la protection des données sensibles

Dans l'onglet Inspection, sous-onglet Déclencheurs de tâche, la console affiche la liste de tous les déclencheurs de tâche du projet en cours.

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.


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using System;

public class TriggersList
{
    public static PagedEnumerable<ListJobTriggersResponse, JobTrigger> List(string projectId)
    {
        var dlp = DlpServiceClient.Create();

        var response = dlp.ListJobTriggers(
            new ListJobTriggersRequest
            {
                Parent = new LocationName(projectId, "global").ToString(),
            });

        foreach (var trigger in response)
        {
            Console.WriteLine($"Name: {trigger.Name}");
            Console.WriteLine($"  Created: {trigger.CreateTime}");
            Console.WriteLine($"  Updated: {trigger.UpdateTime}");
            Console.WriteLine($"  Display Name: {trigger.DisplayName}");
            Console.WriteLine($"  Description: {trigger.Description}");
            Console.WriteLine($"  Status: {trigger.Status}");
            Console.WriteLine($"  Error count: {trigger.Errors.Count}");
        }

        return response;
    }
}

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.

import (
	"context"
	"fmt"
	"io"
	"time"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"github.com/golang/protobuf/ptypes"
	"google.golang.org/api/iterator"
)

// listTriggers lists the triggers for the given project.
func listTriggers(w io.Writer, projectID string) error {
	// projectID := "my-project-id"

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %w", err)
	}
	defer client.Close()

	// Create a configured request.
	req := &dlppb.ListJobTriggersRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
	}
	// Send the request and iterate over the results.
	it := client.ListJobTriggers(ctx, req)
	for {
		t, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("Next: %w", err)
		}
		fmt.Fprintf(w, "Trigger %v\n", t.GetName())
		c, err := ptypes.Timestamp(t.GetCreateTime())
		if err != nil {
			return fmt.Errorf("CreateTime Timestamp: %w", err)
		}
		fmt.Fprintf(w, "  Created: %v\n", c.Format(time.RFC1123))
		u, err := ptypes.Timestamp(t.GetUpdateTime())
		if err != nil {
			return fmt.Errorf("UpdateTime Timestamp: %w", err)
		}
		fmt.Fprintf(w, "  Updated: %v\n", u.Format(time.RFC1123))
		fmt.Fprintf(w, "  Display Name: %q\n", t.GetDisplayName())
		fmt.Fprintf(w, "  Description: %q\n", t.GetDescription())
		fmt.Fprintf(w, "  Status: %v\n", t.GetStatus())
		fmt.Fprintf(w, "  Error Count: %v\n", len(t.GetErrors()))
	}

	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.JobTrigger;
import com.google.privacy.dlp.v2.ListJobTriggersRequest;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

class TriggersList {
  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listTriggers(projectId);
  }

  public static void listTriggers(String projectId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {
      // Build the request to be sent by the client
      ListJobTriggersRequest listJobTriggersRequest =
          ListJobTriggersRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .build();

      // Use the client to send the API request.
      DlpServiceClient.ListJobTriggersPagedResponse response =
          dlpServiceClient.listJobTriggers(listJobTriggersRequest);

      // Parse the response and process the results
      System.out.println("DLP triggers found:");
      for (JobTrigger trigger : response.getPage().getValues()) {
        System.out.println("Trigger: " + trigger.getName());
        System.out.println("\tCreated: " + trigger.getCreateTime());
        System.out.println("\tUpdated: " + trigger.getUpdateTime());
        if (trigger.getDisplayName() != null) {
          System.out.println("\tDisplay name: " + trigger.getDisplayName());
        }
        if (trigger.getDescription() != null) {
          System.out.println("\tDescription: " + trigger.getDescription());
        }
        System.out.println("\tStatus: " + trigger.getStatus());
        System.out.println("\tError count: " + trigger.getErrorsCount());
      }
      ;
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project'

async function listTriggers() {
  // Construct trigger listing request
  const request = {
    parent: `projects/${projectId}/locations/global`,
  };

  // Helper function to pretty-print dates
  const formatDate = date => {
    const msSinceEpoch = parseInt(date.seconds, 10) * 1000;
    return new Date(msSinceEpoch).toLocaleString('en-US');
  };

  // Run trigger listing request
  const [triggers] = await dlp.listJobTriggers(request);
  triggers.forEach(trigger => {
    // Log trigger details
    console.log(`Trigger ${trigger.name}:`);
    console.log(`  Created: ${formatDate(trigger.createTime)}`);
    console.log(`  Updated: ${formatDate(trigger.updateTime)}`);
    if (trigger.displayName) {
      console.log(`  Display Name: ${trigger.displayName}`);
    }
    if (trigger.description) {
      console.log(`  Description: ${trigger.description}`);
    }
    console.log(`  Status: ${trigger.status}`);
    console.log(`  Error count: ${trigger.errors.length}`);
  });
}

listTriggers();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\ListJobTriggersRequest;

/**
 * List Data Loss Prevention API job triggers.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 */
function list_triggers(string $callingProjectId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    $parent = "projects/$callingProjectId/locations/global";

    // Run request
    $listJobTriggersRequest = (new ListJobTriggersRequest())
        ->setParent($parent);
    $response = $dlp->listJobTriggers($listJobTriggersRequest);

    // Print results
    $triggers = $response->iterateAllElements();
    foreach ($triggers as $trigger) {
        printf('Trigger %s' . PHP_EOL, $trigger->getName());
        printf('  Created: %s' . PHP_EOL, $trigger->getCreateTime()->getSeconds());
        printf('  Updated: %s' . PHP_EOL, $trigger->getUpdateTime()->getSeconds());
        printf('  Display Name: %s' . PHP_EOL, $trigger->getDisplayName());
        printf('  Description: %s' . PHP_EOL, $trigger->getDescription());
        printf('  Status: %s' . PHP_EOL, $trigger->getStatus());
        printf('  Error count: %s' . PHP_EOL, count($trigger->getErrors()));
        $timespanConfig = $trigger->getInspectJob()->getStorageConfig()->getTimespanConfig();
        printf('  Auto-populates timespan config: %s' . PHP_EOL,
            ($timespanConfig && $timespanConfig->getEnableAutoPopulationOfTimespanConfig() ? 'yes' : 'no'));
    }
}

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.

import google.cloud.dlp


def list_triggers(project: str) -> None:
    """Lists all Data Loss Prevention API triggers.
    Args:
        project: The Google Cloud project id to use as a parent resource.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Call the API.
    response = dlp.list_job_triggers(request={"parent": parent})

    for trigger in response:
        print(f"Trigger {trigger.name}:")
        print(f"  Created: {trigger.create_time}")
        print(f"  Updated: {trigger.update_time}")
        if trigger.display_name:
            print(f"  Display Name: {trigger.display_name}")
        if trigger.description:
            print(f"  Description: {trigger.description}")
        print(f"  Status: {trigger.status}")
        print(f"  Error count: {len(trigger.errors)}")

REST

La ressource JobTrigger possède une méthode projects.jobTriggers.list qui vous permet de répertorier tous les déclencheurs de tâche.

Pour répertorier tous les déclencheurs de tâche actuellement définis dans votre projet, envoyez une requête GET au point de terminaison jobTriggers, comme indiqué ici :

URL :

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/jobTriggers?key={YOUR_API_KEY}

La sortie JSON suivante indique la présence du déclencheur de tâche que nous avons créé dans la section précédente. Notez que la structure du déclencheur de tâche reflète celle de la ressource JobTrigger.

Sortie JSON :

{
  "jobTriggers":[
    {
      "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
      "displayName":"JobTrigger1",
      "description":"Starts an inspection of a Datastore kind",
      "inspectJob":{
        "storageConfig":{
          "datastoreOptions":{
            "partitionId":{
              "projectId":"[PROJECT_ID]",
              "namespaceId":"[NAMESPACE_ID]"
            },
            "kind":{
              "name":"Example-Kind"
            }
          }
        },
        "inspectConfig":{
          "infoTypes":[
            {
              "name":"PHONE_NUMBER"
            }
          ],
          "minLikelihood":"LIKELY",
          "limits":{

          },
          "includeQuote":true
        },
        "actions":[
          {
            "saveFindings":{
              "outputConfig":{
                "table":{
                  "projectId":"[PROJECT_ID]",
                  "datasetId":"[BIGQUERY_DATASET_NAME]",
                  "tableId":"[BIGQUERY_TABLE_NAME]"
                }
              }
            }
          }
        ]
      },
      "triggers":[
        {
          "schedule":{
            "recurrencePeriodDuration":"86400s"
          }
        }
      ],
      "createTime":"2018-11-30T01:52:41.171857Z",
      "updateTime":"2018-11-30T01:52:41.171857Z",
      "status":"HEALTHY"
    },

    ...

],
  "nextPageToken":"KkwKCQjivJ2UpPreAgo_Kj1wcm9qZWN0cy92ZWx2ZXR5LXN0dWR5LTE5NjEwMS9qb2JUcmlnZ2Vycy8xNTA5NzEyOTczMDI0MDc1NzY0"
}

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Supprimer un job

Pour supprimer une tâche de votre projet, y compris ses résultats, procédez comme suit : Tous les résultats enregistrés en externe (dans BigQuery, par exemple) ne sont pas modifiés par cette opération.

Console

  1. Dans la console Google Cloud, accédez à la page "Protection des données sensibles".

    Accéder à la protection des données sensibles

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Inspecter les jobs. Google Cloud Console affiche la liste de toutes les tâches du projet en cours.

  3. Dans la colonne Actions associée au déclencheur de tâche que vous souhaitez supprimer, cliquez sur le menu Autres actions (représenté par trois points disposés verticalement) , puis cliquez sur Delete (Supprimer).

Vous pouvez également cliquer sur l'identifiant de la tâche à supprimer dans la liste des tâches. Sur la page d'informations de la tâche, cliquez sur Delete (Supprimer).

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.


using System;
using Google.Cloud.Dlp.V2;

public class JobsDelete
{
    public static void DeleteJob(string jobName)
    {
        var dlp = DlpServiceClient.Create();

        dlp.DeleteDlpJob(new DeleteDlpJobRequest
        {
            Name = jobName
        });

        Console.WriteLine($"Successfully deleted job {jobName}.");
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// deleteJob deletes the job with the given name.
func deleteJob(w io.Writer, jobName string) error {
	// jobName := "job-example"
	ctx := context.Background()
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %w", err)
	}
	defer client.Close()
	req := &dlppb.DeleteDlpJobRequest{
		Name: jobName,
	}
	if err = client.DeleteDlpJob(ctx, req); err != nil {
		return fmt.Errorf("DeleteDlpJob: %w", err)
	}
	fmt.Fprintf(w, "Successfully deleted job")
	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DeleteDlpJobRequest;
import com.google.privacy.dlp.v2.DlpJobName;
import java.io.IOException;

public class JobsDelete {
  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String jobId = "your-job-id";
    deleteJobs(projectId, jobId);
  }

  // Deletes a DLP Job with the given jobId
  public static void deleteJobs(String projectId, String jobId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the complete job name from the projectId and jobId
      DlpJobName jobName = DlpJobName.of(projectId, jobId);

      // Construct the job deletion request to be sent by the client.
      DeleteDlpJobRequest deleteDlpJobRequest =
          DeleteDlpJobRequest.newBuilder().setName(jobName.toString()).build();

      // Send the job deletion request
      dlpServiceClient.deleteDlpJob(deleteDlpJobRequest);
      System.out.println("Job deleted successfully.");
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The name of the job whose results should be deleted
// Parent project ID is automatically extracted from this parameter
// const jobName = 'projects/my-project/dlpJobs/X-#####'

function deleteJob() {
  // Construct job deletion request
  const request = {
    name: jobName,
  };

  // Run job deletion request
  dlp
    .deleteDlpJob(request)
    .then(() => {
      console.log(`Successfully deleted job ${jobName}.`);
    })
    .catch(err => {
      console.log(`Error in deleteJob: ${err.message || err}`);
    });
}

deleteJob();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\DeleteDlpJobRequest;

/**
 * Delete results of a Data Loss Prevention API job
 *
 * @param string $jobId The name of the job whose results should be deleted
 */
function delete_job(string $jobId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Run job-deletion request
    // The Parent project ID is automatically extracted from this parameter
    $deleteDlpJobRequest = (new DeleteDlpJobRequest())
        ->setName($jobId);
    $dlp->deleteDlpJob($deleteDlpJobRequest);

    // Print status
    printf('Successfully deleted job %s' . PHP_EOL, $jobId);
}

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.


import google.cloud.dlp


def delete_dlp_job(project: str, job_name: str) -> None:
    """Uses the Data Loss Prevention API to delete a long-running DLP job.
    Args:
        project: The project id to use as a parent resource.
        job_name: The name of the DlpJob resource to be deleted.

    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id and job name into a full resource id.
    name = f"projects/{project}/dlpJobs/{job_name}"

    # Call the API to delete job.
    dlp.delete_dlp_job(request={"name": name})

    print(f"Successfully deleted {job_name}")

REST

Pour supprimer une tâche du projet en cours, envoyez une requête DELETE au point de terminaison dlpJobs, comme indiqué ici. Remplacez le champ [JOB-IDENTIFIER] par l'identifiant de la tâche, qui commence par i-.

URL :

DELETE https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs/[JOB-IDENTIFIER]?key={YOUR_API_KEY}

Si la requête aboutit, l'API DLP renvoie une réponse positive. Pour vérifier que la tâche a bien été supprimée, répertoriez toutes les tâches.

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Supprimer un déclencheur de tâche

Console

  1. Dans la console Google Cloud, accédez à la page "Protection des données sensibles".

    Accéder à la protection des données sensibles

    Dans l'onglet Inspection, sous-onglet Déclencheurs de tâche, la console affiche la liste de tous les déclencheurs de tâche du projet en cours.

  2. Dans la colonne Actions associée au déclencheur de tâche que vous souhaitez supprimer, cliquez sur le menu Autres actions (représenté par trois points disposés verticalement) , puis cliquez sur Delete (Supprimer).

Sinon, dans la liste des déclencheurs de tâche, cliquez sur le nom de la tâche que vous souhaitez supprimer. Sur la page d'informations du déclencheur de tâche, cliquez sur Supprimer.

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.


using Google.Cloud.Dlp.V2;
using System;

public class TriggersDelete
{

    public static void Delete(string triggerName)
    {
        var dlp = DlpServiceClient.Create();

        dlp.DeleteJobTrigger(
            new DeleteJobTriggerRequest
            {
                Name = triggerName
            });

        Console.WriteLine($"Successfully deleted trigger {triggerName}.");
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// deleteTrigger deletes the given trigger.
func deleteTrigger(w io.Writer, triggerID string) error {
	// triggerID := "my-trigger"

	ctx := context.Background()

	client, err := dlp.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("dlp.NewClient: %w", err)
	}
	defer client.Close()

	req := &dlppb.DeleteJobTriggerRequest{
		Name: triggerID,
	}

	if err := client.DeleteJobTrigger(ctx, req); err != nil {
		return fmt.Errorf("DeleteJobTrigger: %w", err)
	}
	fmt.Fprintf(w, "Successfully deleted trigger %v", triggerID)
	return nil
}

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.

import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DeleteJobTriggerRequest;
import com.google.privacy.dlp.v2.ProjectJobTriggerName;
import java.io.IOException;

class TriggersDelete {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String triggerId = "your-trigger-id";
    deleteTrigger(projectId, triggerId);
  }

  public static void deleteTrigger(String projectId, String triggerId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Get the full trigger name from the given triggerId and ProjectId
      ProjectJobTriggerName triggerName = ProjectJobTriggerName.of(projectId, triggerId);

      // Construct the trigger deletion request to be sent by the client
      DeleteJobTriggerRequest deleteJobTriggerRequest =
          DeleteJobTriggerRequest.newBuilder().setName(triggerName.toString()).build();

      // Send the trigger deletion request
      dlpServiceClient.deleteJobTrigger(deleteJobTriggerRequest);
      System.out.println("Trigger deleted: " + triggerName.toString());
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project'

// The name of the trigger to be deleted
// Parent project ID is automatically extracted from this parameter
// const triggerId = 'projects/my-project/triggers/my-trigger';

async function deleteTrigger() {
  // Construct trigger deletion request
  const request = {
    name: triggerId,
  };

  // Run trigger deletion request
  await dlp.deleteJobTrigger(request);
  console.log(`Successfully deleted trigger ${triggerId}.`);
}

deleteTrigger();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\DeleteJobTriggerRequest;

/**
 * Delete a Data Loss Prevention API job trigger.
 *
 * @param string $callingProjectId  The project ID to run the API call under
 * @param string $triggerId         The name of the trigger to be deleted.
 */
function delete_trigger(string $callingProjectId, string $triggerId): void
{
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Run request
    // The Parent project ID is automatically extracted from this parameter
    $triggerName = "projects/$callingProjectId/locations/global/jobTriggers/$triggerId";
    $deleteJobTriggerRequest = (new DeleteJobTriggerRequest())
        ->setName($triggerName);
    $dlp->deleteJobTrigger($deleteJobTriggerRequest);

    // Print the results
    printf('Successfully deleted trigger %s' . PHP_EOL, $triggerName);
}

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.

import google.cloud.dlp


def delete_trigger(project: str, trigger_id: str) -> None:
    """Deletes a Data Loss Prevention API trigger.
    Args:
        project: The id of the Google Cloud project which owns the trigger.
        trigger_id: The id of the trigger to delete.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id into a full resource id.
    parent = f"projects/{project}"

    # Combine the trigger id with the parent id.
    trigger_resource = f"{parent}/jobTriggers/{trigger_id}"

    # Call the API.
    dlp.delete_job_trigger(request={"name": trigger_resource})

    print(f"Trigger {trigger_resource} successfully deleted.")

REST

Pour supprimer un déclencheur de tâche du projet en cours, envoyez une requête DELETE au point de terminaison jobTriggers, comme indiqué ici. Remplacez le champ [JOB-TRIGGER-NAME] par le nom du déclencheur de tâche.

URL :

DELETE https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/jobTriggers/[JOB-TRIGGER-NAME]?key={YOUR_API_KEY}

Si la requête aboutit, l'API DLP renvoie une réponse positive. Pour vérifier que le déclencheur de tâche a bien été supprimé, répertoriez tous les déclencheurs de tâche.

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Obtenir une tâche

Pour obtenir une tâche à partir de votre projet, ainsi que ses résultats, procédez comme suit : Tous les résultats enregistrés en externe (dans BigQuery, par exemple) ne sont pas modifiés par cette opération.

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.


using Google.Cloud.Dlp.V2;
using System;

public class JobsGet
{
    public static DlpJob GetDlpJob(string jobName)
    {
        var dlp = DlpServiceClient.Create();

        var response = dlp.GetDlpJob(jobName);

        Console.WriteLine($"Job: {response.Name} status: {response.State}");

        return response;
    }
}

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.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// jobsGet gets an inspection job using jobName
func jobsGet(w io.Writer, projectID string, jobName string) error {
	// projectId := "my-project-id"
	// jobName := "your-job-id"

	ctx := context.Background()

	// Initialize a client once and reuse it to send multiple requests. Clients
	// are safe to use across goroutines. When the client is no longer needed,
	// call the Close method to cleanup its resources.
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return err
	}

	// Closing the client safely cleans up background resources.
	defer client.Close()

	// Construct the request to be sent by the client.
	req := &dlppb.GetDlpJobRequest{
		Name: jobName,
	}

	// Send the request.
	resp, err := client.GetDlpJob(ctx, req)
	if err != nil {
		return err
	}

	// Print the results.
	fmt.Fprintf(w, "Job Name: %v Job Status: %v", resp.Name, resp.State)
	return nil
}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.DlpJobName;
import com.google.privacy.dlp.v2.GetDlpJobRequest;
import java.io.IOException;

public class JobsGet {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String jobId = "your-job-id";
    getJobs(projectId, jobId);
  }

  // Gets a DLP Job with the given jobId
  public static void getJobs(String projectId, String jobId) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Construct the complete job name from the projectId and jobId
      DlpJobName jobName = DlpJobName.of(projectId, jobId);

      // Construct the get job request to be sent by the client.
      GetDlpJobRequest getDlpJobRequest =
          GetDlpJobRequest.newBuilder().setName(jobName.toString()).build();

      // Send the get job request
      dlpServiceClient.getDlpJob(getDlpJobRequest);
      System.out.println("Job got successfully.");
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlp = new DLP.DlpServiceClient();

// Job name to look for
// const jobName = 'your-job-name';

async function getJob() {
  // Construct request for finding job using job name.
  const request = {
    name: jobName,
  };

  // Send the request and receive response from the service
  const [job] = await dlp.getDlpJob(request);

  // Print results.
  console.log(`Job ${job.name} status: ${job.state}`);
}

getJob();

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.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\GetDlpJobRequest;

/**
 * Get DLP inspection job.
 * @param string $jobName           Dlp job name
 */
function get_job(
    string $jobName
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();
    try {
        // Send the get job request
        $getDlpJobRequest = (new GetDlpJobRequest())
            ->setName($jobName);
        $response = $dlp->getDlpJob($getDlpJobRequest);
        printf('Job %s status: %s' . PHP_EOL, $response->getName(), $response->getState());
    } finally {
        $dlp->close();
    }
}

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.


import google.cloud.dlp


def get_dlp_job(project: str, job_name: str) -> None:
    """Uses the Data Loss Prevention API to retrieve a DLP job.
    Args:
        project: The project id to use as a parent resource.
        job_name: The name of the DlpJob resource to be retrieved.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Convert the project id and job name into a full resource id.
    job_name = f"projects/{project}/locations/global/dlpJobs/{job_name}"

    # Call the API
    response = dlp.get_dlp_job(request={"name": job_name})

    print(f"Job: {response.name} Status: {response.state}")

REST

Pour obtenir une tâche à partir du projet actuel, envoyez une requête GET au point de terminaison dlpJobs, comme indiqué ici. Remplacez le champ [JOB-IDENTIFIER] par l'identifiant de la tâche, qui commence par i-.

URL :

GET https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs/[JOB-IDENTIFIER]?key={YOUR_API_KEY}

Si la requête aboutit, l'API DLP renvoie une réponse positive.

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Forcer l'exécution immédiate d'un déclencheur de tâche

Une fois un déclencheur de tâche créé, vous pouvez forcer une exécution immédiate du déclencheur à des fins de test en l'activant. Pour ce faire, exécutez la commande suivante:

curl --request POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    'https://dlp.googleapis.com/v2/JOB_TRIGGER_NAME:activate'

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet Google Cloud pour facturer les frais d'accès associés à la requête.
  • JOB_TRIGGER_NAME: nom complet de la ressource du déclencheur de tâche (par exemple, projects/my-project/locations/global/jobTriggers/123456789).

Mettre à jour un déclencheur de job existant

En plus de créer, répertorier et supprimer des déclencheurs de job, vous pouvez également les mettre à jour. Pour modifier la configuration d'un déclencheur de tâche existant, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page "Protection des données sensibles".

    Accéder à la protection des données sensibles

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Déclencheurs de tâches.

    La console affiche une liste de tous les déclencheurs de tâche du projet en cours.

  3. Dans la colonne Actions du déclencheur de tâche que vous souhaitez supprimer, cliquez sur Plus , puis sur Afficher les détails

  4. Sur la page de détail du déclencheur de tâche, cliquez sur Modifier.

  5. Sur la page de modification du déclencheur, vous pouvez modifier l'emplacement des données d'entrée, les détails de détection (modèles, info-types ou probabilités), les actions post-analyse et la programmation. Une fois les modifications terminées, cliquez sur Enregistrer.

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.


using Google.Cloud.Dlp.V2;
using Google.Protobuf.WellKnownTypes;
using System;
using System.Collections.Generic;

public class TriggersUpdate
{
    public static JobTrigger UpdateJob(
        string projectId,
        string triggerId,
        IEnumerable<InfoType> infoTypes = null,
        Likelihood minLikelihood = Likelihood.Likely)
    {
        // Instantiate the client.
        var dlp = DlpServiceClient.Create();

        // Construct the update job trigger request object by providing the trigger name,
        // job trigger object which will specify the type of info to be inspected and
        // update mask object which specifies the field to be updated.
        // Refer to https://cloud.google.com/dlp/docs/reference/rest/v2/Container for specifying the paths in container object.
        var request = new UpdateJobTriggerRequest
        {
            JobTriggerName = new JobTriggerName(projectId, triggerId),
            JobTrigger = new JobTrigger
            {
                InspectJob = new InspectJobConfig
                {
                    InspectConfig = new InspectConfig
                    {
                        InfoTypes =
                        {
                            infoTypes ?? new InfoType[]
                            {
                                new InfoType { Name = "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER" }
                            }
                        },
                        MinLikelihood = minLikelihood
                    }
                }
            },
            // Specify fields of the jobTrigger resource to be updated when the job trigger is modified.
            // Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask for constructing the field mask paths.
            UpdateMask = new FieldMask
            {
                Paths =
                {
                    "inspect_job.inspect_config.info_types",
                    "inspect_job.inspect_config.min_likelihood"
                }
            }
        };

        // Call the API.
        JobTrigger response = dlp.UpdateJobTrigger(request);

        // Inspect the result.
        Console.WriteLine($"Job Trigger Name: {response.Name}");
        Console.WriteLine($"InfoType updated: {response.InspectJob.InspectConfig.InfoTypes[0]}");
        Console.WriteLine($"Likelihood updated: {response.InspectJob.InspectConfig.MinLikelihood}");
        return response;
    }
}

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.


import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
	"google.golang.org/protobuf/types/known/fieldmaskpb"
)

// updateTrigger updates an existing job trigger in Google Cloud Data Loss Prevention (DLP).
// It modifies the configuration of the specified job trigger with the provided updated settings.
func updateTrigger(w io.Writer, jobTriggerName string) error {
	// jobTriggerName := "your-job-trigger-name" (projects/<projectID>/locations/global/jobTriggers/my-trigger)

	ctx := context.Background()

	// Initialize a client once and reuse it to send multiple requests. Clients
	// are safe to use across goroutines. When the client is no longer needed,
	// call the Close method to cleanup its resources.
	client, err := dlp.NewClient(ctx)
	if err != nil {
		return err
	}

	// Closing the client safely cleans up background resources.
	defer client.Close()

	// Specify the type of info the inspection will look for.
	// See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
	infoType := &dlppb.InfoType{
		Name: "PERSON_NAME",
	}

	// Specify the inspectConfig that represents the configuration settings for inspecting sensitive data in
	// DLP API. It includes detection types, custom info types, inspection methods, and actions
	// to be taken on detection.
	inspectConfig := &dlppb.InspectConfig{
		InfoTypes: []*dlppb.InfoType{
			infoType,
		},
		MinLikelihood: dlppb.Likelihood_LIKELY,
	}

	// Configure the inspection job we want the service to perform.
	inspectJobConfig := &dlppb.InspectJobConfig{
		InspectConfig: inspectConfig,
	}

	// Specify the jobTrigger that represents a DLP job trigger configuration.
	// It defines the conditions, actions, and schedule for executing inspections
	// on sensitive data in the specified data storage.
	jobTrigger := &dlppb.JobTrigger{
		Job: &dlppb.JobTrigger_InspectJob{
			InspectJob: inspectJobConfig,
		},
	}

	// fieldMask represents a set of fields to be included in an update operation.
	// It is used to specify which fields of a resource should be updated.
	updateMask := &fieldmaskpb.FieldMask{
		Paths: []string{"inspect_job.inspect_config.info_types", "inspect_job.inspect_config.min_likelihood"},
	}

	// Combine configurations into a request for the service.
	req := &dlppb.UpdateJobTriggerRequest{
		Name:       jobTriggerName,
		JobTrigger: jobTrigger,
		UpdateMask: updateMask,
	}

	// Send the scan request and process the response
	resp, err := client.UpdateJobTrigger(ctx, req)
	if err != nil {
		return err
	}

	// Print the result.
	fmt.Fprintf(w, "Successfully Updated trigger: %v", resp)
	return nil

}

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.


import com.google.cloud.dlp.v2.DlpServiceClient;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectJobConfig;
import com.google.privacy.dlp.v2.JobTrigger;
import com.google.privacy.dlp.v2.JobTriggerName;
import com.google.privacy.dlp.v2.Likelihood;
import com.google.privacy.dlp.v2.UpdateJobTriggerRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class TriggersPatch {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.

    // The Google Cloud project id to use as a parent resource.
    String projectId = "your-project-id";
    // The name of the job trigger to be updated.
    String jobTriggerName = "your-job-trigger-name";
    patchTrigger(projectId, jobTriggerName);
  }

  // Uses the Data Loss Prevention API to update an existing job trigger.
  public static void patchTrigger(String projectId, String jobTriggerName) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DlpServiceClient dlpServiceClient = DlpServiceClient.create()) {

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      InfoType infoType = InfoType.newBuilder().setName("PERSON_NAME").build();

      InspectConfig inspectConfig = InspectConfig.newBuilder()
              .addInfoTypes(infoType)
              .setMinLikelihood(Likelihood.LIKELY)
              .build();

      InspectJobConfig inspectJobConfig = InspectJobConfig.newBuilder()
              .setInspectConfig(inspectConfig)
              .build();

      JobTrigger jobTrigger = JobTrigger.newBuilder()
              .setInspectJob(inspectJobConfig)
              .build();

      // Specify fields of the jobTrigger resource to be updated when the job trigger is modified.
      // Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask for constructing the field mask paths.
      FieldMask fieldMask = FieldMask.newBuilder()
              .addPaths("inspect_job.inspect_config.info_types")
              .addPaths("inspect_job.inspect_config.min_likelihood")
              .build();

      // Update the job trigger with the new configuration.
      UpdateJobTriggerRequest updateJobTriggerRequest = UpdateJobTriggerRequest.newBuilder()
              .setName(JobTriggerName.of(projectId, jobTriggerName).toString())
              .setJobTrigger(jobTrigger)
              .setUpdateMask(fieldMask)
              .build();

      // Call the API to update the job trigger.
      JobTrigger updatedJobTrigger = dlpServiceClient.updateJobTrigger(updateJobTriggerRequest);

      System.out.println("Job Trigger Name: " + updatedJobTrigger.getName());
      System.out.println(
          "InfoType updated: "
              + updatedJobTrigger.getInspectJob().getInspectConfig().getInfoTypes(0).getName());
      System.out.println(
          "Likelihood updated: "
              + updatedJobTrigger.getInspectJob().getInspectConfig().getMinLikelihood());
    }
  }
}

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.

// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');

// Instantiates a client
const dlpClient = new DLP.DlpServiceClient();

// The project ID to run the API call under
// const projectId = 'my-project';

// The job trigger ID to run the API call under
// const jobTriggerName = 'your-job-trigger-name';

async function updateTrigger() {
  // Construct inspect configuration to match PERSON_NAME infotype
  const inspectConfig = {
    infoTypes: [{name: 'PERSON_NAME'}],
    minLikelihood: 'LIKELY',
  };

  // Configure the job trigger we want to update.
  const jobTrigger = {inspectJob: {inspectConfig}};

  const updateMask = {
    paths: [
      'inspect_job.inspect_config.info_types',
      'inspect_job.inspect_config.min_likelihood',
    ],
  };

  // Combine configurations into a request for the service.
  const request = {
    name: `projects/${projectId}/jobTriggers/${jobTriggerName}`,
    jobTrigger,
    updateMask,
  };

  // Send the request and receive response from the service
  const [updatedJobTrigger] = await dlpClient.updateJobTrigger(request);

  // Print the results
  console.log(`Updated Trigger: ${JSON.stringify(updatedJobTrigger)}`);
}
updateTrigger(projectId, jobTriggerName);

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.

use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\JobTrigger;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Protobuf\FieldMask;

/**
 * Update an existing job trigger.
 *
 * @param string $callingProjectId  The Google Cloud Project ID to run the API call under.
 * @param string $jobTriggerName    The job trigger name to update.
 *
 */
function update_trigger(
    string $callingProjectId,
    string $jobTriggerName
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Configure the inspectConfig.
    $inspectConfig = (new InspectConfig())
        ->setInfoTypes([
            (new InfoType())
                ->setName('US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER')
        ])
        ->setMinLikelihood(Likelihood::LIKELY);

    // Configure the Job Trigger we want the service to perform.
    $jobTrigger = (new JobTrigger())
        ->setInspectJob((new InspectJobConfig())
            ->setInspectConfig($inspectConfig));

    // Specify fields of the jobTrigger resource to be updated when the job trigger is modified.
    // Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask for constructing the field mask paths.
    $fieldMask = (new FieldMask())
        ->setPaths([
            'inspect_job.inspect_config.info_types',
            'inspect_job.inspect_config.min_likelihood'
        ]);

    // Send the update job trigger request and process the response.
    $name = "projects/$callingProjectId/locations/global/jobTriggers/" . $jobTriggerName;

    $response = $dlp->updateJobTrigger($name, [
        'jobTrigger' => $jobTrigger,
        'updateMask' => $fieldMask
    ]);

    // Print results.
    printf('Successfully update trigger %s' . PHP_EOL, $response->getName());
}

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.

from typing import List

import google.cloud.dlp


def update_trigger(
    project: str,
    info_types: List[str],
    trigger_id: str,
) -> None:
    """Uses the Data Loss Prevention API to update an existing job trigger.
    Args:
        project: The Google Cloud project id to use as a parent resource
        info_types: A list of strings representing infoTypes to update trigger with.
            A full list of infoType categories can be fetched from the API.
        trigger_id: The id of job trigger which needs to be updated.
    """

    # Instantiate a client.
    dlp = google.cloud.dlp_v2.DlpServiceClient()

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries.
    info_types = [{"name": info_type} for info_type in info_types]

    # Specify fields of the jobTrigger resource to be updated when the
    # job trigger is modified.
    job_trigger = {
        "inspect_job": {
            "inspect_config": {
                "info_types": info_types,
                "min_likelihood": google.cloud.dlp_v2.Likelihood.LIKELY,
            }
        }
    }

    # Convert the project id into a full resource id.
    trigger_name = f"projects/{project}/jobTriggers/{trigger_id}"

    # Call the API.
    # Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask
    # for constructing the field mask paths.
    response = dlp.update_job_trigger(
        request={
            "name": trigger_name,
            "job_trigger": job_trigger,
            "update_mask": {
                "paths": [
                    "inspect_job.inspect_config.info_types",
                    "inspect_job.inspect_config.min_likelihood",
                ]
            },
        }
    )

    # Print out the result.
    print(f"Successfully updated trigger: {response.name}")
    print(
        f"Updated InfoType: {response.inspect_job.inspect_config.info_types[0].name}"
        f" \nUpdates Likelihood: {response.inspect_job.inspect_config.min_likelihood}\n",
    )

REST

Utilisez la méthode projects.jobTriggers.patch pour envoyer de nouvelles valeurs JobTrigger à l'API DLP afin de mettre à jour ces valeurs dans un déclencheur de tâche spécifié.

Par exemple, considérons le déclencheur de tâche simple ci-après. Ce code JSON représente le déclencheur de tâche et a été renvoyé après l'envoi d'une requête GET au point de terminaison du déclencheur de tâche du projet actuel.

Sortie JSON :

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "inspectJob":{
    "storageConfig":{
      "cloudStorageOptions":{
        "fileSet":{
          "url":"gs://dlptesting/*"
        },
        "fileTypes":[
          "FILE_TYPE_UNSPECIFIED"
        ],
        "filesLimitPercent":100
      },
      "timespanConfig":{
        "enableAutoPopulationOfTimespanConfig":true
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"US_SOCIAL_SECURITY_NUMBER"
        }
      ],
      "minLikelihood":"POSSIBLE",
      "limits":{

      }
    },
    "actions":[
      {
        "jobNotificationEmails":{

        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2019-03-06T21:19:45.774841Z",
  "updateTime":"2019-03-06T21:19:45.774841Z",
  "status":"HEALTHY"
}

Le code JSON suivant, lorsqu'il est envoyé avec une requête PATCH au point de terminaison spécifié, met à jour le déclencheur de tâche considéré avec un nouvel infoType à analyser, ainsi qu'une nouvelle valeur minimale de probabilité. Notez que vous devez également spécifier l'attribut updateMask avec une valeur au format FieldMask.

Entrée JSON :

PATCH https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]?key={YOUR_API_KEY}

{
  "jobTrigger":{
    "inspectJob":{
      "inspectConfig":{
        "infoTypes":[
          {
            "name":"US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER"
          }
        ],
        "minLikelihood":"LIKELY"
      }
    }
  },
  "updateMask":"inspectJob(inspectConfig(infoTypes,minLikelihood))"
}

Une fois que vous avez envoyé ce code JSON à l'URL spécifiée, les lignes ci-dessous représentant le déclencheur de tâche mis à jour sont renvoyées. Notez que les valeurs d'infoType et de probabilité d'origine ont été remplacées par les nouvelles valeurs.

Sortie JSON :

{
  "name":"projects/[PROJECT_ID]/jobTriggers/[JOB_TRIGGER_NAME]",
  "inspectJob":{
    "storageConfig":{
      "cloudStorageOptions":{
        "fileSet":{
          "url":"gs://dlptesting/*"
        },
        "fileTypes":[
          "FILE_TYPE_UNSPECIFIED"
        ],
        "filesLimitPercent":100
      },
      "timespanConfig":{
        "enableAutoPopulationOfTimespanConfig":true
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER"
        }
      ],
      "minLikelihood":"LIKELY",
      "limits":{

      }
    },
    "actions":[
      {
        "jobNotificationEmails":{

        }
      }
    ]
  },
  "triggers":[
    {
      "schedule":{
        "recurrencePeriodDuration":"86400s"
      }
    }
  ],
  "createTime":"2019-03-06T21:19:45.774841Z",
  "updateTime":"2019-03-06T21:27:01.650183Z",
  "lastRunTime":"1970-01-01T00:00:00Z",
  "status":"HEALTHY"
}

Pour l'essayer rapidement, vous pouvez utiliser l'explorateur d'API intégré ci-dessous. Pour en savoir plus sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide JSON.

Latence des jobs

Aucun objectif de niveau de service (SLO) n'est garanti pour les jobs et les déclencheurs de jobs. La latence dépend de plusieurs facteurs, y compris la quantité de données à analyser, le dépôt de stockage analysé, le type et le nombre d'infoTypes que vous recherchez, la région où la tâche est traitée et les ressources informatiques disponibles dans cette région. Par conséquent, la latence des tâches d'inspection ne peut pas être déterminée à l'avance.

Pour réduire la latence des tâches, essayez les solutions suivantes :

  • Si l'échantillonnage est disponible pour votre tâche ou votre déclencheur de tâche, activez-le.
  • Évitez d'activer les infoTypes dont vous n'avez pas besoin. Bien que les éléments suivants soient utiles dans certains scénarios, ces infoTypes peuvent ralentir considérablement les requêtes par rapport à celles qui ne les incluent pas:

    • PERSON_NAME
    • FEMALE_NAME
    • MALE_NAME
    • FIRST_NAME
    • LAST_NAME
    • DATE_OF_BIRTH
    • LOCATION
    • STREET_ADDRESS
    • ORGANIZATION_NAME
  • Spécifiez toujours les infoTypes explicitement. N'utilisez pas de liste d'infoTypes vide.

  • Si possible, utilisez une autre région de traitement.

Si les problèmes de latence avec les tâches persistent après avoir essayé ces techniques, envisagez d'utiliser des requêtes content.inspect ou content.deidentify à la place des tâches. Ces méthodes sont couvertes par le contrat de niveau de service. Pour en savoir plus, consultez le Contrat de niveau de service de Sensitive Data Protection.

Limiter les analyses au nouveau contenu

Vous pouvez configurer votre déclencheur de tâche pour définir automatiquement la période pour l'analyse des fichiers stockés dans Cloud Storage ou BigQuery. Lorsque vous définissez l'objet TimespanConfig pour qu'il soit inséré automatiquement, Sensitive Data Protection n'analyse que les données qui ont été ajoutées ou modifiées depuis l'exécution du dernier déclencheur:

...
  timespan_config {
        enable_auto_population_of_timespan_config: true
      }
...

Pour l'inspection BigQuery, seules les lignes datant d'au moins trois heures sont incluses dans l'analyse. Consultez le problème connu associé à cette opération.

Déclencher des tâches en cas d'importation de fichiers

En complément de la prise en charge des déclencheurs de tâche, qui est intégrée à la protection des données sensibles, Google Cloud fournit divers autres composants que vous pouvez utiliser pour intégrer ou déclencher des tâches de protection des données sensibles. Par exemple, vous pouvez utiliser des fonctions Cloud Run pour déclencher une analyse de protection des données sensibles chaque fois qu'un fichier est importé dans Cloud Storage.

Pour découvrir comment configurer cette opération, consultez la section Automatiser la classification des données importées sur Cloud Storage.

Tâches réussies sans données inspectées

Une tâche peut se terminer correctement même si aucune donnée n'a été analysée. Les exemples de scénarios suivants peuvent entraîner cette situation:

  • La tâche est configurée pour inspecter un élément de données spécifique, tel qu'un fichier, qui existe, mais est vide.
  • La tâche est configurée pour inspecter un composant de données qui n'existe pas ou qui n'existe plus.
  • La tâche est configurée pour inspecter un bucket Cloud Storage vide.
  • La tâche est configurée pour inspecter un bucket, et l'analyse récursive est désactivée. Au niveau supérieur, le bucket ne contient que des dossiers qui, à leur tour, contiennent les fichiers.
  • La tâche est configurée pour n'inspecter qu'un type de fichier spécifique dans un bucket, mais le bucket ne contient aucun fichier de ce type.
  • La tâche est configurée pour inspecter uniquement le nouveau contenu, mais aucune mise à jour n'a été effectuée après la dernière exécution de la tâche.

Dans la console Google Cloud, sur la page Détails de la tâche, le champ Octets analysés indique la quantité de données inspectées par la tâche. Dans l'API DLP, le champ processedBytes spécifie la quantité de données inspectées.

Étape suivante