Cloud DLP-Inspektionsjobs erstellen und planen

In diesem Thema wird ausführlich beschrieben, wie Sie einen Cloud Data Loss Prevention (DLP)-Inspektionsjob erstellen und wiederkehrende Inspektionsjobs durch Erstellen eines Job-Triggers planen. Eine kurze Schritt-für-Schritt-Anleitung zum Erstellen eines neuen Job-Triggers über die Cloud DLP-UI finden Sie unter Kurzanleitung: Cloud DLP-Job-Trigger erstellen.

Informationen zu Inspektionsjobs und Job-Triggern

Wenn Cloud DLP einen Inspektionsscan zur Identifizierung vertraulicher Daten durchführt, wird jeder Scan als Job ausgeführt. Cloud DLP erstellt dann eine Jobressource und führt diese aus, wenn Sie es anweisen, Ihre Google Cloud Storage-Repositories zu prüfen, einschließlich Cloud Storage-Buckets, BigQuery-Tabellen und Cloud Datastore-Arten.

Sie planen Cloud DLP-Inspektionsscanjobs durch Erstellen von Job-Triggern. Ein Job-Trigger automatisiert die Erstellung von DLP-Jobs regelmäßig und kann auch on demand ausgeführt werden.

Weitere Informationen zu Jobs und Job-Triggern in Cloud DLP finden Sie auf der Konzeptseite Jobs und Job-Trigger.

Einen neuen Inspektionsjob erstellen

So erstellen Sie einen neuen Cloud DLP-Inspektionsjob:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Wählen Sie im Menü Erstellen die Option Job oder Job-Trigger aus.

    Klicken Sie alternativ auf die folgende Schaltfläche:

    Neuen Job erstellen

Die Seite "Job erstellen" enthält folgende Abschnitte:

Eingabedaten auswählen

Name

Geben Sie einen Namen für den Job ein. Sie können Buchstaben, Zahlen und Bindestriche verwenden. Die Benennung des Jobs ist optional. Wenn Sie keinen Namen eingeben, erhält der Job von Cloud DLP eine eindeutige Nummernkennzeichnung.

Ort

Wählen Sie im Menü Speichertyp die Art des Repositorys aus, in dem die zu suchenden Daten gespeichert sind:

  • Cloud Storage: Geben Sie entweder die URL des Buckets an, den Sie prüfen möchten, oder wählen Sie im Menü Standorttyp die Option Einschließen/Ausschließen aus und klicken Sie dann auf Durchsuchen, um zum Bucket oder Unterordner zu wechseln, den Sie prüfen möchten. Klicken Sie auf das Kästchen Ordner rekursiv scannen, um das angegebene Verzeichnis und alle enthaltenen Verzeichnisse zu prüfen. Wenn Sie nur das angegebene Verzeichnis ohne Unterverzeichnisse prüfen möchten, klicken Sie das Kästchen nicht an.
  • BigQuery: Geben Sie die IDs für das Projekt, das Dataset und die Tabelle ein, die Sie prüfen möchten.
  • Datastore: Geben Sie die IDs für das Projekt, den Namespace (optional) und die Art ein, die Sie prüfen möchten.

Probenahme

Eine Probenahme ist eine Alternative, um Ressourcen einzusparen, wenn Sie eine sehr große Datenmenge haben.

Unter Probenahme können Sie wählen, ob alle ausgewählten Daten oder ob nur ein bestimmter Prozentsatz gescannt werden soll. Die Probenahme funktioniert je nach Art des zu durchsuchenden Speicher-Repositorys unterschiedlich:

  • Bei BigQuery können Sie in einer Teilmenge der ausgewählten Zeilen suchen, je nach dem Prozentsatz an Dateien, den Sie für den Scan angeben.
  • Wenn bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht Cloud DLP diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

Wählen Sie im ersten Menü eine der folgenden Optionen aus, um die Probenahme zu aktivieren:

  • Probenahme absteigend vom Anfang: Cloud DLP startet den partiellen Scan am Anfang der Daten. Bei BigQuery beginnt der Scan in der ersten Zeile. Bei Cloud Storage beginnt der Scan am Anfang jeder Datei und wird beendet, wenn Cloud DLP bei der Suche eine festgelegte maximale Dateigröße erreicht hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Cloud DLP startet den partiellen Scan an einer zufälligen Position innerhalb der Daten. Bei BigQuery beginnt der Scan in einer zufälligen Zeile. Bei Cloud Storage wirkt sich diese Einstellung nur auf Dateien aus, die eine festgelegte maximale Größe überschreiten. Dateien, die unter dieser maximalen Dateigröße liegen, werden von Cloud DLP vollständig gescannt. Dateien über der maximalen Dateigröße werden bis zu diesem Wert gescannt.

Wenn Sie einen partiellen Scan ausführen möchten, müssen Sie außerdem auswählen, welcher Prozentsatz der Daten gescannt werden soll. Diesen Prozentsatz können Sie mit dem Schieberegler einstellen.

Erweiterte Konfiguration

Wenn Sie einen Job für eine Suche in Cloud Storage-Buckets oder BigQuery-Tabellen erstellen, können Sie die Suche durch Angabe einer erweiterten Konfiguration weiter eingrenzen. Dabei haben Sie folgende Konfigurationsoptionen:

  • Dateien (nur Cloud Storage): Die zu durchsuchenden Dateitypen, unter anderem Text-, Binär- und Bilddateien.
  • Identifizierende Felder (nur BigQuery): Eindeutige Zeilenkennzeichnungen in der Tabelle.
  • Wenn bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht Cloud DLP diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

Wählen Sie zum Aktivieren der Probenahme den Prozentsatz der Daten aus, die Sie scannen möchten. Diesen Prozentsatz können Sie mit dem Schieberegler einstellen. Wählen Sie dann im ersten Menü eine der folgenden Optionen aus:

  • Probenahme absteigend vom Anfang: Cloud DLP startet den partiellen Scan am Anfang der Daten. Bei BigQuery beginnt der Scan in der ersten Zeile. Bei Cloud Storage beginnt der Scan am Anfang jeder Datei und wird beendet, wenn Cloud DLP bei der Suche eine festgelegte maximale Dateigröße erreicht hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Cloud DLP startet den partiellen Scan an einer zufälligen Position innerhalb der Daten. Bei BigQuery beginnt der Scan in einer zufälligen Zeile. Bei Cloud Storage wirkt sich diese Einstellung nur auf Dateien aus, die eine festgelegte maximale Größe überschreiten. Dateien, die unter dieser maximalen Dateigröße liegen, werden von Cloud DLP vollständig gescannt. Dateien über der maximalen Dateigröße werden bis zu diesem Wert gescannt.

