Créer et planifier des tâches d'inspection Cloud DLP

Cet article explique en détail comment créer une tâche d'inspection Cloud Data Loss Prevention 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 tâche à l'aide de l'interface utilisateur Cloud DLP, consultez la section Démarrage rapide – Créer un déclencheur de tâche Cloud DLP.

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

Lorsque Cloud DLP effectue une analyse d'inspection pour identifier les données sensibles, chaque analyse s'exécute en tant que tâche. Cloud DLP 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, y compris les buckets Cloud Storage, les tables BigQuery, les genres Datastore et les données externes.

Vous programmez des tâches d'analyse d'inspection Cloud DLP en créant des déclencheurs de tâche. Un déclencheur de tâche automatise la création de tâches DLP 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 Cloud DLP, 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 Cloud DLP, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Protection contre la perte de données.

    Accéder à la protection contre la perte de données

  2. Cliquez sur l'onglet Inspection, puis sur Créer une tâche et des déclencheurs de tâches.

    Vous pouvez également cliquer sur le bouton suivant :

    Créer une tâche

La page "Créer une 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, Cloud DLP 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.
  • Mixte: vous pouvez ajouter les étiquettes requises, les étiquettes facultatives et les options de gestion des données tabulaires. Pour en savoir plus, consultez 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), Cloud DLP 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 : Cloud DLP 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 Cloud DLP a analysé les données jusqu'à la taille de fichier maximale spécifiée.
  • Démarrer l'échantillonnage à partir d'un emplacement aléatoire : Cloud DLP 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. Cloud DLP 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 affiner les fichiers ou les enregistrements par date. Pour en savoir plus, consultez la section Programmation plus loin dans cette rubrique.

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), Cloud DLP 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 : Cloud DLP 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 Cloud DLP 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 : Cloud DLP 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. Cloud DLP 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 parmi plusieurs formats : binaire, texte, image, CSV, TSV, Microsoft Word, Microsoft Excel, Microsoft Powerpoint, PDF et Apache Avro. Pour obtenir la liste exhaustive des extensions de fichiers que Cloud DLP peut analyser dans des buckets Cloud Storage, consultez la section FileType. Si vous sélectionnez Binaire, Cloud DLP analyse les fichiers de types non reconnus.

Champs d'identification

Pour les tables dans BigQuery, vous pouvez demander à Cloud DLP d'inclure les valeurs des colonnes de clé primaire de la table dans les résultats du champ Identifying fields (Champs d'identification). Vous pouvez ainsi associer les résultats aux lignes de table qui les contiennent.

Saisissez les noms des colonnes qui identifient de manière unique chaque ligne du tableau. Si nécessaire, spécifiez des champs imbriqués à l'aide de la notation par points. 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, chaque résultat contient les valeurs correspondantes des champs d'identification. Pour en savoir plus, consultez la section 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, Cloud DLP recherche un ensemble d'infoTypes par défaut dans vos données.

Modèle

Vous pouvez également exploiter un modèle Cloud DLP 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 plus d'informations sur la création de modèles, reportez-vous à la section Créer des modèles d'inspection Cloud DLP.

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 Cloud DLP identifie les numéros de sécurité sociale américains. En plus des détecteurs d'infoTypes intégrés, vous pouvez créer vos propres détecteurs d'infoTypes personnalisés.

Sous InfoTypes, choisissez le détecteur d'infoType qui correspond au type de données que vous souhaitez analyser. Nous vous déconseillons de laisser cette section vide. Cloud DLP analyse alors vos données avec un ensemble d'infoTypes par défaut, qui peut inclure des infoTypes dont vous n'avez pas besoin. Vous trouverez plus d'informations sur chaque détecteur dans la documentation de référence sur les détecteurs d'infoType.

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

Ensembles de règles d'inspection

Inspection rulesets allow you to customize both built-in and custom infoType detectors using context rules. The two types of inspection rules are:

To add a new ruleset, first specify one or more built-in or custom infoType detectors in the InfoTypes section. These are the infoType detectors that your rulesets will be modifying. Then, do the following:

  1. Click in the Choose infoTypes field. The infoType or infoTypes you specified previously appear below the field in a menu, as shown here:
  2. Screenshot of the DLP UI's inspection rulesets configuration.
  3. Choose an infoType from the menu, and then click Add rule. A menu appears with the two options Hotword rule and Exclusion rule.

For hotword rules, choose Hotword rules. Then, do the following:

  1. In the Hotword field, enter a regular expression that Cloud DLP should look for.
  2. From the Hotword proximity menu, choose whether the hotword you entered is found before or after the chosen infoType.
  3. In Hotword distance from infoType, enter the approximate number of characters between the hotword and the chosen infoType.
  4. In Confidence level adjustment, choose whether to assign matches a fixed likelihood level, or to increase or decrease the default likelihood level by a certain amount.

