Inspektionsjobs für den Schutz sensibler Daten erstellen und planen

In diesem Thema wird ausführlich beschrieben, wie Sie einen Inspektionsjob für Sensitive Data Protection erstellen und wie Sie wiederkehrende Inspektionsjobs durch Erstellen eines Job-Triggers planen. Eine kurze Anleitung zum Erstellen eines neuen Job-Triggers über die Sensitive Data Protection-Benutzeroberfläche finden Sie unter Kurzanleitung: Sensitive Data Protection-Job-Trigger erstellen.

Informationen zu Inspektionsjobs und Job-Triggern

Wenn Sensitive Data Protection einen Inspektionsscan durchführt, um sensible Daten zu identifizieren, wird jeder Scan als Job ausgeführt. Sensitive Data Protection erstellt und führt eine Jobressource aus, wenn Sie den Dienst anweisen, Ihre Google Cloud -Speicher-Repositories zu prüfen, einschließlich Cloud Storage-Buckets, BigQuery-Tabellen, Datastore-Arten und externer Daten.

Sie planen Prüfscanjobs für Sensitive Data Protection, indem Sie Job-Trigger erstellen. Ein Jobtrigger automatisiert die regelmäßige Erstellung von Sensitive Data Protection-Jobs und kann auch bei Bedarf ausgeführt werden.

Weitere Informationen zu Jobs und Job-Triggern in Sensitive Data Protection finden Sie auf der Konzeptseite Jobs und Job-Trigger.

Einen neuen Inspektionsjob erstellen

So erstellen Sie einen neuen Inspektionsjob für Sensitive Data Protection:

Console

Rufen Sie in der Google Cloud Console im Bereich „Sensitive Data Protection“ die Seite Job oder Jobtrigger erstellen auf.

Zur Seite „Job oder Job-Trigger erstellen“

Die Seite Job oder Job-Trigger erstellen enthält die folgenden 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, weist Sensitive Data Protection dem Job eine eindeutige numerische Kennung zu.

Standort

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.
  • Hybrid: Sie können erforderliche Labels, optionale Labels und Optionen für die Verarbeitung tabellarischer Daten hinzufügen. Weitere Informationen finden Sie unter Arten von Metadaten, die Sie bereitstellen können.

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 eine Datei in Cloud Storage die in Maximale Byte-Größe für den Scan pro Datei angegebene Größe überschreitet, scannt Sensitive Data Protection sie bis zu dieser maximalen Dateigröße und fährt dann mit der nächsten Datei fort.

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

  • Stichprobenerhebung von oben beginnen: Sensitive Data Protection beginnt den Teilscan am Anfang der Daten. Bei BigQuery beginnt der Scan in der ersten Zeile. In Cloud Storage wird der Scan am Anfang jeder Datei gestartet und beendet, sobald Sensitive Data Protection die angegebene maximale Dateigröße erreicht hat.
  • Probenahme an zufälliger Position beginnen: Sensitive Data Protection startet den Teilscan 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. Sensitive Data Protection scannt Dateien, die die maximale Dateigröße nicht überschreiten, vollständig. Dateien, die die maximale Dateigröße überschreiten, werden bis zur maximalen Dateigröße 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.

Sie können die zu scannenden Dateien oder Datensätze auch nach Datum eingrenzen. Weitere Informationen finden Sie weiter unten in diesem Thema unter Zeitplan.

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 eine Datei in Cloud Storage die in Maximale Byte-Größe für den Scan pro Datei angegebene Größe überschreitet, scannt Sensitive Data Protection sie bis zu dieser maximalen Dateigröße und fährt dann mit der nächsten Datei fort.

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:

  • Stichprobenerhebung von oben beginnen: Sensitive Data Protection beginnt den Teilscan 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, sobald Sensitive Data Protection bis zur angegebenen maximalen Dateigröße gescannt hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Sensitive Data Protection startet den Teilscan 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. Sensitive Data Protection scannt Dateien, die die maximale Dateigröße nicht überschreiten, vollständig. Dateien, die die maximale Dateigröße überschreiten, werden bis zur maximalen Dateigröße 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-, CSV-, TSV-, Microsoft Word-, Microsoft Excel-, Microsoft PowerPoint-, PDF- und Apache Avro-Dateien wählen. Eine vollständige Liste der Dateiendungen, die Sensitive Data Protection in Cloud Storage-Buckets scannen kann, finden Sie unter FileType. Wenn Sie Binär auswählen, werden Dateien mit nicht erkannten Dateitypen von Sensitive Data Protection gescannt.