Dateien

Für Dateien, die in Cloud Storage gespeichert sind, können Sie unter Dateien angeben, welche Typen in den Scan einbezogen werden sollen.

Sie können zwischen Binär-, Text-, Bild-, Microsoft Word-, PDF- und Apache Avro-Dateien wählen. Eine umfassende Liste der Dateitypen, die von Cloud DLP in Cloud Storage-Buckets gescannt werden können, finden Sie auf der API-Referenzseite für FileType. Wenn Sie Binärdateien auswählen, sucht Cloud DLP auch in Dateitypen, die nicht erkannt wurden.

Identifizierende Felder

Für Tabellen in BigQuery können Sie Cloud DLP unter Identifying fields (Identifizierende Felder) anweisen, nur Zeilen zu scannen, die Werte in einem oder mehreren bestimmten Feldern enthalten.

Zum Hinzufügen eines Felds klicken Sie auf Add identifying field (Identifizierendes Feld hinzufügen). Geben Sie den Feldnamen ein und verwenden Sie ggf. Punkte, um verschachtelte Felder anzugeben.

Sie können beliebig viele Felder hinzufügen. Wenn Sie ein Feld entfernen möchten, klicken Sie neben dem jeweiligen Feld auf Element löschen (Papierkorbsymbol).

Erkennung konfigurieren

Im Abschnitt Erkennung konfigurieren legen Sie die Typen sensibler Daten fest, nach denen Sie suchen möchten. Das Bearbeiten dieses Abschnitts ist optional. Wenn Sie diesen Abschnitt überspringen, sucht Cloud DLP in Ihren Daten nach einem Standardsatz von infoTypes.

Vorlage

Sie können optional eine Cloud DLP-Vorlage verwenden, um zuvor angegebene Konfigurationsinformationen wiederzuverwenden.

Wenn Sie bereits eine Vorlage erstellt haben, die Sie verwenden möchten, klicken Sie in das Feld Vorlagenname, um eine Liste der vorhandenen Inspektionsvorlagen anzusehen. Geben Sie den Namen der Vorlage ein, die Sie verwenden möchten, oder wählen Sie diese aus.

Weitere Informationen zum Erstellen von Vorlagen finden Sie unter Cloud DLP-Inspektionsvorlagen erstellen.

infoTypes

infoType-Detektoren finden sensible Daten eines bestimmten Typs. Der in Cloud DLP integrierte infoType-Detektor US_SOCIAL_SECURITY_NUMBER findet beispielsweise US-amerikanische Sozialversicherungsnummern. Zusätzlich zu den integrierten infoType-Detektoren können Sie eigene benutzerdefinierte infoType-Detektoren erstellen.

Wählen Sie unter infoTypes den infoType-Detektor aus, der einem Datentyp entspricht, nach dem Sie scannen möchten. Sie können dieses Feld auch leer lassen, um nach allen Standard-infoTypes zu suchen. Weitere Informationen zu jedem Detektor finden Sie in der infoType-Detektorreferenz.

Sie können auch benutzerdefinierte infoType-Detektoren im Bereich Benutzerdefinierte infoTypes hinzufügen. Im Bereich Inspektionsregelsätze können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren anpassen.

Benutzerdefinierte infoTypes

To add a custom infoType detector:

  1. Click Add custom infoType.
  2. Choose the type of custom infoType detector you want to create:
    • Words or phrases: Matches on one or more words or phrases that you enter into the field. Use this custom infoType when you have just a few words or phrases to search for. Give your custom infoType a name, and then, under List of words or phrases, type the word or phrase you want Cloud DLP to match on. To search on multiple words or phrases, press Enter after each one. For more information, see Creating a regular custom dictionary detector.
    • Dictionary path: Searches your content for items in a list of words and phrases. The list is stored in a text file in Cloud Storage. Use this custom infoType when you have anywhere from a few to several hundred thousand words or phrases to search for. This method is also useful if your list contains sensitive elements and you don't want to store them inside of a job or template. Give your custom infoType a name, and then, under Dictionary location, enter or browse to the Cloud Storage path where the dictionary file is stored. For more information, see Creating a regular custom dictionary detector.
    • Regex: Matches content based on a regular expression. Give your custom infoType a name, and then, in the Regex field, enter a regex pattern to match words and phrases. See the supported regex syntax.
    • Stored infoType: This option adds a stored custom dictionary detector, which is a kind of dictionary detector that is built from either a large text file stored in Cloud Storage or a single column of a BigQuery table. Use this kind of custom infoType when you have anywhere from several hundred thousand to tens of millions of words or phrases to search for. Be aware that this is the only option in this menu for which you must have already created the stored infoType to use it. Give your custom infoType a name (different from the name you gave the stored infoType), and then, in the Stored infoType field, enter the name of the stored infoType. For more information about creating stored custom dictionaries, see Creating a stored custom dictionary detector.

Click Add custom infoType again to add additional custom infoType detectors.

Inspektionsregelsätze

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.

Konfidenzwert

Jedes Mal, wenn Cloud DLP eine potenzielle Übereinstimmung mit sensiblen Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von "Sehr unwahrscheinlich" bis "Sehr wahrscheinlich" zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, weisen Sie Cloud DLP an, nur Daten als Übereinstimmung anzusehen, die diesem oder einem höheren Wahrscheinlichkeitswert entsprechen.

Der Standardwert "Möglich" ist für die meisten Zwecke ausreichend. Wenn Sie regelmäßig zu viele Übereinstimmungen erhalten, können Sie den Wert über den Schieberegler erhöhen. Wenn Sie zu wenige Übereinstimmungen erhalten, verringern Sie den erforderlichen Wahrscheinlichkeitswert über den Schieberegler.

Wenn Sie fertig sind, klicken Sie auf Weiter.

Aktionen hinzufügen