For exclusion rules, choose Exclusion rules. Then, do the following:

  1. In the Exclude field, enter a regular expression (regex) that Cloud DLP should look for.
  2. From the Matching type menu, choose one of the following:
    • Full match: The finding must completely match the regex.
    • Partial match: A substring of the finding can match the regex.
    • Inverse match: The finding doesn't match the regex.

You can add additional hotword or exclusion rules and rulesets to further refine your scan results.

Seuil de confiance

Chaque fois que Cloud DLP détecte une correspondance potentielle pour des données sensibles, il 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 indiquez à Cloud DLP de ne rechercher que les données qui correspondent à cette valeur de probabilité ou à une valeur supérieure.

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

À l'étape Ajouter des actions, sélectionnez une ou plusieurs actions que vous souhaitez que Cloud DLP effectue une fois la tâche terminée.

Vous pouvez configurer les actions suivantes:

  • Enregistrer dans BigQuery: enregistrez les résultats de la tâche DLP dans une table BigQuery. Avant de visualiser ou d'analyser les résultats, assurez-vous d'avoir terminé la tâche.

    À chaque analyse, Cloud DLP 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 et la probabilité de correspondance de chaque résultat. Si vous souhaitez que chaque résultat comprenne la chaîne correspondant au détecteur d'infoType, activez l'option Inclure les guillemets.

    Si vous ne spécifiez pas d'ID de table, BigQuery attribue un nom par défaut à une nouvelle table la première fois que l'analyse s'exécute. Si vous spécifiez une table existante, Cloud DLP y ajoute les résultats d'analyse.

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

    Lorsque des données sont écrites dans une table BigQuery, l'utilisation de la facturation et des quotas est appliquée au projet contenant la table de destination.

  • Publier sur Pub/Sub: publiez une notification contenant le nom de la tâche DLP en tant qu'attribut dans 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 Cloud DLP qui exécute la tâche d'analyse dispose d'un accès en publication sur le sujet.

  • Publier dans Security Command Center: publier 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 des analyses Cloud DLP à Security Command Center.

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

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

  • Publier sur Cloud Monitoring: envoyez les résultats d'inspection à Cloud Monitoring dans la suite Google Cloud Operations.

  • Créer une copie anonymisée: anonymisez tous les résultats dans les données inspectées et é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 la section Créer une copie anonymisée des données Cloud Storage à l'aide de Cloud DLP dans la console Google Cloud.

Pour en savoir plus, consultez 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 Cloud DLP, cliquez sur la flèche Retour dans la console Google Cloud.

Protocole

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

Cet exemple de code JSON peut être envoyé dans une requête POST au point de terminaison REST Cloud DLP. Cet exemple de code JSON montre comment créer une tâche dans Cloud DLP. 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 obtenir des informations générales sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format 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"
}

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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());
    }
  }
}

Créer un déclencheur de tâche :

Pour créer un déclencheur de tâche Cloud DLP, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Protection contre la perte de données.

    Accéder à la protection contre la perte de données

  2. Cliquez sur l'onglet Inspection, puis sur Créer une tâche et des déclencheurs de tâches.

    Vous pouvez également cliquer sur le bouton suivant :

    Créer un déclencheur de tâche

La page "Créer 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, Cloud DLP attribuera au déclencheur de tâche un identifiant 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), Cloud DLP 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 : Cloud DLP 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 Cloud DLP 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 : Cloud DLP 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. Cloud DLP 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), Cloud DLP 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 : Cloud DLP 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 Cloud DLP 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 : Cloud DLP 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. Cloud DLP 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 parmi des fichiers binaires, texte, image, Microsoft Word, Microsoft Excel, Microsoft Powerpoint, PDF et Apache Avro. Pour obtenir la liste exhaustive des extensions de fichiers que Cloud DLP peut analyser dans des buckets Cloud Storage, consultez la section FileType. Si vous sélectionnez Binaire, Cloud DLP analyse les fichiers de types non reconnus.

Champs d'identification

Pour les tables dans BigQuery, vous pouvez demander à Cloud DLP d'inclure les valeurs des colonnes de clé primaire de la table dans les résultats du champ Identifying fields (Champs d'identification). Vous pouvez ainsi associer les résultats aux lignes de table qui les contiennent.

Saisissez les noms des colonnes qui identifient de manière unique chaque ligne du tableau. Si nécessaire, spécifiez des champs imbriqués à l'aide de la notation par points. 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, chaque résultat contient les valeurs correspondantes des champs d'identification. Pour en savoir plus, consultez la section 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, Cloud DLP recherche un ensemble d'infoTypes par défaut dans vos données.

Modèle

Vous pouvez également exploiter un modèle Cloud DLP 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 plus d'informations sur la création de modèles, reportez-vous à la section Créer des modèles d'inspection Cloud DLP.

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 Cloud DLP 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

