Inspektionsjobs für den Schutz sensibler Daten erstellen und planen

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

Informationen zu Inspektionsjobs und Job-Triggern

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

Sie planen Scanjobs für die Prüfung auf sensible Daten durch Erstellen von Job-Triggern. Ein Job-Trigger automatisiert die Erstellung von Sensitive Data Protection-Jobs regelmäßig und kann auch on demand ausgeführt werden.

Weitere Informationen zu Jobs und Job-Triggern beim Schutz sensibler Daten finden Sie auf der Konzeptseite Jobs und Job-Trigger.

Einen neuen Inspektionsjob erstellen

So erstellen Sie einen neuen Job für den Schutz sensibler Daten:

Console

Rufen Sie in der Google Cloud Console im Bereich „Schutz sensibler Daten“ 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, erhält der Job vom Schutz sensibler Daten eine eindeutige Nummernkennzeichnung.

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 bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht der Schutz sensibler Daten diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

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

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

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

Sie können die zu durchsuchenden Dateien oder Datensätze auch nach Datum begrenzen. Weitere Informationen finden Sie weiter unten in diesem Thema unter „Planen“.

Erweiterte Konfiguration

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

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

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

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

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

Sie können zwischen Binär-, Text-, Bild-, CSV-, TSV-, Microsoft Word-, Microsoft Excel-, Microsoft PowerPoint-, PDF- und Apache Avro-Dateien wählen. Eine umfassende Liste der Dateitypen, die von Sensitive Data Protection in Cloud Storage-Buckets gescannt werden können, finden Sie unter FileType. Wenn Sie Binärdateien auswählen, werden mit Sensitive Data Protection auch Dateitypen gescannt, die nicht erkannt wurden.

Identifizierende Felder

Bei Tabellen in BigQuery können Sie im Feld Identifizierende Felder angeben, dass der Schutz sensibler Daten die Werte der primären Schlüsselspalten der Tabelle in die Ergebnisse aufnehmen soll. So können Sie die Ergebnisse mit den Tabellenzeilen verknüpfen, die sie enthalten.

Geben Sie die Namen der Spalten ein, mit denen jede Zeile in der Tabelle eindeutig identifiziert wird. Verwenden Sie ggf. Punkte, um verschachtelte Felder anzugeben. Sie können beliebig viele Felder hinzufügen.

Außerdem müssen Sie 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, sucht der Schutz sensibler Daten in Ihren Daten nach einem Standardsatz von infoTypes.

Vorlage

Sie können optional eine Vorlage für den Schutz sensibler Daten 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 den Schutz sensibler Daten erstellen.

infoTypes

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

Wählen Sie unter infoTypes den infoType-Detektor aus, der einem Datentyp entspricht, nach dem Sie scannen möchten. Wir empfehlen, diesen Abschnitt nicht leer zu lassen. Dadurch werden Ihre Daten mit einem Standardsatz von infoTypes gescannt, der möglicherweise 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 vordefinierten und benutzerdefinierten infoTypes in diesem Abschnitt finden Sie unter InfoTypes über die Google Cloud Console verwalten.

Inspektionsregelsätze

Mit Inspektionsregelsätzen können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren mithilfe von Kontextregeln anpassen. Die zwei Arten von Prüfregeln sind:

  • Ausschlussregeln, die helfen, falsche oder unerwünschte Ergebnisse auszuschließen.
  • Hotword-Regeln, die helfen, zusätzliche Ergebnisse zu erkennen.

Wenn Sie einen neuen Regelsatz hinzufügen möchten, müssen Sie zuerst einen oder mehrere integrierte oder benutzerdefinierte infoType-Detektoren im Bereich InfoTypes angeben. Das sind die infoType-Detektoren, die von Ihren Regelsätzen geändert werden. Gehen Sie anschließend so vor:

  1. Klicken Sie in das Feld InfoTypes auswählen. Die zuvor angegebene(n) infoType(s) werden in einem Menü unter dem Feld angezeigt, wie hier dargestellt:
  2. Screenshot der Konfiguration der Inspektionsregeln in der DLP-Benutzeroberfläche
  3. Wählen Sie im Menü einen infoType aus und klicken Sie dann auf Regel hinzufügen. Ein Menü mit den beiden Optionen Hotword-Regel und Ausschlussregel wird angezeigt.