Identifizierende Felder

Bei Tabellen in BigQuery können Sie im Feld Identifizierende Felder Sensitive Data Protection anweisen, die Werte der Primärschlüsselspalten der Tabelle in die Ergebnisse aufzunehmen. So können Sie die Ergebnisse mit den Tabellenzeilen verknüpfen, die sie enthalten.

Geben Sie die Namen der Spalten ein, die jede Zeile in der Tabelle eindeutig identifizieren. Verwenden Sie bei Bedarf die Punktnotation, um verschachtelte Felder anzugeben. Sie können beliebig viele Felder hinzufügen.

Sie müssen auch die Aktion In BigQuery speichern aktivieren, um die Ergebnisse nach BigQuery zu exportieren. Wenn die Ergebnisse nach BigQuery exportiert werden, enthält jedes Ergebnis die entsprechenden Werte der identifizierenden Felder. Weitere Informationen finden Sie unter identifyingFields.

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, scannt Sensitive Data Protection Ihre Daten nach einem Standardsatz von infoTypes.

Vorlage

Optional können Sie eine Vorlage für Sensitive Data Protection 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 Inspektionsvorlagen für Sensitive Data Protection erstellen.

infoTypes

infoType-Detektoren finden sensible Daten eines bestimmten Typs. Der integrierte infoType-Detektor US_SOCIAL_SECURITY_NUMBER von Sensitive Data Protection findet beispielsweise US-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. Wir empfehlen, diesen Abschnitt nicht leer zu lassen. In diesem Fall scannt Sensitive Data Protection Ihre Daten mit einem Standardsatz von infoTypes, der möglicherweise auch infoTypes enthält, die Sie nicht benötigen. Weitere Informationen zu den einzelnen Detektoren finden Sie in der InfoType-Detektorreferenz.

Weitere Informationen zum Verwalten von integrierten und benutzerdefinierten infoTypes in diesem Abschnitt finden Sie unter infoTypes über die Google Cloud Console verwalten.

Prüfregelsätze

Mit Prüfregelsets können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren mithilfe von Kontextregeln anpassen. Es gibt folgende Arten von Prüfregeln:

  • Ausschlussregeln, mit denen Sie falsche oder unerwünschte Ergebnisse ausschließen können.
  • Hotword-Regeln, mit denen zusätzliche Ergebnisse erkannt werden können.
  • Anpassungsregeln, die die Wahrscheinlichkeit von Ergebnissen basierend auf dem Kontext anpassen, in dem sie auftreten.

Wenn Sie einen neuen Regelsatz hinzufügen möchten, geben Sie zuerst im Abschnitt InfoTypes einen oder mehrere integrierte oder benutzerdefinierte infoType-Detektoren an. Wählen Sie alle infoType-Detektoren aus, die von Ihren Regelsätzen geändert werden (die Ziel-infoTypes) oder für die Bewertung verwendet werden (die Kontext-infoTypes). Gehen Sie anschließend so vor:

  1. Klicken Sie auf Regelsatz hinzufügen.
  2. Wählen Sie im Feld Ziel-infoTypes auswählen die infoTypes aus, die vom Regelset geändert werden, wenn die Regeln erfüllt sind.
  3. Klicken Sie auf Regel hinzufügen, um ein Menü mit Optionen zu öffnen, darunter Hotword-Regel, Ausschlussregel und Anpassungsregel.

Wenn Sie eine Hotword-Regel erstellen möchten, wählen Sie Hotword-Regel aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Hotword einen regulären Ausdruck ein, nach dem Sensitive Data Protection suchen soll.
  2. Wählen Sie im Menü Hotword-Nähe aus, ob das eingegebene Hotword vor oder nach dem ausgewählten infoType gefunden wird.
  3. Geben Sie unter Hotword-Abstand von infoType die ungefähre Anzahl der Zeichen zwischen dem Hotword und dem ausgewählten infoType ein.
  4. Wählen Sie unter Anpassung des Konfidenzniveaus aus, ob Übereinstimmungen ein festes Wahrscheinlichkeitsniveau zugewiesen werden soll oder ob das Standardwahrscheinlichkeitsniveau um einen bestimmten Betrag erhöht oder verringert werden soll.