Inspection rulesets allow you to customize both built-in and custom infoType detectors using context rules. The two types of inspection rules are:

To add a new ruleset, first specify one or more built-in or custom infoType detectors in the InfoTypes section. These are the infoType detectors that your rulesets will be modifying. Then, do the following:

  1. Click in the Choose infoTypes field. The infoType or infoTypes you specified previously appear below the field in a menu, as shown here:
  2. Screenshot of the DLP UI's inspection rulesets configuration.
  3. Choose an infoType from the menu, and then click Add rule. A menu appears with the two options Hotword rule and Exclusion rule.

For hotword rules, choose Hotword rules. Then, do the following:

  1. In the Hotword field, enter a regular expression that Cloud DLP should look for.
  2. From the Hotword proximity menu, choose whether the hotword you entered is found before or after the chosen infoType.
  3. In Hotword distance from infoType, enter the approximate number of characters between the hotword and the chosen infoType.
  4. In Confidence level adjustment, choose whether to assign matches a fixed likelihood level, or to increase or decrease the default likelihood level by a certain amount.

For exclusion rules, choose Exclusion rules. Then, do the following:

  1. In the Exclude field, enter a regular expression (regex) that Cloud DLP should look for.
  2. From the Matching type menu, choose one of the following:
    • Full match: The finding must completely match the regex.
    • Partial match: A substring of the finding can match the regex.
    • Inverse match: The finding doesn't match the regex.

You can add additional hotword or exclusion rules and rulesets to further refine your scan results.

Seuil de confiance

Chaque fois que Cloud DLP détecte une correspondance potentielle pour des données sensibles, il 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 indiquez à Cloud DLP de ne rechercher que les données qui correspondent à cette valeur de probabilité ou à une valeur supérieure.

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

À l'étape Ajouter des actions, sélectionnez une ou plusieurs actions que vous souhaitez que Cloud DLP effectue une fois la tâche terminée.

Vous pouvez configurer les actions suivantes:

  • Enregistrer dans BigQuery: enregistrez les résultats de la tâche DLP dans une table BigQuery. Avant de visualiser ou d'analyser les résultats, assurez-vous d'avoir terminé la tâche.

    À chaque analyse, Cloud DLP 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 et la probabilité de correspondance de chaque résultat. Si vous souhaitez que chaque résultat comprenne la chaîne correspondant au détecteur d'infoType, activez l'option Inclure les guillemets.

    Si vous ne spécifiez pas d'ID de table, BigQuery attribue un nom par défaut à une nouvelle table la première fois que l'analyse s'exécute. Si vous spécifiez une table existante, Cloud DLP y ajoute les résultats d'analyse.

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

    Lorsque des données sont écrites dans une table BigQuery, l'utilisation de la facturation et des quotas est appliquée au projet contenant la table de destination.

  • Publier sur Pub/Sub: publiez une notification contenant le nom de la tâche DLP en tant qu'attribut dans 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 Cloud DLP qui exécute la tâche d'analyse dispose d'un accès en publication sur le sujet.

  • Publier dans Security Command Center: publier 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 des analyses Cloud DLP à Security Command Center.

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

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

  • Publier sur Cloud Monitoring: envoyez les résultats d'inspection à Cloud Monitoring dans la suite Google Cloud Operations.

  • Créer une copie anonymisée: anonymisez tous les résultats dans les données inspectées et é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 la section Créer une copie anonymisée des données Cloud Storage à l'aide de Cloud DLP dans la console Google Cloud.

Pour en savoir plus, consultez 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 crée le déclencheur de tâche et le configure pour exécuter la tâche selon le calendrier spécifié. La valeur par défaut est également la valeur minimale, soit 24 heures. La valeur maximale est de 540 jours. Si vous souhaitez que Cloud DLP n'analyse que les nouveaux fichiers ou les nouvelles lignes, cochez la case Limiter les analyses au nouveau contenu.

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 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 Cloud DLP, cliquez sur la flèche Retour dans la console Google Cloud.

Protocole

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

Cet exemple de code JSON peut être envoyé dans une requête POST au point de terminaison REST Cloud DLP. Il montre comment créer un déclencheur de tâche dans Cloud DLP. 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 obtenir des informations générales sur l'utilisation du format JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage JSON.

Entrée JSON :