Wählen Sie für Hotword-Regeln Hotword-Regeln aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Hotword einen regulären Ausdruck ein, nach dem die Funktion „Schutz sensibler Daten“ suchen soll.
  2. Wählen Sie im Menü Hotword-Nähe aus, ob das von Ihnen eingegebene Hotword vor oder nach dem ausgewählten infoType gefunden werden soll.
  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 Wert erhöht oder verringert werden soll.

Wählen Sie für Ausschlussregeln die Option Ausschlussregeln aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Ausschließen einen regulären Ausdruck ein, nach dem bei der Prüfung auf sensible Daten gesucht werden soll.
  2. Wählen Sie im Menü Abgleichstyp eine der folgenden Optionen aus:
    • Vollständige Übereinstimmung: Der Suchbegriff muss vollständig mit dem regulären Ausdruck übereinstimmen.
    • Teilübereinstimmung: Ein Teilstring des Ergebnisses kann mit dem regulären Ausdruck übereinstimmen.
    • Invertierte Übereinstimmung: Der Begriff stimmt nicht mit dem Regex überein.

Sie können zusätzliche Hotword- oder Ausschlussregeln und Regelsätze hinzufügen, um die Ergebnisse der Suche weiter zu verfeinern.

Konfidenzwert

Jedes Mal, wenn der Schutz sensibler Daten eine potenzielle Übereinstimmung mit sensiblen Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von „Sehr unwahrscheinlich“ bis „Sehr wahrscheinlich“ zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, wird Sensitive Data Protection angewiesen, nur Daten abzugleichen, die diesem Wahrscheinlichkeitswert oder einem höheren 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 im Schritt Aktionen hinzufügen eine oder mehrere Aktionen aus, die nach Abschluss des Jobs vom Schutz sensibler Daten ausgeführt werden sollen.

Sie können die folgenden Aktionen konfigurieren:

  • In BigQuery speichern: Speichern Sie die Ergebnisse des Jobs zum Schutz sensibler Daten in einer BigQuery. Bevor Sie die Ergebnisse ansehen oder analysieren, sollten Sie zuerst prüfen, ob der Job abgeschlossen wurde.

    Bei jeder Ausführung eines Scans speichert der Schutz sensibler Daten die Scanergebnisse in der von Ihnen angegebenen BigQuery-Tabelle. Die exportierten Ergebnisse enthalten Details zum Speicherort der einzelnen Übereinstimmungen und zur Übereinstimmungswahrscheinlichkeit. Wenn jeder Treffer den String enthalten soll, der mit dem infoType-Detektor übereinstimmt, aktivieren Sie die Option Zitat einschließen.

    Wenn Sie keine Tabellen-ID angeben, weist BigQuery einer neuen Tabelle einen Standardnamen zu, wenn der Scan zum ersten Mal ausgeführt wird. Wenn Sie eine vorhandene Tabelle angeben, hängt der Schutz sensibler Daten Scanergebnisse an diese an.

    Wenn Sie die Ergebnisse nicht in BigQuery speichern, enthalten die Scanergebnisse nur Statistiken zur Anzahl und zu den infoTypes der Ergebnisse.

    Wenn Daten in eine BigQuery-Tabelle geschrieben werden, werden die Abrechnung und Kontingentnutzung auf das Projekt angewendet, das die Zieltabelle enthält.

  • In Pub/Sub veröffentlichen: Veröffentlichen Sie eine Benachrichtigung, die den Namen des Jobs zum Schutz sensibler Daten als Attribut für einen Pub/Sub-Kanal enthält. Sie können eine oder mehrere Themen angeben, an die die Benachrichtigung gesendet werden soll. Das Dienstkonto für den Schutz sensibler Daten, mit dem der Scanjob ausgeführt wird, muss Veröffentlichungszugriff auf das Thema haben.

  • In Security Command Center veröffentlichen: Hiermit wird eine Zusammenfassung der Jobergebnisse im Security Command Center veröffentlicht. Weitere Informationen finden Sie unter Scanergebnisse zum Schutz sensibler Daten an das Security Command Center senden.

  • In Dataplex veröffentlichen: Jobergebnisse werden an Dataplex, den Metadatenverwaltungsdienst von Google Cloud, gesendet.

  • Per E-Mail benachrichtigen: Es wird eine E-Mail gesendet, wenn der Job abgeschlossen ist. Die E-Mail wird an IAM-Projektinhaber und wichtige technische Kontakte gesendet.

  • In Cloud Monitoring veröffentlichen: Senden Sie Inspektionsergebnisse an Cloud Monitoring in Google Cloud Observability.

  • De-identifizierte Kopie erstellen: De-identifizieren Sie alle Ergebnisse in den geprüften Daten und schreiben Sie die de-identifizierten Inhalte in eine neue Datei. Sie können die de-identifizierte Kopie dann in Ihren Geschäftsprozessen anstelle von Daten verwenden, die vertrauliche Informationen enthalten. Weitere Informationen finden Sie unter De-identifizierte Kopie von Cloud Storage-Daten mit Sensitive Data Protection in der Google Cloud Console erstellen.