Im Schritt Add actions (Aktionen hinzufügen) wählen Sie die Aktionen aus, die Cloud DLP nach Abschluss des Jobs ausführen soll.

Sie haben folgende Optionen:

  • In BigQuery speichern: Bei dieser Option werden die Ergebnisse in einer BigQuery-Tabelle gespeichert. Die in BigQuery gespeicherten Ergebnisse enthalten Details zum Speicherort der einzelnen Übereinstimmungen und zur Übereinstimmungswahrscheinlichkeit. Wenn Sie die Ergebnisse nicht speichern, enthält der abgeschlossene Job nur Statistiken zur Anzahl und zu den infoTypes der Übereinstimmungen. Wenn Sie keine Tabellen-ID angeben, weist BigQuery einer neuen Tabelle einen Standardnamen zu. Wenn Sie eine vorhandene Tabelle angeben, werden die Ergebnisse daran angehängt. Klicken Sie auf das Kästchen Kontext einschließen, um in jede Übereinstimmung kontextuellen Text aufzunehmen.
  • In Pub/Sub veröffentlichen: Bei Auswahl dieser Option wird eine Benachrichtigung an ein Cloud Pub/Sub-Thema gesendet, nachdem der Job abgeschlossen worden ist. Klicken Sie auf Neues Thema, um mindestens einen Themennamen anzugeben, in dem die Benachrichtigung veröffentlicht werden soll.
  • In der Google Cloud-Sicherheitsbefehlszentrale veröffentlichen: Bei dieser Option wird eine Zusammenfassung der Ergebnisse im Security Command Center veröffentlicht. Weitere Informationen finden Sie unter Cloud DLP-Scanergebnisse an das Security Command Center senden.
  • In Data Catalog veröffentlichen: Wählen Sie diese Option aus, um Inspektionsergebnisse an Data Catalog zu senden, den Metadatenverwaltungsdienst von Google Cloud.
  • In Stackdriver veröffentlichen: Wählen Sie diese Option aus, um Inspektionsergebnisse an Cloud Monitoring, die Operations-Suite von Google Cloud, zu senden.
  • Per E-Mail benachrichtigen: Bei dieser Option sendet Cloud DLP nach Abschluss des Jobs eine E-Mail an die Projektinhaber und -bearbeiter.

Wenn Sie fertig sind, klicken Sie auf Continue (Weiter).

Prüfen

Der Abschnitt Prüfen enthält eine Zusammenfassung der gerade angegebenen Jobeinstellungen im JSON-Format.

Klicken Sie auf Erstellen, um den Job zu erstellen und den Job einmal auszuführen (falls Sie keinen Zeitplan angegeben haben). Die Informationsseite des Jobs wird angezeigt. Sie enthält den Status und andere Informationen. Während der Job ausgeführt wird, können Sie auf die Schaltfläche Abbrechen klicken, um ihn zu stoppen. Um den Job zu löschen klicken Sie auf Löschen.

Klicken Sie in der Cloud Console auf den Pfeil Zurück, um zur Cloud DLP-Hauptseite zurückzukehren.

Protokoll

Jobs werden in der DLP API durch die Ressource DlpJobs dargestellt. Sie können einen neuen Job unter Einsatz der Methode projects.dlpJobs.create der Ressource DlpJob erstellen.

Dieses JSON-Beispiel kann in einer POST-Anfrage an den angegebenen Cloud DLP-REST-Endpunkt gesendet werden. In diesem Beispiel für JSON-Code wird veranschaulicht, wie in Cloud DLP ein Job erstellt wird. Der Job ist ein Datastore-Inspektionsscan.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Beachten Sie, dass eine erfolgreiche Anfrage, auch wenn sie im API Explorer erstellt wurde, einen Job erzeugt. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

JSON-Eingabe:

{
  "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]"
            }
          }
        }
      }
    ]
  }
}

JSON-Ausgabe:

Die folgende Ausgabe zeigt an, dass der Job erfolgreich erstellt wurde.