Wählen Sie zum Erstellen einer Ausschlussregel Ausschlussregel und den Typ der zu erstellenden Ausschlussregel aus, z. B. Regulärer Ausdruck. Gehen Sie anschließend so vor:

  1. Geben Sie je nach ausgewähltem Ausschlussregeltyp den regulären Ausdruck, die Wortgruppe, das Hotword oder den Kontext-infoType ein, der gefunden werden muss, damit die Regel angewendet wird.
  2. Legen Sie je nach ausgewähltem Ausschlussregeltyp den Übereinstimmungstyp oder den Typ der Bildcontainment fest:
    • Wenn Sie eine textbasierte Ausschlussregel ausgewählt haben, wählen Sie einen der folgenden Übereinstimmungstypen aus:
      • Vollständige Übereinstimmung: Das Ergebnis muss vollständig mit dem von Ihnen angegebenen Text oder Kontext-infoType übereinstimmen.
      • Teilweise Übereinstimmung: Ein Teilstring des Ergebnisses muss mit dem von Ihnen angegebenen Text- oder Kontext-infoType übereinstimmen.
      • Inverses Ergebnis: Das Ergebnis darf nicht mit dem von Ihnen angegebenen Text oder Kontext-infoType übereinstimmen.
    • Wenn Sie eine bildbasierte Ausschlussregel ausgewählt haben, wählen Sie die erforderliche räumliche Beziehung zwischen den Ziel- und Kontext-infoTypes aus. Wenn Sie beispielsweise Umschließt auswählen, muss das Kontext-Ergebnis das Ziel-Ergebnis umschließen, damit die Regel angewendet wird.

Wenn Sie eine Anpassungsregel erstellen möchten, wählen Sie Anpassungsregel und den Typ der Anpassungsregel aus, z. B. Anhand von Bildergebnissen anpassen. Gehen Sie anschließend so vor:

  1. Wählen Sie im Feld Kontext-infoTypes die infoType-Detektoren aus, die Kontext für das Zielergebnis liefern. Sensitive Data Protection verwendet Kontext-infoTypes, um zu beurteilen, ob der Ziel-infoType angepasst werden muss.
  2. Wählen Sie im Feld Mindestwahrscheinlichkeit die niedrigste Wahrscheinlichkeitsstufe aus, die die Kontext-infoTypes haben können, damit die Anpassungsregel ausgelöst wird. Wenn der Wahrscheinlichkeitswert eines erkannten Kontextergebnisses unter diesem Wert liegt, passt Sensitive Data Protection die Wahrscheinlichkeit des Zielergebnisses nicht an.
  3. Wählen Sie für Bildergebnisse im Feld Image containment type (Bildcontainment-Typ) die erforderliche räumliche Beziehung zwischen den Ziel- und Kontext-infoTypes aus. Wenn Sie beispielsweise Umschließt auswählen, muss das Kontext-Ergebnis das Ziel-Ergebnis umschließen, damit die Regel angewendet wird.
  4. Wählen Sie im Feld Wahrscheinlichkeit die neue Wahrscheinlichkeitsstufe aus, die dem Zielergebnis zugewiesen werden soll.

Sie können weitere Regelsätze hinzufügen, um die Scanergebnisse weiter zu verfeinern.

Konfidenzwert

Jedes Mal, wenn Sensitive Data Protection eine potenzielle Übereinstimmung für sensible Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von „Sehr unwahrscheinlich“ bis „Sehr wahrscheinlich“ zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, weisen Sie Sensitive Data Protection an, nur Daten abzugleichen, die diesem Wahrscheinlichkeitswert oder einem höheren Wert 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

Wählen Sie unter Aktionen hinzufügen eine oder mehrere Aktionen aus, die Sensitive Data Protection nach Abschluss des Jobs ausführen soll. Weitere Informationen finden Sie unter Aktionen für die Prüfung oder Risikoanalyse aktivieren.

Nachdem Sie die Aktionen ausgewählt haben, klicken Sie auf Weiter.

Überprü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 den Button Abbrechen klicken, um ihn zu stoppen. Um den Job zu löschen klicken Sie auf Löschen.

Klicken Sie in der Google Cloud -Konsole auf den Pfeil Zurück, um zur Hauptseite von Sensitive Data Protection zurückzukehren.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

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

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

        return response;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

	ctx := context.Background()

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

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

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

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

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

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

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

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

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

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

public class JobsCreate {

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

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

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

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

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

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

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

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

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

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

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

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

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

jobsCreate();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

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

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

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import google.cloud.dlp


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

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

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

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

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

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

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

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

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

REST

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.

Diese JSON-Beispielanfrage kann in einer POST-Anfrage an den angegebenen REST-Endpunkt von Sensitive Data Protection gesendet werden. In diesem JSON-Beispiel wird gezeigt, wie Sie einen Job in Sensitive Data Protection erstellen. 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 zur Verwendung von JSON zum Senden von Anfragen an die 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"
}