Weitere Informationen finden Sie unter Aktionen.

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

Prüfen

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

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

Klicken Sie in der Google Cloud Console auf den Pfeil Zurück, um zur Hauptseite zum Schutz sensibler Daten zurückzukehren.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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.

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

Um dies schnell auszuprobieren, können Sie den unten eingebetteten API Explorer verwenden. Beachten Sie, dass eine erfolgreiche Anfrage, auch wenn sie im API Explorer erstellt wurde, einen Job erzeugt. Allgemeine Informationen zum Einsatz von JSON für das Senden von Anfragen an die 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 den Schutz sensibler Daten:

Console

Rufen Sie in der Google Cloud Console im Bereich „Schutz sensibler Daten“ 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, erhält der Job-Trigger vom Schutz sensibler Daten eine eindeutige Nummernkennzeichnung.

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 bei Cloud Storage eine Datei den Wert überschreitet, der unter Max. zu scannende Bytegröße pro Datei angegeben ist, durchsucht der Schutz sensibler Daten diese Datei bis zu dieser maximalen Dateigröße und springt dann zur nächsten Datei.

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

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

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

Erweiterte Konfiguration

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

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

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

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

Dateien

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

Sie können zwischen Binär-, Text-, Bild-, Microsoft Word-, Microsoft Excel-, Microsoft PowerPoint-, PDF- und Apache Avro-Dateien wählen. Eine vollständige Liste der Dateiendungen, die mit dem Schutz sensibler Daten in Cloud Storage-Buckets gescannt werden können, finden Sie unter FileType. Wenn Sie Binärdateien auswählen, werden mit Sensitive Data Protection auch Dateitypen gescannt, die nicht erkannt wurden.

Identifizierende Felder

Bei Tabellen in BigQuery können Sie im Feld Identifizierende Felder angeben, dass der Schutz sensibler Daten die Werte der primären Schlüsselspalten der Tabelle in die Ergebnisse aufnehmen soll. So können Sie die Ergebnisse mit den Tabellenzeilen verknüpfen, die sie enthalten.

Geben Sie die Namen der Spalten ein, mit denen jede Zeile in der Tabelle eindeutig identifiziert wird. Verwenden Sie ggf. Punkte, um verschachtelte Felder anzugeben. Sie können beliebig viele Felder hinzufügen.

Außerdem müssen Sie 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, sucht der Schutz sensibler Daten in Ihren Daten nach einem Standardsatz von infoTypes.

Vorlage

Sie können optional eine Vorlage für den Schutz sensibler Daten 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 den Schutz sensibler Daten erstellen.

infoTypes

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

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

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

Benutzerdefinierte infoTypes
Inspektionsregelsätze

Mit Inspektionsregelsätzen können Sie sowohl integrierte als auch benutzerdefinierte infoType-Detektoren mithilfe von Kontextregeln anpassen. Die zwei Arten von Prüfregeln sind:

  • Ausschlussregeln, die helfen, falsche oder unerwünschte Ergebnisse auszuschließen.
  • Hotword-Regeln, die helfen, zusätzliche Ergebnisse zu erkennen.