{
  "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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Einen neuen Job-Trigger erstellen

So erstellen Sie einen neuen Cloud DLP-Job-Trigger:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Wählen Sie im Menü Erstellen die Option Job oder Job-Trigger aus.

    Klicken Sie alternativ auf die folgende Schaltfläche:

    Neuen Job-Trigger erstellen

Die Seite "Job-Trigger erstellen" enthält folgende Abschnitte:

Eingabedaten auswählen

Name

Geben Sie einen Namen für den Job-Trigger ein. Sie können Buchstaben, Zahlen und Bindestriche verwenden. Das Benennen des Job-Triggers ist optional. Wenn Sie keinen Namen eingeben, erhält der Job-Trigger von Cloud DLP eine eindeutige Nummernkennzeichnung.

Ort

Wählen Sie im Menü Speichertyp die Art des Repositorys aus, in dem die zu suchenden Daten gespeichert sind:

  • Cloud Storage: Geben Sie entweder die URL des Buckets an, den Sie prüfen möchten, oder wählen Sie im Menü Standorttyp die Option Einschließen/Ausschließen aus und klicken Sie dann auf Durchsuchen, um zum Bucket oder Unterordner zu wechseln, den Sie prüfen möchten. Klicken Sie auf das Kästchen Ordner rekursiv scannen, um das angegebene Verzeichnis und alle enthaltenen Verzeichnisse zu prüfen. Wenn Sie nur das angegebene Verzeichnis ohne Unterverzeichnisse prüfen möchten, klicken Sie das Kästchen nicht an.
  • BigQuery: Geben Sie die IDs für das Projekt, das Dataset und die Tabelle ein, die Sie prüfen möchten.
  • Datastore: Geben Sie die IDs für das Projekt, den Namespace (optional) und die Art ein, die Sie prüfen möchten.

Probenahme

Eine Probenahme ist eine Alternative, um Ressourcen einzusparen, wenn Sie eine sehr große Datenmenge haben.

Unter Probenahme können Sie wählen, ob alle ausgewählten Daten oder ob nur ein bestimmter Prozentsatz gescannt werden soll. Die Probenahme funktioniert je nach Art des zu durchsuchenden Speicher-Repositorys unterschiedlich:

  • Bei BigQuery können Sie in einer Teilmenge der ausgewählten Zeilen suchen, je nach dem Prozentsatz an Dateien, den Sie für den Scan angeben.
  • Wenn bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht Cloud DLP diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

Wählen Sie im ersten Menü eine der folgenden Optionen aus, um die Probenahme zu aktivieren:

  • Probenahme absteigend vom Anfang: Cloud DLP startet den partiellen Scan am Anfang der Daten. Bei BigQuery beginnt der Scan in der ersten Zeile. Bei Cloud Storage beginnt der Scan am Anfang jeder Datei und wird beendet, wenn Cloud DLP bei der Suche eine festgelegte maximale Dateigröße erreicht hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Cloud DLP startet den partiellen Scan an einer zufälligen Position innerhalb der Daten. Bei BigQuery beginnt der Scan in einer zufälligen Zeile. Bei Cloud Storage wirkt sich diese Einstellung nur auf Dateien aus, die eine festgelegte maximale Größe überschreiten. Dateien, die unter dieser maximalen Dateigröße liegen, werden von Cloud DLP vollständig gescannt. Dateien über der maximalen Dateigröße werden bis zu diesem Wert gescannt.

Wenn Sie einen partiellen Scan ausführen möchten, müssen Sie außerdem auswählen, welcher Prozentsatz der Daten gescannt werden soll. Diesen Prozentsatz können Sie mit dem Schieberegler einstellen.

Erweiterte Konfiguration

Wenn Sie einen Job-Trigger erstellen, um in Cloud Storage-Buckets oder BigQuery-Tabellen zu suchen, können Sie die Suche mit einer erweiterten Konfiguration weiter eingrenzen. Dabei haben Sie folgende Konfigurationsoptionen:

  • Dateien (nur Cloud Storage): Die zu durchsuchenden Dateitypen, unter anderem Text-, Binär- und Bilddateien.
  • Identifizierende Felder (nur BigQuery): Eindeutige Zeilenkennzeichnungen in der Tabelle.
  • Wenn bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht Cloud DLP diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

Wählen Sie zum Aktivieren der Probenahme den Prozentsatz der Daten aus, die Sie scannen möchten. Diesen Prozentsatz können Sie mit dem Schieberegler einstellen. Wählen Sie dann im ersten Menü eine der folgenden Optionen aus:

  • Probenahme absteigend vom Anfang: Cloud DLP startet den partiellen Scan am Anfang der Daten. Bei BigQuery beginnt der Scan in der ersten Zeile. Bei Cloud Storage beginnt der Scan am Anfang jeder Datei und wird beendet, wenn Cloud DLP bei der Suche eine festgelegte maximale Dateigröße erreicht hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Cloud DLP startet den partiellen Scan an einer zufälligen Position innerhalb der Daten. Bei BigQuery beginnt der Scan in einer zufälligen Zeile. Bei Cloud Storage wirkt sich diese Einstellung nur auf Dateien aus, die eine festgelegte maximale Größe überschreiten. Dateien, die unter dieser maximalen Dateigröße liegen, werden von Cloud DLP vollständig gescannt. Dateien über der maximalen Dateigröße werden bis zu diesem Wert gescannt.

Dateien

Für Dateien, die in Cloud Storage gespeichert sind, können Sie unter Dateien angeben, welche Typen in den Scan einbezogen werden sollen.

Sie können zwischen Binär-, Text-, Bild-, Microsoft Word-, PDF- und Apache Avro-Dateien wählen. Eine umfassende Liste der Dateitypen, die von Cloud DLP in Cloud Storage-Buckets gescannt werden können, finden Sie auf der API-Referenzseite für FileType. Wenn Sie Binärdateien auswählen, sucht Cloud DLP auch in Dateitypen, die nicht erkannt wurden.

Identifizierende Felder

Für Tabellen in BigQuery können Sie Cloud DLP unter Identifying fields (Identifizierende Felder) anweisen, nur Zeilen zu scannen, die Werte in einem oder mehreren bestimmten Feldern enthalten.

Zum Hinzufügen eines Felds klicken Sie auf Add identifying field (Identifizierendes Feld hinzufügen). Geben Sie den Feldnamen ein und verwenden Sie ggf. Punkte, um verschachtelte Felder anzugeben.

Sie können beliebig viele Felder hinzufügen. Wenn Sie ein Feld entfernen möchten, klicken Sie neben dem jeweiligen Feld auf Element löschen (Papierkorbsymbol).

Erkennung konfigurieren

Im Abschnitt Erkennung konfigurieren legen Sie die Typen sensibler Daten fest, nach denen Sie suchen möchten. Das Bearbeiten dieses Abschnitts ist optional. Wenn Sie diesen Abschnitt überspringen, sucht Cloud DLP in Ihren Daten nach einem Standardsatz von infoTypes.

Vorlage

Sie können optional eine Cloud DLP-Vorlage verwenden, um zuvor angegebene Konfigurationsinformationen wiederzuverwenden.

Wenn Sie bereits eine Vorlage erstellt haben, die Sie verwenden möchten, klicken Sie in das Feld Vorlagenname, um eine Liste der vorhandenen Inspektionsvorlagen anzusehen. Geben Sie den Namen der Vorlage ein, die Sie verwenden möchten, oder wählen Sie diese aus.

Weitere Informationen zum Erstellen von Vorlagen finden Sie unter Cloud DLP-Inspektionsvorlagen erstellen.

infoTypes

infoType-Detektoren finden sensible Daten eines bestimmten Typs. Der in Cloud DLP integrierte infoType-Detektor US_SOCIAL_SECURITY_NUMBER findet beispielsweise US-amerikanische Sozialversicherungsnummern. Zusätzlich zu den integrierten infoType-Detektoren können Sie eigene benutzerdefinierte infoType-Detektoren erstellen.

Wählen Sie unter infoTypes den infoType-Detektor aus, der einem Datentyp entspricht, nach dem Sie scannen möchten. Sie können dieses Feld auch leer lassen, um nach allen Standard-infoTypes zu suchen. Weitere Informationen zu jedem Detektor finden Sie in der infoType-Detektorreferenz.

Sie können auch benutzerdefinierte infoType-Detektoren im Bereich Benutzerdefinierte infoTypes hinzufügen. Im Bereich Inspektionsregelsätze können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren anpassen.

Benutzerdefinierte infoTypes

To add a custom infoType detector:

  1. Click Add custom infoType.
  2. Choose the type of custom infoType detector you want to create:
    • Words or phrases: Matches on one or more words or phrases that you enter into the field. Use this custom infoType when you have just a few words or phrases to search for. Give your custom infoType a name, and then, under List of words or phrases, type the word or phrase you want Cloud DLP to match on. To search on multiple words or phrases, press Enter after each one. For more information, see Creating a regular custom dictionary detector.
    • Dictionary path: Searches your content for items in a list of words and phrases. The list is stored in a text file in Cloud Storage. Use this custom infoType when you have anywhere from a few to several hundred thousand words or phrases to search for. This method is also useful if your list contains sensitive elements and you don't want to store them inside of a job or template. Give your custom infoType a name, and then, under Dictionary location, enter or browse to the Cloud Storage path where the dictionary file is stored. For more information, see Creating a regular custom dictionary detector.
    • Regex: Matches content based on a regular expression. Give your custom infoType a name, and then, in the Regex field, enter a regex pattern to match words and phrases. See the supported regex syntax.
    • Stored infoType: This option adds a stored custom dictionary detector, which is a kind of dictionary detector that is built from either a large text file stored in Cloud Storage or a single column of a BigQuery table. Use this kind of custom infoType when you have anywhere from several hundred thousand to tens of millions of words or phrases to search for. Be aware that this is the only option in this menu for which you must have already created the stored infoType to use it. Give your custom infoType a name (different from the name you gave the stored infoType), and then, in the Stored infoType field, enter the name of the stored infoType. For more information about creating stored custom dictionaries, see Creating a stored custom dictionary detector.

Click Add custom infoType again to add additional custom infoType detectors.

Inspektionsregelsätze

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.

Konfidenzwert

Jedes Mal, wenn Cloud DLP eine potenzielle Übereinstimmung mit sensiblen Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von "Sehr unwahrscheinlich" bis "Sehr wahrscheinlich" zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, weisen Sie Cloud DLP an, nur Daten als Übereinstimmung anzusehen, die diesem oder einem höheren Wahrscheinlichkeitswert entsprechen.

Der Standardwert "Möglich" ist für die meisten Zwecke ausreichend. Wenn Sie regelmäßig zu viele Übereinstimmungen erhalten, können Sie den Wert über den Schieberegler erhöhen. Wenn Sie zu wenige Übereinstimmungen erhalten, verringern Sie den erforderlichen Wahrscheinlichkeitswert über den Schieberegler.

Wenn Sie fertig sind, klicken Sie auf Weiter.

Aktionen hinzufügen

Im Schritt Add actions (Aktionen hinzufügen) wählen Sie die Aktionen aus, die Cloud DLP nach Abschluss des Jobs ausführen soll.

Sie haben folgende Optionen:

  • In BigQuery speichern: Bei dieser Option werden die Ergebnisse in einer BigQuery-Tabelle gespeichert. Die in BigQuery gespeicherten Ergebnisse enthalten Details zum Speicherort der einzelnen Übereinstimmungen und zur Übereinstimmungswahrscheinlichkeit. Wenn Sie die Ergebnisse nicht speichern, enthält der abgeschlossene Job nur Statistiken zur Anzahl und zu den infoTypes der Übereinstimmungen. Wenn Sie keine Tabellen-ID angeben, weist BigQuery einer neuen Tabelle einen Standardnamen zu. Wenn Sie eine vorhandene Tabelle angeben, werden die Ergebnisse daran angehängt. Klicken Sie auf das Kästchen Kontext einschließen, um in jede Übereinstimmung kontextuellen Text aufzunehmen.
  • In Pub/Sub veröffentlichen: Bei Auswahl dieser Option wird eine Benachrichtigung an ein Cloud Pub/Sub-Thema gesendet, nachdem der Job abgeschlossen worden ist. Klicken Sie auf Neues Thema, um mindestens einen Themennamen anzugeben, in dem die Benachrichtigung veröffentlicht werden soll.
  • In der Google Cloud-Sicherheitsbefehlszentrale veröffentlichen: Bei dieser Option wird eine Zusammenfassung der Ergebnisse im Security Command Center veröffentlicht. Weitere Informationen finden Sie unter Cloud DLP-Scanergebnisse an das Security Command Center senden.
  • In Data Catalog veröffentlichen: Wählen Sie diese Option aus, um Inspektionsergebnisse an Data Catalog zu senden, den Metadatenverwaltungsdienst von Google Cloud.
  • In Stackdriver veröffentlichen: Wählen Sie diese Option aus, um Inspektionsergebnisse an Cloud Monitoring, die Operations-Suite von Google Cloud, zu senden.
  • Per E-Mail benachrichtigen: Bei dieser Option sendet Cloud DLP nach Abschluss des Jobs eine E-Mail an die Projektinhaber und -bearbeiter.

Wenn Sie fertig sind, klicken Sie auf Continue (Weiter).

Planen

Im Abschnitt Schedule (Planen) haben Sie zwei Möglichkeiten:

  • Specify time span (Zeitraum angeben): Mit dieser Option können Sie die zu durchsuchenden Dateien oder Zeilen nach Datum begrenzen. Klicken Sie auf Beginn, um den frühesten Zeitstempel der Dateien anzugeben, die in die Suche einbezogen werden sollen. Lassen Sie diesen Wert leer, wenn alle Dateien durchsucht werden sollen. Klicken Sie auf Ende, um den Zeitstempel der neuesten Dateien anzugeben, die einbezogen werden sollen. Wenn Sie diesen Wert leer lassen, wird kein oberes Zeitstempel-Limit festgelegt.
  • Create a trigger to run the job on a periodic schedule (Trigger zum Ausführen des Jobs nach einem regelmäßigen Zeitplan erstellen): Diese Option erstellt den Job-Trigger und legt fest, dass der von Ihnen angegebene Job nach einem periodischen Zeitplan ausgeführt wird. Der Standardwert ist die Mindestdauer: 24 Stunden. Die maximale Dauer beträgt 60 Tage. Wenn Cloud DLP nur neue Dateien oder Zeilen scannen soll, klicken Sie auf das Kästchen Scans ausschließlich auf neuen Inhalt beschränken.

Prüfen

Der Abschnitt Prüfen enthält eine Zusammenfassung der gerade angegebenen Jobeinstellungen im JSON-Format.

Klicken Sie auf Erstellen, um den Job-Trigger zu erstellen (wenn Sie einen Zeitplan angegeben haben). Die Informationsseite des Job-Triggers wird angezeigt. Sie enthält Status- und andere Informationen. Wenn der Job gerade ausgeführt wird, können Sie auf die Schaltfläche Abbrechen klicken, um ihn zu stoppen. Um den Job zu löschen klicken Sie auf Löschen.

Klicken Sie in der Cloud Console auf den Pfeil Zurück, um zur Cloud DLP-Hauptseite zurückzukehren.

Protokoll

Ein Job-Trigger wird in der DLP API durch die JobTrigger-Ressource dargestellt. Sie können einen neuen Job-Trigger mit der Methode projects.jobTriggers.create der Ressource JobTrigger erstellen.

Dieses JSON-Beispiel kann in einer POST-Anfrage an den angegebenen Cloud DLP-REST-Endpunkt gesendet werden. In diesem Beispiel für JSON-Code wird veranschaulicht, wie in Cloud DLP ein Job-Trigger erstellt wird. Der Job, den dieser Trigger auslöst, ist ein Cloud Datastore-Inspektionsscan. Der erstellte Job-Trigger wird alle 86.400 Sekunden (bzw. alle 24 Stunden) ausgeführt.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Beachten Sie, dass eine erfolgreiche Anfrage, auch wenn sie im API Explorer erstellt wurde, einen neuen geplanten Job-Trigger erzeugt. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

JSON-Eingabe:

{
  "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]"
              }
            }
          }
        }
      ]
    }
  }
}