Einen neuen Job-Trigger erstellen

So erstellen Sie einen neuen Jobtrigger für Sensitive Data Protection:

Console

Rufen Sie in der Google Cloud Console im Bereich „Sensitive Data Protection“ die Seite Job oder Jobtrigger erstellen auf.

Zur Seite „Job oder Job-Trigger erstellen“

Die Seite Job oder Job-Trigger erstellen enthält die folgenden 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, weist Sensitive Data Protection dem Jobtrigger eine eindeutige numerische Kennung zu.

Standort

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 eine Datei in Cloud Storage die in Maximale Byte-Größe für den Scan pro Datei angegebene Größe überschreitet, scannt Sensitive Data Protection sie bis zu dieser maximalen Dateigröße und fährt dann mit der nächsten Datei fort.

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

  • Stichprobenerhebung von oben beginnen: Sensitive Data Protection beginnt den Teilscan 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, sobald Sensitive Data Protection bis zur angegebenen maximalen Dateigröße gescannt hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Sensitive Data Protection startet den Teilscan 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. Sensitive Data Protection scannt Dateien, die die maximale Dateigröße nicht überschreiten, vollständig. Dateien, die die maximale Dateigröße überschreiten, werden bis zur maximalen Dateigröße 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 eine Datei in Cloud Storage die in Maximale Byte-Größe für den Scan pro Datei angegebene Größe überschreitet, scannt Sensitive Data Protection sie bis zu dieser maximalen Dateigröße und fährt dann mit der nächsten Datei fort.

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:

  • Stichprobenerhebung von oben beginnen: Sensitive Data Protection beginnt den Teilscan 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, sobald Sensitive Data Protection bis zur angegebenen maximalen Dateigröße gescannt hat (siehe oben).
  • Probenahme an zufälliger Position beginnen: Sensitive Data Protection startet den Teilscan 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. Sensitive Data Protection scannt Dateien, die die maximale Dateigröße nicht überschreiten, vollständig. Dateien, die die maximale Dateigröße überschreiten, werden bis zur maximalen Dateigröße 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-, Microsoft Excel-, Microsoft PowerPoint-, PDF- und Apache Avro-Dateien wählen. Eine vollständige Liste der Dateiendungen, die Sensitive Data Protection in Cloud Storage-Buckets scannen kann, finden Sie unter FileType. Wenn Sie Binär auswählen, werden Dateien mit nicht erkannten Dateitypen von Sensitive Data Protection gescannt.

Identifizierende Felder

Bei Tabellen in BigQuery können Sie im Feld Identifizierende Felder Sensitive Data Protection anweisen, die Werte der Primärschlüsselspalten der Tabelle in die Ergebnisse aufzunehmen. So können Sie die Ergebnisse mit den Tabellenzeilen verknüpfen, die sie enthalten.

Geben Sie die Namen der Spalten ein, die jede Zeile in der Tabelle eindeutig identifizieren. Verwenden Sie bei Bedarf die Punktnotation, um verschachtelte Felder anzugeben. Sie können beliebig viele Felder hinzufügen.

Sie müssen auch die Aktion In BigQuery speichern aktivieren, um die Ergebnisse nach BigQuery zu exportieren. Wenn die Ergebnisse nach BigQuery exportiert werden, enthält jedes Ergebnis die entsprechenden Werte der identifizierenden Felder. Weitere Informationen finden Sie unter identifyingFields.

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, scannt Sensitive Data Protection Ihre Daten nach einem Standardsatz von infoTypes.

Vorlage

Optional können Sie eine Vorlage für Sensitive Data Protection 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 Inspektionsvorlagen für Sensitive Data Protection erstellen.

infoTypes

infoType-Detektoren finden sensible Daten eines bestimmten Typs. Der integrierte infoType-Detektor US_SOCIAL_SECURITY_NUMBER von Sensitive Data Protection findet beispielsweise US-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

Informationen zum Hinzufügen benutzerdefinierter infoTypes finden Sie unter Benutzerdefinierte infoTypes hinzufügen.

Prüfregelsätze

Mit Prüfregelsets können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren mithilfe von Kontextregeln anpassen. Es gibt folgende Arten von Prüfregeln:

  • Ausschlussregeln, mit denen Sie falsche oder unerwünschte Ergebnisse ausschließen können.
  • Hotword-Regeln, mit denen zusätzliche Ergebnisse erkannt werden können.
  • Anpassungsregeln, die die Wahrscheinlichkeit von Ergebnissen basierend auf dem Kontext anpassen, in dem sie auftreten.