Wenn Sie einen neuen Regelsatz hinzufügen möchten, müssen Sie zuerst einen oder mehrere integrierte oder benutzerdefinierte infoType-Detektoren im Bereich InfoTypes angeben. Das sind die infoType-Detektoren, die von Ihren Regelsätzen geändert werden. Gehen Sie anschließend so vor:

  1. Klicken Sie in das Feld InfoTypes auswählen. Die zuvor angegebene(n) infoType(s) werden in einem Menü unter dem Feld angezeigt, wie hier dargestellt:
  2. Screenshot der Konfiguration der Inspektionsregeln in der DLP-Benutzeroberfläche
  3. Wählen Sie im Menü einen infoType aus und klicken Sie dann auf Regel hinzufügen. Ein Menü mit den beiden Optionen Hotword-Regel und Ausschlussregel wird angezeigt.

Wählen Sie für Hotword-Regeln Hotword-Regeln aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Hotword einen regulären Ausdruck ein, nach dem die Funktion „Schutz sensibler Daten“ suchen soll.
  2. Wählen Sie im Menü Hotword-Nähe aus, ob das von Ihnen eingegebene Hotword vor oder nach dem ausgewählten infoType gefunden werden soll.
  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 Wert erhöht oder verringert werden soll.

Wählen Sie für Ausschlussregeln die Option Ausschlussregeln aus. Gehen Sie anschließend so vor:

  1. Geben Sie im Feld Ausschließen einen regulären Ausdruck ein, nach dem bei der Prüfung auf sensible Daten gesucht werden soll.
  2. Wählen Sie im Menü Abgleichstyp eine der folgenden Optionen aus:
    • Vollständige Übereinstimmung: Der Suchbegriff muss vollständig mit dem regulären Ausdruck übereinstimmen.
    • Teilübereinstimmung: Ein Teilstring des Ergebnisses kann mit dem regulären Ausdruck übereinstimmen.
    • Invertierte Übereinstimmung: Der Begriff stimmt nicht mit dem Regex überein.

Sie können zusätzliche Hotword- oder Ausschlussregeln und Regelsätze hinzufügen, um die Ergebnisse der Suche weiter zu verfeinern.

Konfidenzwert

Jedes Mal, wenn der Schutz sensibler Daten eine potenzielle Übereinstimmung mit sensiblen Daten erkennt, wird ihr ein Wahrscheinlichkeitswert auf einer Skala von „Sehr unwahrscheinlich“ bis „Sehr wahrscheinlich“ zugewiesen. Wenn Sie hier einen Wahrscheinlichkeitswert festlegen, wird Sensitive Data Protection angewiesen, nur Daten abzugleichen, die diesem Wahrscheinlichkeitswert oder einem höheren 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 im Schritt Aktionen hinzufügen eine oder mehrere Aktionen aus, die nach Abschluss des Jobs vom Schutz sensibler Daten ausgeführt werden sollen.

Sie können die folgenden Aktionen konfigurieren:

  • In BigQuery speichern: Speichern Sie die Ergebnisse des Jobs zum Schutz sensibler Daten in einer BigQuery. Bevor Sie die Ergebnisse ansehen oder analysieren, sollten Sie zuerst prüfen, ob der Job abgeschlossen wurde.

    Bei jeder Ausführung eines Scans speichert der Schutz sensibler Daten die Scanergebnisse in der von Ihnen angegebenen BigQuery-Tabelle. Die exportierten Ergebnisse enthalten Details zum Speicherort der einzelnen Übereinstimmungen und zur Übereinstimmungswahrscheinlichkeit. Wenn jeder Treffer den String enthalten soll, der mit dem infoType-Detektor übereinstimmt, aktivieren Sie die Option Zitat einschließen.

    Wenn Sie keine Tabellen-ID angeben, weist BigQuery einer neuen Tabelle einen Standardnamen zu, wenn der Scan zum ersten Mal ausgeführt wird. Wenn Sie eine vorhandene Tabelle angeben, hängt der Schutz sensibler Daten Scanergebnisse an diese an.

    Wenn Sie die Ergebnisse nicht in BigQuery speichern, enthalten die Scanergebnisse nur Statistiken zur Anzahl und zu den infoTypes der Ergebnisse.

    Wenn Daten in eine BigQuery-Tabelle geschrieben werden, werden die Abrechnung und Kontingentnutzung auf das Projekt angewendet, das die Zieltabelle enthält.

  • In Pub/Sub veröffentlichen: Veröffentlichen Sie eine Benachrichtigung, die den Namen des Jobs zum Schutz sensibler Daten als Attribut für einen Pub/Sub-Kanal enthält. Sie können eine oder mehrere Themen angeben, an die die Benachrichtigung gesendet werden soll. Das Dienstkonto für den Schutz sensibler Daten, mit dem der Scanjob ausgeführt wird, muss Veröffentlichungszugriff auf das Thema haben.

  • In Security Command Center veröffentlichen: Hiermit wird eine Zusammenfassung der Jobergebnisse im Security Command Center veröffentlicht. Weitere Informationen finden Sie unter Scanergebnisse zum Schutz sensibler Daten an das Security Command Center senden.

  • In Dataplex veröffentlichen: Jobergebnisse werden an Dataplex, den Metadatenverwaltungsdienst von Google Cloud, gesendet.

  • Per E-Mail benachrichtigen: Es wird eine E-Mail gesendet, wenn der Job abgeschlossen ist. Die E-Mail wird an IAM-Projektinhaber und wichtige technische Kontakte gesendet.

  • In Cloud Monitoring veröffentlichen: Senden Sie Inspektionsergebnisse an Cloud Monitoring in Google Cloud Observability.

  • De-identifizierte Kopie erstellen: De-identifizieren Sie alle Ergebnisse in den geprüften Daten und schreiben Sie die de-identifizierten Inhalte in eine neue Datei. Sie können die de-identifizierte Kopie dann in Ihren Geschäftsprozessen anstelle von Daten verwenden, die vertrauliche Informationen enthalten. Weitere Informationen finden Sie unter De-identifizierte Kopie von Cloud Storage-Daten mit Sensitive Data Protection in der Google Cloud Console erstellen.