JSON-Ausgabe:

Die folgende Ausgabe zeigt an, dass der Job-Trigger erfolgreich erstellt wurde.

{
  "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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

// 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

def create_trigger(
    project,
    bucket,
    scan_period_days,
    info_types,
    trigger_id=None,
    display_name=None,
    description=None,
    min_likelihood=None,
    max_findings=None,
    auto_populate_timespan=False,
):
    """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.
    """

    # Import the client library
    import google.cloud.dlp

    # 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 = "gs://{}/*".format(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("Successfully created trigger {}".format(response.name))

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"github.com/golang/protobuf/ptypes/duration"
	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
)

// 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: %v", 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: %v", err)
	}
	fmt.Fprintf(w, "Successfully created trigger: %v", resp.GetName())
	return nil
}

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

/**
 * Create a Data Loss Prevention API job trigger.
 */
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;

/** Uncomment and populate these variables in your code */
// $callingProjectId = 'The project ID to run the API call under';
// $bucketName = 'The name of the bucket to scan';
// $triggerId = '';   // (Optional) The name of the trigger to be created';
// $displayName = ''; // (Optional) The human-readable name to give the trigger';
// $description = ''; // (Optional) A description for the trigger to be created';
// $scanPeriod = 1; // (Optional) How often to wait between scans, in days (minimum = 1 day)
// $autoPopulateTimespan = true; // (Optional) Automatically limit scan to new content only
// $maxFindings = 0; // (Optional) The maximum number of findings to report per request (0 = server maximum)