Wenn Sie einen neuen Regelsatz hinzufügen möchten, geben Sie zuerst im Abschnitt InfoTypes einen oder mehrere integrierte oder benutzerdefinierte infoType-Detektoren an. Wählen Sie alle infoType-Detektoren aus, die von Ihren Regelsätzen geändert werden (die Ziel-infoTypes) oder für die Bewertung verwendet werden (die Kontext-infoTypes). Gehen Sie anschließend so vor:

  1. Klicken Sie auf Regelsatz hinzufügen.
  2. Wählen Sie im Feld Ziel-infoTypes auswählen die infoTypes aus, die vom Regelset geändert werden, wenn die Regeln erfüllt sind.
  3. Klicken Sie auf Regel hinzufügen, um ein Menü mit Optionen zu öffnen, darunter Hotword-Regel, Ausschlussregel und Anpassungsregel.

Wenn Sie eine Hotword-Regel erstellen möchten, wählen Sie Hotword-Regel aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Hotword einen regulären Ausdruck ein, nach dem Sensitive Data Protection suchen soll.
  2. Wählen Sie im Menü Hotword-Nähe aus, ob das eingegebene Hotword vor oder nach dem ausgewählten infoType gefunden wird.
  3. Geben Sie unter Hotword-Abstand von infoType die ungefähre Anzahl der Zeichen zwischen dem Hotword und dem ausgewählten infoType ein.
  4. Wählen Sie unter Anpassung des Konfidenzniveaus aus, ob Übereinstimmungen ein festes Wahrscheinlichkeitsniveau zugewiesen werden soll oder ob das Standardwahrscheinlichkeitsniveau um einen bestimmten Betrag erhöht oder verringert werden soll.

Wählen Sie zum Erstellen einer Ausschlussregel Ausschlussregel und den Typ der zu erstellenden Ausschlussregel aus, z. B. Regulärer Ausdruck. Gehen Sie anschließend so vor:

  1. Geben Sie je nach ausgewähltem Ausschlussregeltyp den regulären Ausdruck, die Wortgruppe, das Hotword oder den Kontext-infoType ein, der gefunden werden muss, damit die Regel angewendet wird.
  2. Legen Sie je nach ausgewähltem Ausschlussregeltyp den Übereinstimmungstyp oder den Typ der Bildcontainment fest:
    • Wenn Sie eine textbasierte Ausschlussregel ausgewählt haben, wählen Sie einen der folgenden Übereinstimmungstypen aus:
      • Vollständige Übereinstimmung: Das Ergebnis muss vollständig mit dem von Ihnen angegebenen Text oder Kontext-infoType übereinstimmen.
      • Teilweise Übereinstimmung: Ein Teilstring des Ergebnisses muss mit dem von Ihnen angegebenen Text- oder Kontext-infoType übereinstimmen.
      • Inverses Ergebnis: Das Ergebnis darf nicht mit dem von Ihnen angegebenen Text oder Kontext-infoType übereinstimmen.
    • Wenn Sie eine bildbasierte Ausschlussregel ausgewählt haben, wählen Sie die erforderliche räumliche Beziehung zwischen den Ziel- und Kontext-infoTypes aus. Wenn Sie beispielsweise Umschließt auswählen, muss das Kontext-Ergebnis das Ziel-Ergebnis umschließen, damit die Regel angewendet wird.

Wenn Sie eine Anpassungsregel erstellen möchten, wählen Sie Anpassungsregel und den Typ der Anpassungsregel aus, z. B. Anhand von Bildergebnissen anpassen. Gehen Sie anschließend so vor:

  1. Wählen Sie im Feld Kontext-infoTypes die infoType-Detektoren aus, die Kontext für das Zielergebnis liefern. Sensitive Data Protection verwendet Kontext-infoTypes, um zu beurteilen, ob der Ziel-infoType angepasst werden muss.
  2. Wählen Sie im Feld Mindestwahrscheinlichkeit die niedrigste Wahrscheinlichkeitsstufe aus, die die Kontext-infoTypes haben können, damit die Anpassungsregel ausgelöst wird. Wenn der Wahrscheinlichkeitswert eines erkannten Kontextergebnisses unter diesem Wert liegt, passt Sensitive Data Protection die Wahrscheinlichkeit des Zielergebnisses nicht an.
  3. Wählen Sie für Bildergebnisse im Feld Image containment type (Bildcontainment-Typ) die erforderliche räumliche Beziehung zwischen den Ziel- und Kontext-infoTypes aus. Wenn Sie beispielsweise Umschließt auswählen, muss das Kontext-Ergebnis das Ziel-Ergebnis umschließen, damit die Regel angewendet wird.
  4. Wählen Sie im Feld Wahrscheinlichkeit die neue Wahrscheinlichkeitsstufe aus, die dem Zielergebnis zugewiesen werden soll.