Weitere Informationen finden Sie unter Aktionen.

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

Planen

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

  • Specify time span (Zeitraum angeben): Mit dieser Option können Sie die zu durchsuchenden Dateien oder Zeilen nach Datum begrenzen. Klicken Sie auf Beginn, um den frühesten Zeitstempel der Dateien anzugeben, die in die Suche einbezogen werden sollen. Lassen Sie diesen Wert leer, wenn alle Dateien durchsucht werden sollen. Klicken Sie auf Ende, um den Zeitstempel der neuesten Dateien anzugeben, die einbezogen werden sollen. Wenn Sie diesen Wert leer lassen, wird kein oberes Zeitstempel-Limit festgelegt.
  • Trigger zum Ausführen des Jobs nach einem regelmäßigen Zeitplan erstellen: Mit dieser Option wird der Job in einen Job-Trigger 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 Job-Trigger erstellen möchten, der regelmäßig einen Job ausführt, müssen Sie diese Option festlegen.

    Der Standardwert ist die Mindestdauer: 24 Stunden. Der maximale Wert beträgt 60 Tage.

    Wenn der Schutz sensibler Daten nur neue Dateien oder Zeilen scannen soll, wählen Sie Scans ausschließlich auf neuen Inhalt 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 im Hilfeartikel zu bekannten Problemen mit diesem Vorgang.

Ü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 die Schaltfläche Abbrechen klicken, um ihn zu stoppen. Um den Job zu löschen klicken Sie auf Löschen.

Klicken Sie in der Google Cloud Console auf den Pfeil Zurück, um zur Hauptseite zum Schutz sensibler Daten zurückzukehren.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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.

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

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

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 zum Schutz sensibler Daten auf.

    Gehen Sie Sensitive Data Protection

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

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 zum Einsatz von JSON für das 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 zum Schutz sensibler Daten auf.

Gehen Sie Sensitive Data Protection

Auf dem Tab Inspection (Prüfung) auf dem Untertab Job triggers (Job-Trigger) wird eine Liste aller Job-Trigger für das aktuelle Projekt angezeigt.

C#

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 zum Einsatz von JSON für das 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 zum Schutz sensibler Daten auf.

    Gehen Sie Sensitive Data Protection

  2. Klicken Sie auf den Tab Prüfung und dann auf den Untertab Prüfjobs. 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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 zum Einsatz von JSON für das 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 zum Schutz sensibler Daten auf.

    Gehen Sie Sensitive Data Protection

    Auf dem Tab Prüfung, im Untertab Job-Trigger, wird in der Console eine Liste aller Job-Trigger 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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 zum Einsatz von JSON für das 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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 zum Einsatz von JSON für das Senden von Anfragen an die DLP API finden Sie in der JSON-Kurzanleitung.