{
  "jobTrigger":{
    "displayName":"JobTrigger1",
    "description":"Starts a DLP scan job 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 a DLP scan job 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"
}

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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();

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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  # noqa: I100, E402

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}")

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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\JobTrigger;
use Google\Cloud\Dlp\V2\JobTrigger\Trigger;
use Google\Cloud\Dlp\V2\JobTrigger\Status;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\Schedule;
use Google\Cloud\Dlp\V2\CloudStorageOptions;
use Google\Cloud\Dlp\V2\CloudStorageOptions_FileSet;
use Google\Cloud\Dlp\V2\StorageConfig;
use Google\Cloud\Dlp\V2\StorageConfig_TimespanConfig;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Cloud\Dlp\V2\InspectConfig\FindingLimits;
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 = 0,
    bool $autoPopulateTimespan = false,
    int $maxFindings = 0
): 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 CloudStorageOptions_FileSet())
        ->setUrl('gs://' . $bucketName . '/*');

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

    // Auto-populate start and end times in order to scan new objects only.
    $timespanConfig = (new StorageConfig_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 = "projects/$callingProjectId/locations/global";
    $trigger = $dlp->createJobTrigger($parent, $jobTriggerObject, [
        'triggerId' => $triggerId
    ]);

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

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;
    }
}

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 contre la perte de données.

    Accéder à la protection contre la perte de données

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Inspecter les tâches.

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.

Protocole

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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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();

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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  # noqa: I100, E402

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}")

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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\DlpJob\JobState;
use Google\Cloud\Dlp\V2\DlpJobType;

/**
 * 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";
    $response = $dlp->listDlpJobs($parent, [
    'filter' => $filter,
    'type' => $jobType
    ]);

    // 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);
            }
        }
    }
}

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;
    }
}

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 contre la perte de données.

Accéder à la protection contre la perte de données

Dans l'onglet Inspection, dans le sous-onglet Job déclencheurs (Déclencheurs de tâche), la console affiche la liste de tous les déclencheurs de tâche pour le projet en cours.

Protocole

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 a DLP scan job 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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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();

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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  # noqa: F811, E402

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.discription}")
        print(f"  Status: {trigger.status}")
        print(f"  Error count: {len(trigger.errors)}")

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;

/**
 * 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
    $response = $dlp->listJobTriggers($parent);

    // 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'));
    }
}

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;
    }
}

Supprimer une offre d'emploi

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 contre la perte de données.

    Accéder à la protection contre la perte de données

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Inspecter les tâches. La console Google Cloud 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).

Protocole

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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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();

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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  # noqa: F811, E402

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("Successfully deleted %s" % job_name)

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;

/**
 * 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
    $dlp->deleteDlpJob($jobId);

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

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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}.");
    }
}

Supprimer un déclencheur de tâche

Console

  1. Dans la console Google Cloud, accédez à la page Protection contre la perte de données.

    Accéder à la protection contre la perte de données

    Dans l'onglet Inspection, dans le sous-onglet Déclencheurs de tâche, la console affiche la liste de tous les déclencheurs de tâche pour le 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.

Protocole

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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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();

Python

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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  # noqa: F811, E402

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.")

Go

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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 {
	// projectID := "my-project-id"
	// 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
}

PHP

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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;

/**
 * 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";
    $response = $dlp->deleteJobTrigger($triggerName);

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

C#

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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}.");
    }
}

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.

Protocole

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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Java

Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud DLP, consultez Bibliothèques clientes Cloud DLP.

Pour vous authentifier auprès de Cloud DLP, 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.");
    }
  }
}

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

Une fois le déclencheur de tâche créé, vous pouvez forcer son exécution immédiate à des fins de test. 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 à 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 tâche existant

En plus de créer, répertorier et supprimer des déclencheurs de tâche, 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 contre la perte de données.

    Accéder à la protection contre la perte de données

  2. Cliquez sur l'onglet Inspection, puis sur le sous-onglet Tâche déclencheurs.

    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.

Protocole

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 obtenir des informations générales sur l'utilisation de JSON pour envoyer des requêtes à l'API DLP, consultez le guide de démarrage rapide au format JSON.

Latence de la tâche

Aucun objectif de niveau de service (SLO) n'est garanti pour les tâches et les déclencheurs de tâches. 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 analysés, la région dans laquelle la tâche est traitée et les ressources de calcul 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 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 l'exécution des 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 vous rencontrez toujours des problèmes de latence avec les tâches 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 Cloud DLP.

Limiter les analyses au nouveau contenu

Vous pouvez configurer votre déclencheur de tâche pour définir automatiquement la date et l'heure des fichiers stockés dans Cloud Storage ou BigQuery. Lorsque vous définissez l'objet TimespanConfig pour qu'il soit inséré automatiquement, Cloud DLP n'analyse que les données ajoutées ou modifiées depuis la dernière exécution du déclencheur:

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

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

En plus de la compatibilité des déclencheurs de tâches, qui est intégrée à Cloud DLP, Google Cloud dispose également de nombreux autres composants que vous pouvez utiliser pour intégrer ou déclencher des tâches DLP. Par exemple, vous pouvez utiliser Cloud Functions pour déclencher une analyse DLP chaque fois qu'un fichier est importé dans Cloud Storage.

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

Étapes suivantes