Sie können weitere Regelsätze hinzufügen, um die Scanergebnisse weiter zu verfeinern.

Konfidenzwert

Jedes Mal, wenn Sensitive Data Protection eine potenzielle Übereinstimmung für sensible Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von „Sehr unwahrscheinlich“ bis „Sehr wahrscheinlich“ zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, weisen Sie Sensitive Data Protection an, nur Daten abzugleichen, die diesem Wahrscheinlichkeitswert oder einem höheren Wert 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

Wählen Sie unter Aktionen hinzufügen eine oder mehrere Aktionen aus, die Sensitive Data Protection nach Abschluss des Jobs ausführen soll. Weitere Informationen finden Sie unter Aktionen für die Prüfung oder Risikoanalyse aktivieren.

Nachdem Sie die Aktionen ausgewählt haben, klicken Sie auf Weiter.

Zeitplan

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.
  • Trigger zum Ausführen des Jobs nach einem regelmäßigen Zeitplan erstellen: Mit dieser Option wird der Job in einen Jobtrigger umgewandelt, der nach einem regelmäßigen Zeitplan ausgeführt wird. Wenn Sie keinen Zeitplan angeben, erstellen Sie einen einzelnen Job, der sofort gestartet und einmal ausgeführt wird. Wenn Sie einen Jobtrigger erstellen möchten, der regelmäßig ausgeführt wird, müssen Sie diese Option festlegen.

    Der Standardwert ist die Mindestdauer: 24 Stunden. Der Höchstwert beträgt 60 Tage.

    Wenn Sie möchten, dass Sensitive Data Protection nur neue Dateien oder Zeilen scannt, wählen Sie Scans nur auf neue Inhalte beschränken aus. Bei der BigQuery-Prüfung werden nur Zeilen, die mindestens drei Stunden alt sind, in den Scan einbezogen. Weitere Informationen finden Sie unter Bekannte Probleme.

Überprü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 den Button Abbrechen klicken, um ihn zu stoppen. Um den Job zu löschen klicken Sie auf Löschen.

Klicken Sie in der Google Cloud -Konsole auf den Pfeil Zurück, um zur Hauptseite von Sensitive Data Protection zurückzukehren.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

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

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

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

	ctx := context.Background()

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

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

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

createTrigger();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from typing import Optional

import google.cloud.dlp


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

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

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

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

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

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

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

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

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

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

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

REST

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.

Diese JSON-Beispielanfrage kann in einer POST-Anfrage an den angegebenen REST-Endpunkt von Sensitive Data Protection gesendet werden. In diesem JSON-Beispiel wird gezeigt, wie Sie einen Jobtrigger in Sensitive Data Protection erstellen. 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 zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