Sofortige Ausführung eines Job-Triggers erzwingen

Nachdem ein Job-Trigger erstellt wurde, können Sie die sofortige Ausführung des Triggers für Tests erzwingen, indem Sie ihn aktivieren. Führen Sie dazu den 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, für das die mit der Anfrage verbundenen Zugriffskosten in Rechnung gestellt werden sollen.
  • JOB_TRIGGER_NAME: der vollständige Ressourcenname des Jobtriggers, 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 zum Schutz sensibler Daten auf.

    Gehen Sie 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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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 den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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\DlpServiceClient;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectJobConfig;
use Google\Cloud\Dlp\V2\JobTrigger;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Protobuf\FieldMask;

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

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

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

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

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

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

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

Python

Informationen zum Installieren und Verwenden der Clientbibliothek für den Schutz sensibler Daten finden Sie unter Clientbibliotheken für den Schutz sensibler Daten.

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, um die betreffenden Werte innerhalb eines angegebenen Job-Triggers zu aktualisieren.

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

JSON-Ausgabe:

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

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

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

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

JSON-Eingabe:

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

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

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

JSON-Ausgabe:

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

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

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

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

Joblatenz

Für Jobs und Jobtrigger werden keine Service Level Objectives (SLOs) garantiert. Die Latenz hängt von mehreren Faktoren ab, darunter die zu scannende Datenmenge, das zu scannende Speicher-Repository, der Typ und die Anzahl der Infotypen, 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 Stichprobenerhebung für Ihren Job oder Job-Trigger verfügbar ist, aktivieren Sie sie.
  • Aktivieren Sie nicht benötigte infoTypes. Die folgenden „infoTypes“ sind in bestimmten Szenarien zwar nützlich, können aber dazu führen, dass Anfragen viel langsamer ausgeführt werden als Anfragen ohne diese „infoTypes“:

    • 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 Methoden weiterhin Latenzprobleme mit Jobs haben, sollten Sie anstelle von Jobs content.inspect- oder content.deidentify-Anfragen verwenden. Für diese Methoden gilt das Service Level Agreement. Weitere Informationen finden Sie in der Service Level Agreement zum Schutz sensibler Daten.

Scans ausschließlich auf neuen Inhalt beschränken

Sie können Ihren Job-Trigger so konfigurieren, dass der Zeitraum für Dateien, die in Cloud Storage oder BigQuery gespeichert sind, automatisch festgelegt wird. Wenn Sie das TimespanConfig-Objekt automatisch ausfüllen, werden vom Schutz sensibler Daten nur Daten gescannt, 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. Weitere Informationen finden Sie im Hilfeartikel zu bekannten Problemen.

Jobs beim Hochladen von Dateien auslösen

Zusätzlich zur Unterstützung von Job-Triggern, die in den Schutz sensibler Daten eingebunden sind, bietet Google Cloud eine Vielzahl anderer Komponenten, mit denen Sie Jobs für den Schutz sensibler Daten einbinden oder auslösen können. Beispielsweise können Sie Cloud Run-Funktionen verwenden, um bei jedem Hochladen einer Datei in Cloud Storage einen Scan für den Schutz sensibler Daten 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 auch dann erfolgreich abgeschlossen werden, wenn keine Daten gescannt wurden. Dies kann in den folgenden Beispielszenarien passieren:

  • Der Job ist so konfiguriert, dass ein bestimmtes Daten-Asset wie eine Datei geprüft wird, die vorhanden, aber leer ist.
  • Der Job ist so konfiguriert, dass ein Daten-Asset geprüft wird, das nicht vorhanden ist oder nicht mehr vorhanden ist.
  • Der Job ist so konfiguriert, dass ein leerer Cloud Storage-Bucket geprüft wird.
  • Der Job ist so konfiguriert, dass ein Bucket geprüft wird, und die rekursive Suche 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, der Bucket aber keine Dateien dieses Typs enthält.
  • Der Job ist so konfiguriert, dass nur neue Inhalte geprüft werden. Nach der letzten Ausführung des Jobs gab es jedoch keine Aktualisierungen.

In der Google Cloud Console wird auf der Seite Jobdetails im Feld Gescannte Bytes 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