// 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#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Alle Jobs auflisten

So listen Sie alle Jobs für das aktuelle Projekt auf:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Klicken Sie unter dem Tab Jobs und Job-Trigger auf den Tab Alle Jobs.

Die Console zeigt eine Liste aller Jobs für das aktuelle Projekt an, einschließlich Job-IDs, Status, Erstellungszeit und Endzeit. Sie können zu sämtlichen Jobs weitere Informationen abrufen, einschließlich einer Zusammenfassung der Ergebnisse, indem Sie auf die ID klicken.

Protokoll

Die Ressource DlpJob verfügt über die Methode projects.dlpJobs.list, mit der Sie alle Jobs auflisten können.

Um alle derzeit in Ihrem Projekt definierten Jobs aufzulisten, senden Sie eine GET-Anfrage an den Endpunkt dlpJobs, wie hier gezeigt:

URL:

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

In der folgenden JSON-Ausgabe wird einer der zurückgegebenen Jobs aufgelistet. Die Struktur des Jobs entspricht der Struktur der Ressource DlpJob.

JSON-Ausgabe:

{
  "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"
    },
    ...

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

// 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

def list_dlp_jobs(project, filter_string=None, job_type=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.
    """

    # Import the client library.
    import google.cloud.dlp

    # 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("Job: %s; status: %s" % (job.name, job.state.name))

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"google.golang.org/api/iterator"
	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
)

// 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: %v", 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: %v", err)
		}
		fmt.Fprintf(w, "Job %v status: %v\n", j.GetName(), j.GetState())
	}
	return nil
}

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

/**
 * List Data Loss Prevention API jobs corresponding to a given filter.
 */
use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\DlpJob\JobState;
use Google\Cloud\Dlp\V2\DlpJobType;

/** Uncomment and populate these variables in your code */
// $callingProjectId = 'The project ID to run the API call under';
// $filter = 'The filter expression to use';

// 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#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Alle Job-Trigger auflisten

So listen Sie alle Job-Trigger des aktuellen Projekts auf:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Klicken Sie unter dem Tab Jobs und Job-Trigger auf den Tab Job-Trigger.

In der Console wird eine Liste aller Job-Trigger für das aktuelle Projekt angezeigt.

Protokoll

Die Ressource JobTrigger verfügt über eine Methode projects.jobTriggers.list, mit der Sie alle Job-Trigger auflisten können.

Senden Sie eine GET-Anfrage an den Endpunkt jobTriggers, wie im Folgenden gezeigt, um alle derzeit in Ihrem Projekt definierten Job-Trigger aufzulisten:

URL:

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

Die folgende JSON-Ausgabe listet den Job-Trigger auf, den wir im vorherigen Abschnitt erstellt haben. Die Struktur des Job-Triggers entspricht der Struktur der Ressource JobTrigger.

JSON-Ausgabe:

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

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

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

main(...process.argv.slice(2));
process.on('unhandledRejection', err => {
  console.error(err.message);
  process.exitCode = 1;
});

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

def list_triggers(project):
    """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.
    """

    # Import the client library
    import google.cloud.dlp

    # 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("Trigger {}:".format(trigger.name))
        print("  Created: {}".format(trigger.create_time))
        print("  Updated: {}".format(trigger.update_time))
        if trigger.display_name:
            print("  Display Name: {}".format(trigger.display_name))
        if trigger.description:
            print("  Description: {}".format(trigger.discription))
        print("  Status: {}".format(trigger.status))
        print("  Error count: {}".format(len(trigger.errors)))

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

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

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

// 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: %v", 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: %v", err)
		}
		fmt.Fprintf(w, "Trigger %v\n", t.GetName())
		c, err := ptypes.Timestamp(t.GetCreateTime())
		if err != nil {
			return fmt.Errorf("CreateTime Timestamp: %v", 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: %v", 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

/**
 * List Data Loss Prevention API job triggers.
 */
use Google\Cloud\Dlp\V2\DlpServiceClient;

/** Uncomment and populate these variables in your code */
// $callingProjectId = 'The project ID to run the API call under';

// 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#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Job löschen

So löschen Sie einen Job aus Ihrem Projekt, der die zugehörigen Ergebnisse enthält: Alle extern gespeicherten Ergebnisse (z. B. in BigQuery) bleiben von diesem Vorgang unberührt.

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Klicken Sie unter dem Tab Jobs und Job-Trigger auf den Tab Alle Jobs. In der Google Cloud Console wird eine Liste aller Jobs für das aktuelle Projekt angezeigt.

  3. Klicken Sie in der Spalte Aktionen für den zu löschenden Job-Trigger auf das Dreipunkt-Menü  und dann auf Löschen.

Alternativ können Sie auch in der Liste der Jobs auf die ID des zu löschenden Jobs klicken. Klicken Sie auf der Detailseite des Jobs auf Löschen.

Protokoll

Wenn Sie aus Ihrem aktuellen Projekt einen Job löschen möchten, senden Sie eine DELETE-Anfrage an den Endpunkt dlpJobs, wie hier gezeigt. Ersetzen Sie das Feld [JOB-IDENTIFIER] durch die ID des Jobs, die mit i- beginnt.

URL:

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

Wenn die Anfrage erfolgreich war, gibt Cloud DLP eine entsprechende Antwort zurück. Prüfen Sie dann, ob der Job erfolgreich gelöscht wurde. Listen Sie hierzu alle Jobs auf.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

// 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

def delete_dlp_job(project, job_name):
    """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.
    """

    # Import the client library.
    import google.cloud.dlp

    # 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
)

// 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: %v", err)
	}
	defer client.Close()
	req := &dlppb.DeleteDlpJobRequest{
		Name: jobName,
	}
	if err = client.DeleteDlpJob(ctx, req); err != nil {
		return fmt.Errorf("DeleteDlpJob: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted job")
	return nil
}

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

/**
 * Delete results of a Data Loss Prevention API job
 */
use Google\Cloud\Dlp\V2\DlpServiceClient;

/** Uncomment and populate these variables in your code */
// $jobId = 'The name of the job whose results should be deleted';

// 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#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Job-Trigger löschen

So löschen Sie einen vorhandenen Job-Trigger:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Klicken Sie unter dem Tab Jobs und Job-Trigger auf den Tab Job-Trigger. In der Console wird eine Liste aller Job-Trigger für das aktuelle Projekt angezeigt.

  3. In der Spalte Aktionen für den Job-Trigger, den Sie löschen möchten, klicken Sie auf das Menü Weitere Aktionen Menü (drei vertikal angeordnete Punkte) und klicken Sie dann auf Löschen.

Alternativ können Sie in der Liste der Job-Trigger auf den Namen des Jobs klicken, den Sie löschen möchten. Auf der Detailseite des Job-Triggers klicken Sie dann auf Löschen.

Protokoll

Wenn Sie aus Ihrem aktuellen Projekt einen Job-Trigger löschen möchten, senden Sie eine DELETE-Anfrage an den Endpunkt jobTriggers, wie hier gezeigt. Ersetzen Sie dabei das Feld [JOB-TRIGGER-NAME] durch den Namen des Job-Triggers.

URL:

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

Wenn die Anfrage erfolgreich war, gibt Cloud DLP eine entsprechende Antwort zurück. Prüfen Sie dann, ob der Job-Trigger erfolgreich gelöscht wurde. Listen Sie hierzu alle Job-Trigger auf.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

// 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

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

def delete_trigger(project, trigger_id):
    """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.
    """

    # Import the client library
    import google.cloud.dlp

    # 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 = "{}/jobTriggers/{}".format(parent, trigger_id)

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

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

if __name__ == "__main__":
    default_project = os.environ.get("GOOGLE_CLOUD_PROJECT")

    parser = argparse.ArgumentParser(description=__doc__)
    subparsers = parser.add_subparsers(
        dest="action", help="Select which action to perform."
    )
    subparsers.required = True

    parser_create = subparsers.add_parser("create", help="Create a trigger.")
    parser_create.add_argument(
        "bucket", help="The name of the GCS bucket containing the file."
    )
    parser_create.add_argument(
        "scan_period_days",
        type=int,
        help="How often to repeat the scan, in days. The minimum is 1 day.",
    )
    parser_create.add_argument(
        "--trigger_id",
        help="The id of the trigger. If omitted, an id will be randomly " "generated",
    )
    parser_create.add_argument(
        "--display_name", help="The optional display name of the trigger."
    )
    parser_create.add_argument(
        "--description", help="The optional description of the trigger."
    )
    parser_create.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )
    parser_create.add_argument(
        "--info_types",
        nargs="+",
        help="Strings representing info types to look for. A full list of "
        "info categories and types is available from the API. Examples "
        'include "FIRST_NAME", "LAST_NAME", "EMAIL_ADDRESS". '
        "If unspecified, the three above examples will be used.",
        default=["FIRST_NAME", "LAST_NAME", "EMAIL_ADDRESS"],
    )
    parser_create.add_argument(
        "--min_likelihood",
        choices=[
            "LIKELIHOOD_UNSPECIFIED",
            "VERY_UNLIKELY",
            "UNLIKELY",
            "POSSIBLE",
            "LIKELY",
            "VERY_LIKELY",
        ],
        help="A string representing the minimum likelihood threshold that "
        "constitutes a match.",
    )
    parser_create.add_argument(
        "--max_findings",
        type=int,
        help="The maximum number of findings to report; 0 = no maximum.",
    )
    parser_create.add_argument(
        "--auto_populate_timespan", type=bool, help="Limit scan to new content only.",
    )

    parser_list = subparsers.add_parser("list", help="List all triggers.")
    parser_list.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )

    parser_delete = subparsers.add_parser("delete", help="Delete a trigger.")
    parser_delete.add_argument("trigger_id", help="The id of the trigger to delete.")
    parser_delete.add_argument(
        "--project",
        help="The Google Cloud project id to use as a parent resource.",
        default=default_project,
    )

    args = parser.parse_args()

    if args.action == "create":
        create_trigger(
            args.project,
            args.bucket,
            args.scan_period_days,
            args.info_types,
            trigger_id=args.trigger_id,
            display_name=args.display_name,
            description=args.description,
            min_likelihood=args.min_likelihood,
            max_findings=args.max_findings,
            auto_populate_timespan=args.auto_populate_timespan,
        )
    elif args.action == "list":
        list_triggers(args.project)
    elif args.action == "delete":
        delete_trigger(args.project, args.trigger_id)

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
)

// 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: %v", err)
	}
	defer client.Close()

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

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

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.

/**
 * Delete a Data Loss Prevention API job trigger.
 */
use Google\Cloud\Dlp\V2\DlpServiceClient;

/** Uncomment and populate these variables in your code */
// $callingProjectId = 'The project ID to run the API call under';
// $triggerId = 'The name of the trigger to be deleted.';

// 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#

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Job abrufen

So rufen Sie einen Job nebst dessen Ergebnissen aus Ihrem Projekt ab: Alle extern gespeicherten Ergebnisse (z. B. in BigQuery) bleiben von diesem Vorgang unberührt.

Protokoll

Senden Sie zum Abrufen eines Jobs aus dem aktuellen Projekt eine GET-Anfrage an den Endpunkt dlpJobs, wie hier gezeigt. Ersetzen Sie das Feld [JOB-IDENTIFIER] durch die ID des Jobs, die mit i- beginnt.

URL:

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

Wenn die Anfrage erfolgreich war, gibt Cloud DLP eine entsprechende Antwort zurück.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud DLP finden Sie unter Cloud DLP-Clientbibliotheken.


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

Vorhandenen Job-Trigger aktualisieren

Sie können Job-Trigger nicht nur erstellen, auflisten und löschen, sondern auch aktualisieren. So ändern Sie die Konfiguration eines vorhandenen Job-Triggers:

Console

  1. Öffnen Sie in der Cloud Console Cloud DLP.

    Zur Cloud DLP-UI

  2. Klicken Sie auf den Tab Job-Trigger. In der Console wird eine Liste aller Job-Trigger für das aktuelle Projekt angezeigt.

  3. Klicken Sie in der Spalte Aktionen für den Job-Trigger, den Sie löschen möchten, auf Mehr und dann auf Details ansehen.

  4. Klicken Sie auf der Detailseite des Job-Triggers auf Bearbeiten.

  5. Auf der Seite "Trigger bearbeiten" können Sie den Speicherort der Eingabedaten, Erkennungsdetails wie Vorlagen, infoTypes oder Wahrscheinlichkeit, alle nach dem Scan ausgeführten Aktionen und den Zeitplan des Job-Triggers ändern. Wenn Sie alle Änderungen vorgenommen haben, klicken Sie auf Speichern.

Protokoll

Verwenden Sie die Methode projects.jobTriggers.patch, um neue JobTrigger-Werte an die Cloud DLP API zu senden, um die betreffenden Werte innerhalb eines angegebenen Job-Triggers zu aktualisieren.

Betrachten Sie den folgenden einfachen Job-Trigger. Diese JSON-Ausgabe stellt den Job-Trigger dar und wurde zurückgegeben, nachdem eine GET-Anfrage an den Job-Trigger-Endpunkt des aktuellen Projekts gesendet wurde.

JSON-Ausgabe:

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

Wenn die folgende JSON-Eingabe mit einer PATCH-Anfrage an den angegebenen Endpunkt gesendet wird, werden der zu suchende infoType und die Mindestwahrscheinlichkeit des entsprechenden Job-Triggers aktualisiert. Dabei müssen Sie auch das updateMask-Attribut angeben und sein Wert muss im FieldMask-Format vorliegen.

JSON-Eingabe:

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

Nachdem Sie diese JSON-Eingabe an die angegebene URL gesendet haben, wird die folgende Ausgabe zurückgegeben, die den aktualisierten Job-Trigger darstellt. Beachten Sie, dass die ursprünglichen Werte für infoType und Wahrscheinlichkeit durch die neuen Werte ersetzt wurden.

JSON-Ausgabe:

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

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die Cloud DLP API finden Sie in der JSON-Kurzanleitung.

Job-Trigger verwenden

In diesem Abschnitt wird beschrieben, wie Sie mithilfe von Job-Triggern nur neue Inhalte scannen und bei jedem Upload einer Datei in Cloud Storage mithilfe von Cloud Functions Jobs auslösen können.

Scans ausschließlich auf neuen Inhalt beschränken

Sie können auch eine Option festlegen, mit der der Zeitraum für Dateien, die entweder in Cloud Storage oder BigQuery gespeichert sind, automatisch eingestellt wird. Nachdem Sie das TimespanConfig-Objekt automatisch ausgefüllt haben, scannt Cloud DLP nur Daten, die seit der letzten Ausführung des Triggers hinzugefügt oder geändert wurden:

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

Jobs beim Hochladen von Dateien auslösen

Zusätzlich zur Unterstützung von Job-Triggern, die in Cloud DLP eingebunden sind, verfügt Google Cloud über eine Vielzahl anderer Komponenten, die zum Einbinden oder Auslösen von DLP-Jobs verwendet werden können. Beispielsweise können Sie Cloud Functions verwenden, um bei jedem Hochladen einer Datei in Cloud Storage einen DLP-Scan auszulösen.

Schrittweise Anleitungen dazu finden Sie unter Klassifizierung der in Cloud Storage hochgeladenen Daten automatisieren.