JSON-Eingabe:

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

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 an inspection of a Datastore kind",
  "inspectJob":{
    "storageConfig":{
      "datastoreOptions":{
        "partitionId":{
          "projectId":"[PROJECT_ID]",
          "namespaceId":"[NAMESPACE_ID]"
        },
        "kind":{
          "name":"Example-Kind"
        }
      }
    },
    "inspectConfig":{
      "infoTypes":[
        {
          "name":"PHONE_NUMBER"
        }
      ],
      "minLikelihood":"LIKELY",
      "limits":{

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

Alle Jobs auflisten

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

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Sensitive Data Protection“ auf.

    Gehen Sie zu Sensitive Data Protection

  2. Klicken Sie auf den Tab Prüfung und dann auf den Untertab Inspektionsjobs.

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.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

        return response;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

listJobs();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


from typing import Optional

import google.cloud.dlp


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

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

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

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

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

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

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

REST

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 zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

Alle Job-Trigger auflisten

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

Console

Rufen Sie in der Google Cloud Console die Seite „Sensitive Data Protection“ auf.

Gehen Sie zu Sensitive Data Protection

Auf dem Tab Prüfung wird auf dem Untertab Jobtrigger in der Console eine Liste aller Jobtrigger für das aktuelle Projekt angezeigt.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

        return response;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

	ctx := context.Background()

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

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

	return nil
}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

listTriggers();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import google.cloud.dlp


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

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

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

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

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

REST

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 an inspection of a Datastore kind",
      "inspectJob":{
        "storageConfig":{
          "datastoreOptions":{
            "partitionId":{
              "projectId":"[PROJECT_ID]",
              "namespaceId":"[NAMESPACE_ID]"
            },
            "kind":{
              "name":"Example-Kind"
            }
          }
        },
        "inspectConfig":{
          "infoTypes":[
            {
              "name":"PHONE_NUMBER"
            }
          ],
          "minLikelihood":"LIKELY",
          "limits":{

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

    ...

],
  "nextPageToken":"KkwKCQjivJ2UpPreAgo_Kj1wcm9qZWN0cy92ZWx2ZXR5LXN0dWR5LTE5NjEwMS9qb2JUcmlnZ2Vycy8xNTA5NzEyOTczMDI0MDc1NzY0"
}

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

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. Rufen Sie in der Google Cloud Console die Seite „Sensitive Data Protection“ auf.

    Gehen Sie zu Sensitive Data Protection

  2. Klicken Sie auf den Tab Prüfung und dann auf den Untertab Inspektionsjobs. In der Google Cloud -Console wird eine Liste aller Jobs 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 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.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

deleteJob();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import google.cloud.dlp


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

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

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

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

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

    print(f"Successfully deleted {job_name}")

REST

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 die DLP API eine Erfolgsantwort 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 zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

Job-Trigger löschen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Sensitive Data Protection“ auf.

    Gehen Sie zu Sensitive Data Protection

    Auf dem Tab Prüfung wird auf dem Untertab Jobtrigger in der Console eine Liste aller Jobtrigger für das aktuelle Projekt angezeigt.

  2. 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.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

public class TriggersDelete
{

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

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

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

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

	ctx := context.Background()

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

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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 Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

deleteTrigger();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import google.cloud.dlp


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

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

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

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

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

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

REST

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 die DLP API eine Erfolgsantwort 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 zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

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.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

        var response = dlp.GetDlpJob(jobName);

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

        return response;
    }
}

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

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

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

	ctx := context.Background()

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

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

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

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

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

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

public class JobsGet {

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

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

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

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

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

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

getJob();

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import google.cloud.dlp


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

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

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

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

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

REST

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 die DLP API eine Erfolgsantwort zurück.

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Allgemeine Informationen zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

Sofortige Ausführung eines Jobtriggers erzwingen

Nachdem ein Jobtrigger erstellt wurde, können Sie eine sofortige Ausführung des Triggers zu Testzwecken erzwingen, indem Sie ihn aktivieren. Führen Sie dazu folgenden Befehl aus:

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Google Cloud-Projekts, dem die mit der Anfrage verbundenen Zugriffsgebühren in Rechnung gestellt werden sollen.
  • JOB_TRIGGER_NAME: der vollständige Ressourcenname des Job-Triggers, z. B. projects/my-project/locations/global/jobTriggers/123456789.

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. Rufen Sie in der Google Cloud Console die Seite „Sensitive Data Protection“ auf.

    Gehen Sie zu Sensitive Data Protection

  2. Klicken Sie auf den Tab Prüfung und dann auf den Untertab 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.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

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

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

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

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

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import (
	"context"
	"fmt"
	"io"

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

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

	ctx := context.Background()

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

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

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

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

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

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

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

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

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

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

}

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

public class TriggersPatch {

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

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

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

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

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

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

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

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

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

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

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

Node.js

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

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

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

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

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

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

PHP

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

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

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

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

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

    // Send the update job trigger request and process the response.
    $name = "projects/$callingProjectId/locations/global/jobTriggers/" . $jobTriggerName;
    $updateJobTriggerRequest = (new UpdateJobTriggerRequest())
        ->setName($name)
        ->setJobTrigger($jobTrigger)
        ->setUpdateMask($fieldMask);

    $response = $dlp->updateJobTrigger($updateJobTriggerRequest);

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für Sensitive Data Protection finden Sie unter Sensitive Data Protection-Clientbibliotheken.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Sensitive Data Protection zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

from typing import List

import google.cloud.dlp


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

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

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

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

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

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

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

REST

Verwenden Sie die Methode projects.jobTriggers.patch, um neue JobTrigger-Werte an die DLP API zu senden und diese 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 zur Verwendung von JSON zum Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

Joblatenz

Für Jobs und Job-Trigger werden keine Service Level Objectives (SLO) garantiert. Die Latenz wird von mehreren Faktoren beeinflusst, darunter die Menge der zu scannenden Daten, das gescannte Speicher-Repository, die Art und Anzahl der infoTypes, nach denen Sie suchen, die Region, in der der Job verarbeitet wird, und die in dieser Region verfügbaren Rechenressourcen. Daher kann die Latenz von Inspektionsjobs nicht im Voraus bestimmt werden.

Versuchen Sie Folgendes, um die Joblatenz zu reduzieren:

  • Wenn für Ihren Job oder Jobtrigger Stichproben verfügbar sind, aktivieren Sie diese.
  • Aktivieren Sie keine infoTypes, die Sie nicht benötigen. Die folgenden infoTypes sind zwar in bestimmten Szenarien nützlich, können aber dazu führen, dass Anfragen viel langsamer ausgeführt werden als Anfragen, die sie nicht enthalten:

    • PERSON_NAME
    • FEMALE_NAME
    • MALE_NAME
    • FIRST_NAME
    • LAST_NAME
    • DATE_OF_BIRTH
    • LOCATION
    • STREET_ADDRESS
    • ORGANIZATION_NAME
  • Geben Sie infoTypes immer explizit an. Verwenden Sie keine leere infoTypes-Liste.

  • Verwenden Sie nach Möglichkeit eine andere Verarbeitungsregion.

Wenn Sie nach dem Ausprobieren dieser Techniken immer noch Latenzprobleme mit Jobs haben, sollten Sie anstelle von Jobs content.inspect- oder content.deidentify-Anfragen verwenden. Diese Methoden sind im Service Level Agreement abgedeckt. Weitere Informationen finden Sie im Service Level Agreement für Sensitive Data Protection.

Scans ausschließlich auf neuen Inhalt beschränken

Sie können Ihren Jobtrigger so konfigurieren, dass das Datum der Zeitspanne für Dateien, die in Cloud Storage oder BigQuery gespeichert sind, automatisch festgelegt wird. Wenn Sie das Objekt TimespanConfig auf „Automatisch ausfüllen“ festlegen, scannt Sensitive Data Protection 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
      }
...

Bei der BigQuery-Prüfung werden nur Zeilen, die mindestens drei Stunden alt sind, in den Scan einbezogen. Sehen Sie sich das bekannte Problem im Zusammenhang mit diesem Vorgang an.

Jobs beim Hochladen von Dateien auslösen

Zusätzlich zur Unterstützung von Jobtriggern, die in Sensitive Data Protection integriert ist, bietetGoogle Cloud auch eine Vielzahl anderer Komponenten, mit denen Sie Sensitive Data Protection-Jobs einbinden oder auslösen können. Sie können beispielsweise Cloud Run-Funktionen verwenden, um jedes Mal, wenn eine Datei in Cloud Storage hochgeladen wird, einen Sensitive Data Protection-Scan auszulösen.

Informationen zum Einrichten dieses Vorgangs finden Sie unter Klassifizierung der in Cloud Storage hochgeladenen Daten automatisieren.

Erfolgreiche Jobs ohne geprüfte Daten

Ein Job kann erfolgreich abgeschlossen werden, auch wenn keine Daten gescannt wurden. Dies kann in den folgenden Beispielszenarien passieren:

  • Der Job ist so konfiguriert, dass er ein bestimmtes Daten-Asset wie eine Datei prüft, das zwar vorhanden, aber leer ist.
  • Der Job ist so konfiguriert, dass ein Daten-Asset geprüft wird, das nicht oder nicht mehr vorhanden ist.
  • Der Job ist so konfiguriert, dass er einen leeren Cloud Storage-Bucket prüft.
  • Der Job ist so konfiguriert, dass ein Bucket geprüft wird. Das rekursive Scannen ist deaktiviert. Auf der obersten Ebene enthält der Bucket nur Ordner, die wiederum die Dateien enthalten.
  • Der Job ist so konfiguriert, dass nur ein bestimmter Dateityp in einem Bucket geprüft wird, aber der Bucket enthält keine Dateien dieses Typs.
  • Der Job ist so konfiguriert, dass nur neue Inhalte geprüft werden, aber nach der letzten Ausführung des Jobs gab es keine Aktualisierungen.

In der Google Cloud Console wird auf der Seite Jobdetails im Feld Gescannte Byte angegeben, wie viele Daten vom Job geprüft wurden. In der DLP API gibt das Feld processedBytes an, wie viele Daten geprüft wurden.

Nächste Schritte