Großen benutzerdefinierten Wörterbuchdetektor erstellen

In diesem Thema wird beschrieben, wie Sie große benutzerdefinierte Wörterbücher erstellen und neu erstellen. Außerdem werden mehrere Fehlerszenarien behandelt.

Wann ein großes benutzerdefiniertes Wörterbuch anstelle eines regulären benutzerdefinierten Wörterbuchs verwendet werden sollte

Reguläre benutzerdefinierte Wörterbuchdetektoren sind ausreichend, wenn Sie Zehntausende vertrauliche Wörter oder Wortgruppen haben, nach denen Sie Ihre Inhalte durchsuchen möchten. Wenn Sie mehr Begriffe haben oder sich Ihre Begriffsliste häufig ändert, können Sie ein großes benutzerdefiniertes Wörterbuch erstellen, das mehrere zehn Millionen Begriffe unterstützt.

Unterschiede zwischen großen benutzerdefinierten Wörterbüchern und anderen benutzerdefinierten infoTypes

Große benutzerdefinierte Wörterbücher unterscheiden sich von anderen benutzerdefinierten infoTypes dadurch, dass jedes große benutzerdefinierte Wörterbuch zwei Komponenten hat:

  • Eine Liste von Wortgruppen, die Sie erstellen und definieren. Die Liste wird entweder als Textdatei in Cloud Storage oder als Spalte in einer BigQuery-Tabelle gespeichert.
  • Die Wörterbuchdateien, die vom Schutz sensibler Daten generiert und in Cloud Storage gespeichert werden. Wörterbuchdateien bestehen aus einer Kopie Ihrer Begriffsliste sowie Bloomfiltern, die beim Suchen und Abgleichen helfen.

Großes benutzerdefiniertes Wörterbuch erstellen

In diesem Abschnitt wird beschrieben, wie Sie ein großes benutzerdefiniertes Wörterbuch erstellen, bearbeiten und neu erstellen.

Begriffsliste erstellen

Erstellen Sie eine Liste mit allen Wörtern und Wortgruppen, nach denen der neue infoType-Detektor suchen soll. Führen Sie einen der folgenden Schritte aus:

  • Platzieren Sie eine Textdatei, in der jedes Wort bzw. jede Wortgruppe in einer eigenen Zeile steht, in einem Cloud Storage-Bucket.
  • Legen Sie eine Spalte einer BigQuery-Tabelle als Container für die Wörter und Wortgruppen fest. Geben Sie jedem Eintrag eine eigene Zeile in der Spalte. Sie können eine vorhandene BigQuery-Tabelle verwenden, sofern sich alle Wörterbuchwörter und -wortgruppen in einer einzigen Spalte befinden.

Es ist möglich, eine Begriffsliste zu erstellen, die für die Verarbeitung durch Sensitive Data Protection zu groß ist. Wenn Sie eine Fehlermeldung erhalten, lesen Sie den Abschnitt Fehlerbehebung weiter unten in diesem Thema.

Gespeicherten infoType erstellen

Nachdem Sie Ihre Begriffsliste erstellt haben, verwenden Sie den Schutz sensibler Daten, um ein Wörterbuch zu erstellen:

Console

  1. Erstellen Sie in einem Cloud Storage-Bucket einen neuen Ordner, in dem der Schutz sensibler Daten das generierte Wörterbuch speichert.

    Der Schutz sensibler Daten erstellt am angegebenen Speicherort Ordner mit den Wörterbuchdateien.

  2. Rufen Sie in der Google Cloud Console die Seite Infotyp erstellen auf.

    infoType erstellen

  3. Wählen Sie unter Typ die Option Großes benutzerdefiniertes Wörterbuch aus.

  4. Geben Sie unter InfoType-ID eine Kennung für den gespeicherten infoType ein.

    Sie verwenden diese Kennung, wenn Sie Ihre Inspektions- und De-Identifikationsjobs konfigurieren. Sie können im Namen Buchstaben, Ziffern, Bindestriche und Unterstriche verwenden.

  5. Geben Sie unter InfoType-Anzeigename einen Namen für den gespeicherten infoType ein.

    Sie können im Namen Leerzeichen und Satzzeichen verwenden.

  6. Geben Sie unter Beschreibung eine Beschreibung dafür ein, was der gespeicherte infoType erkennt.

  7. Wählen Sie unter Speichertyp den Speicherort der Begriffsliste aus:

    • BigQuery: Geben Sie die Projekt-ID, die Dataset-ID und die Tabellen-ID ein. Geben Sie im Feld Feldname die Spalten-ID ein. Sie können aus der Tabelle höchstens eine Spalte angeben.
    • Google Cloud Storage: Geben Sie den Pfad zur Datei ein.
  8. Geben Sie unter Ausgabe-Bucket oder -Ordner den Cloud Storage-Speicherort des Ordners ein, den Sie in Schritt 1 erstellt haben.

  9. Klicken Sie auf Erstellen.

Eine Zusammenfassung des gespeicherten infoTypes wird angezeigt. Wenn das Wörterbuch generiert wurde und der neue gespeicherte infoType einsatzbereit ist, wird der Status Bereit 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 System;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class CreateStoredInfoTypes
{
    public static StoredInfoType Create(
        string projectId,
        string outputPath,
        string storedInfoTypeId)
    {
        // Instantiate the dlp client.
        var dlp = DlpServiceClient.Create();

        // Construct the stored infotype config by specifying the public table and 
        // cloud storage output path.
        var storedInfoTypeConfig = new StoredInfoTypeConfig
        {
            DisplayName = "Github Usernames",
            Description = "Dictionary of Github usernames used in commits.",
            LargeCustomDictionary = new LargeCustomDictionaryConfig
            {
                BigQueryField = new BigQueryField
                {
                    Table = new BigQueryTable
                    {
                        DatasetId = "samples",
                        ProjectId = "bigquery-public-data",
                        TableId = "github_nested"
                    },
                    Field = new FieldId
                    {
                        Name = "actor"
                    }
                },
                OutputPath = new CloudStoragePath
                {
                    Path = outputPath
                }
            },
        };

        // Construct the request.
        var request = new CreateStoredInfoTypeRequest
        {
            ParentAsLocationName = new LocationName(projectId, "global"),
            Config = storedInfoTypeConfig,
            StoredInfoTypeId = storedInfoTypeId
        };

        // Call the API.
        StoredInfoType response = dlp.CreateStoredInfoType(request);

        // Inspect the response.
        Console.WriteLine($"Created the stored infotype at path: {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"
)

// createStoredInfoType creates a custom stored info type based on your input data.
func createStoredInfoType(w io.Writer, projectID, outputPath string) error {
	// projectId := "my-project-id"
	// outputPath := "gs://" + "your-bucket-name" + "path/to/directory"

	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 name you want to give the dictionary.
	displayName := "Github Usernames"

	// Specify a description of the dictionary.
	description := "Dictionary of GitHub usernames used in commits"

	// Specify the path to the location in a Cloud Storage
	// bucket to store the created dictionary.
	cloudStoragePath := &dlppb.CloudStoragePath{
		Path: outputPath,
	}

	// Specify your term list is stored in BigQuery.
	bigQueryField := &dlppb.BigQueryField{
		Table: &dlppb.BigQueryTable{
			ProjectId: "bigquery-public-data",
			DatasetId: "samples",
			TableId:   "github_nested",
		},
		Field: &dlppb.FieldId{
			Name: "actor",
		},
	}

	// Specify the configuration of the large custom dictionary.
	largeCustomDictionaryConfig := &dlppb.LargeCustomDictionaryConfig{
		OutputPath: cloudStoragePath,
		Source: &dlppb.LargeCustomDictionaryConfig_BigQueryField{
			BigQueryField: bigQueryField,
		},
	}

	// Specify the configuration for stored infoType.
	storedInfoTypeConfig := &dlppb.StoredInfoTypeConfig{
		DisplayName: displayName,
		Description: description,
		Type: &dlppb.StoredInfoTypeConfig_LargeCustomDictionary{
			LargeCustomDictionary: largeCustomDictionaryConfig,
		},
	}

	// Combine configurations into a request for the service.
	req := &dlppb.CreateStoredInfoTypeRequest{
		Parent:           fmt.Sprintf("projects/%s/locations/global", projectID),
		Config:           storedInfoTypeConfig,
		StoredInfoTypeId: "github-usernames",
	}

	// Send the request and receive response from the service.
	resp, err := client.CreateStoredInfoType(ctx, req)
	if err != nil {
		return err
	}

	// Print the result.
	fmt.Fprintf(w, "output: %v", resp.Name)
	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.BigQueryField;
import com.google.privacy.dlp.v2.BigQueryTable;
import com.google.privacy.dlp.v2.CloudStoragePath;
import com.google.privacy.dlp.v2.CreateStoredInfoTypeRequest;
import com.google.privacy.dlp.v2.FieldId;
import com.google.privacy.dlp.v2.LargeCustomDictionaryConfig;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.StoredInfoType;
import com.google.privacy.dlp.v2.StoredInfoTypeConfig;
import java.io.IOException;

public class CreateStoredInfoType {

  public static void main(String[] args) throws IOException {
    // 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 path to the location in a GCS bucket to store the created dictionary.
    String outputPath = "gs://" + "your-bucket-name" + "path/to/directory";
    createStoredInfoType(projectId, outputPath);
  }

  // Creates a custom stored info type that contains GitHub usernames used in commits.
  public static void createStoredInfoType(String projectId, String outputPath)
      throws IOException {
    try (DlpServiceClient dlp = DlpServiceClient.create()) {

      // Optionally set a display name and a description.
      String displayName = "GitHub usernames";
      String description = "Dictionary of GitHub usernames used in commits";

      // The output path where the custom dictionary containing the GitHub usernames will be stored.
      CloudStoragePath cloudStoragePath =
          CloudStoragePath.newBuilder()
              .setPath(outputPath)
              .build();

      // The reference to the table containing the GitHub usernames.
      BigQueryTable table = BigQueryTable.newBuilder()
              .setProjectId("bigquery-public-data")
              .setDatasetId("samples")
              .setTableId("github_nested")
              .build();

      // The reference to the BigQuery field that contains the GitHub usernames.
      BigQueryField bigQueryField = BigQueryField.newBuilder()
              .setTable(table)
              .setField(FieldId.newBuilder().setName("actor").build())
              .build();

      LargeCustomDictionaryConfig largeCustomDictionaryConfig =
          LargeCustomDictionaryConfig.newBuilder()
              .setOutputPath(cloudStoragePath)
              .setBigQueryField(bigQueryField)
              .build();

      StoredInfoTypeConfig storedInfoTypeConfig = StoredInfoTypeConfig.newBuilder()
              .setDisplayName(displayName)
              .setDescription(description)
              .setLargeCustomDictionary(largeCustomDictionaryConfig)
              .build();

      // Combine configurations into a request for the service.
      CreateStoredInfoTypeRequest createStoredInfoType = CreateStoredInfoTypeRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setConfig(storedInfoTypeConfig)
              .setStoredInfoTypeId("github-usernames")
              .build();

      // Send the request and receive response from the service.
      StoredInfoType response = dlp.createStoredInfoType(createStoredInfoType);

      // Print the results.
      System.out.println("Created Stored InfoType: " + response.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.

// Import the required libraries
const dlp = require('@google-cloud/dlp');

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

// The project ID to run the API call under.
// const projectId = "your-project-id";

// The identifier for the stored infoType
// const infoTypeId = 'github-usernames';

// The path to the location in a Cloud Storage bucket to store the created dictionary
// const outputPath = 'cloud-bucket-path';

// The project ID the table is stored under
// This may or (for public datasets) may not equal the calling project ID
// const dataProjectId = 'my-project';

// The ID of the dataset to inspect, e.g. 'my_dataset'
// const datasetId = 'my_dataset';

// The ID of the table to inspect, e.g. 'my_table'
// const tableId = 'my_table';

// Field ID to be used for constructing dictionary
// const fieldName = 'field_name';

async function createStoredInfoType() {
  // The name you want to give the dictionary.
  const displayName = 'GitHub usernames';
  // A description of the dictionary.
  const description = 'Dictionary of GitHub usernames used in commits';

  // Specify configuration for the large custom dictionary
  const largeCustomDictionaryConfig = {
    outputPath: {
      path: outputPath,
    },
    bigQueryField: {
      table: {
        datasetId: datasetId,
        projectId: dataProjectId,
        tableId: tableId,
      },
      field: {
        name: fieldName,
      },
    },
  };

  // Stored infoType configuration that uses large custom dictionary.
  const storedInfoTypeConfig = {
    displayName: displayName,
    description: description,
    largeCustomDictionary: largeCustomDictionaryConfig,
  };

  // Construct the job creation request to be sent by the client.
  const request = {
    parent: `projects/${projectId}/locations/global`,
    config: storedInfoTypeConfig,
    storedInfoTypeId: infoTypeId,
  };

  // Send the job creation request and process the response.
  const [response] = await dlpClient.createStoredInfoType(request);

  // Print results
  console.log(`InfoType stored successfully: ${response.name}`);
}
await createStoredInfoType();

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\BigQueryField;
use Google\Cloud\Dlp\V2\BigQueryTable;
use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\CloudStoragePath;
use Google\Cloud\Dlp\V2\FieldId;
use Google\Cloud\Dlp\V2\LargeCustomDictionaryConfig;
use Google\Cloud\Dlp\V2\StoredInfoTypeConfig;

/**
 * Create a stored infoType.
 *
 * @param string $callingProjectId  The Google Cloud Project ID to run the API call under.
 * @param string $outputgcsPath     The path to the location in a Cloud Storage bucket to store the created dictionary.
 * @param string $storedInfoTypeId  The name of the custom stored info type.
 * @param string $displayName       The human-readable name to give the stored infoType.
 * @param string $description       A description for the stored infoType to be created.
 */
function create_stored_infotype(
    string $callingProjectId,
    string $outputgcsPath,
    string $storedInfoTypeId,
    string $displayName,
    string $description
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // The reference to the table containing the GitHub usernames.
    // The reference to the BigQuery field that contains the GitHub usernames.
    // Note: we have used public data
    $bigQueryField = (new BigQueryField())
        ->setTable((new BigQueryTable())
            ->setDatasetId('samples')
            ->setProjectId('bigquery-public-data')
            ->setTableId('github_nested'))
        ->setField((new FieldId())
            ->setName('actor'));

    $largeCustomDictionaryConfig = (new LargeCustomDictionaryConfig())
        // The output path where the custom dictionary containing the GitHub usernames will be stored.
        ->setOutputPath((new CloudStoragePath())
            ->setPath($outputgcsPath))
        ->setBigQueryField($bigQueryField);

    // Configure the StoredInfoType we want the service to perform.
    $storedInfoTypeConfig = (new StoredInfoTypeConfig())
        ->setDisplayName($displayName)
        ->setDescription($description)
        ->setLargeCustomDictionary($largeCustomDictionaryConfig);

    // Send the stored infoType creation request and process the response.
    $parent = "projects/$callingProjectId/locations/global";
    $response = $dlp->createStoredInfoType($parent, $storedInfoTypeConfig, [
        'storedInfoTypeId' => $storedInfoTypeId
    ]);

    // Print results.
    printf('Successfully created Stored InfoType : %s', $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.

import google.cloud.dlp


def create_stored_infotype(
    project: str,
    stored_info_type_id: str,
    output_bucket_name: str,
) -> None:
    """Uses the Data Loss Prevention API to create stored infoType.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        stored_info_type_id: The identifier for large custom dictionary.
        output_bucket_name: The name of the bucket in Google Cloud Storage
            that would store the created dictionary.
    """

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

    # Construct the stored infoType Configuration dictionary. This example creates
    # a stored infoType from a term list stored in a publicly available BigQuery
    # database (bigquery-public-data.samples.github_nested).
    # The database contains all GitHub usernames used in commits.
    stored_info_type_config = {
        "display_name": "GitHub usernames",
        "description": "Dictionary of GitHub usernames used in commits",
        "large_custom_dictionary": {
            "output_path": {"path": f"gs://{output_bucket_name}"},
            # We can either use bigquery field or gcs file as a term list input option.
            "big_query_field": {
                "table": {
                    "project_id": "bigquery-public-data",
                    "dataset_id": "samples",
                    "table_id": "github_nested",
                },
                "field": {"name": "actor"},
            },
        },
    }

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

    # Call the API.
    response = dlp.create_stored_info_type(
        request={
            "parent": parent,
            "config": stored_info_type_config,
            "stored_info_type_id": stored_info_type_id,
        }
    )

    # Print the result
    print(f"Created Stored InfoType: {response.name}")

REST

  1. Erstellen Sie in einem Cloud Storage-Bucket einen neuen Ordner für das Wörterbuch. Der Schutz sensibler Daten erstellt am angegebenen Speicherort Ordner mit den Wörterbuchdateien.
  2. Erstellen Sie das Wörterbuch mit der Methode storedInfoTypes.create. Die Methode create verwendet folgende Parameter:
    • Ein Objekt StoredInfoTypeConfig, das die Konfiguration des gespeicherten infoType enthält. Dazu gehören:
      • description: eine Beschreibung des Wörterbuchs.
      • displayName: der Name, den Sie dem Wörterbuch geben möchten.
      • LargeCustomDictionaryConfig: enthält die Konfiguration des großen benutzerdefinierten Wörterbuchs. Es enthält Folgendes:
        • BigQueryField: wird angegeben, wenn die Begriffsliste in BigQuery gespeichert ist. Enthält einen Verweis auf die Tabelle, in der Ihre Liste gespeichert ist, sowie das Feld, das die einzelnen Wortgruppen im Wörterbuch enthält.
        • CloudStorageFileSet: wird angegeben, wenn die Begriffsliste in Cloud Storage gespeichert ist. Enthält die URL zum Quellspeicherort in Cloud Storage im folgenden Format: "gs://[PATH_TO_GS]". Platzhalter werden unterstützt.
        • outputPath: der Pfad zum Speicherort in einem Cloud Storage-Bucket, in dem das erstellte Wörterbuch gespeichert wird.
    • storedInfoTypeId: Die Kennzeichnung für den gespeicherten infoType. Mit dieser Kennung verweisen Sie auf den gespeicherten infoType, wenn Sie ihn neu erstellen, löschen oder in einem Inspektions- oder De-Identifikationsjob verwenden. Wenn Sie dieses Feld leer lassen, generiert das System eine Kennzeichnung für Sie.

Es folgt ein JSON-Beispiel, das beim Senden an die Methode storedInfoTypes.create einen neuen gespeicherten infoType erstellt, insbesondere einen Detektor für ein großes benutzerdefiniertes Wörterbuch. In diesem Beispiel wird ein gespeicherter Infotyp aus einer Begriffsliste erstellt, die in einer öffentlich verfügbaren BigQuery-Datenbank (bigquery-public-data.samples.github_nested) gespeichert ist. Die Datenbank enthält alle in Commits verwendeten GitHub-Nutzernamen. Der Ausgabepfad für das generierte Wörterbuch wird auf einen Cloud Storage-Bucket namens dlptesting festgelegt und der gespeicherte infoType hat den Namen github-usernames.

JSON-Eingabe

POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes

{
  "config":{
    "displayName":"GitHub usernames",
    "description":"Dictionary of GitHub usernames used in commits",
    "largeCustomDictionary":{
      "outputPath":{
        "path":"gs://[PATH_TO_GS]"
      },
      "bigQueryField":{
        "table":{
          "datasetId":"samples",
          "projectId":"bigquery-public-data",
          "tableId":"github_nested"
        }
      }
    }
  },
  "storedInfoTypeId":"github-usernames"
}

Wörterbuch neu erstellen

Wenn Sie Ihr Wörterbuch aktualisieren möchten, aktualisieren Sie zuerst die Liste der Quellbegriffe. Weisen Sie dann Sensitive Data Protection an, den gespeicherten infoType neu zu erstellen.

  1. Aktualisieren Sie die vorhandene Liste der Quellbegriffe in Cloud Storage oder BigQuery.

    Fügen Sie die Begriffe oder Wortgruppen nach Bedarf hinzu, entfernen oder ändern Sie sie.

  2. Erstellen Sie eine neue Version des gespeicherten „infoType“, indem Sie es entweder mit der Google Cloud Console oder der Methode storedInfoTypes.patch „neu erstellen“.

    Dadurch wird eine neue Version des Wörterbuchs erstellt, die das alte Wörterbuch ersetzt.

Wenn Sie einen gespeicherten Infotyp in eine neue Version umwandeln, wird die alte Version gelöscht. Während der Schutz sensibler Daten den gespeicherten infoType aktualisiert, ist der Status „ausstehend“. In dieser Zeit ist die alte Version des gespeicherten infoType noch vorhanden. Alle Scans, die Sie ausführen, während der gespeicherte infoType den Status „Ausstehend“ hat, werden unter Verwendung der alten Version des gespeicherten infoType ausgeführt.

So erstellen Sie den gespeicherten infoType neu:

Console

  1. Aktualisieren und speichern Sie die Begriffsliste in Cloud Storage oder BigQuery.
  2. Rufen Sie in der Google Cloud Console die Liste der gespeicherten Infotypen auf.

    Gespeicherte infoTypes aufrufen

  3. Klicken Sie auf die ID des gespeicherten infoType, den Sie aktualisieren möchten.

  4. Klicken Sie auf der Seite InfoType-Details auf Daten neu erstellen.

Der Schutz sensibler Daten erstellt den gespeicherten infoType mit den Änderungen neu, die Sie an der Liste der Quellbegriffe vorgenommen haben. Sobald der Status des gespeicherten infoTypes „Bereit“ lautet, können Sie ihn verwenden. Alle Vorlagen oder Job-Trigger, die den gespeicherten infoType verwenden, verwenden automatisch die neu erstellte Version.

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;
using Google.Protobuf.WellKnownTypes;

public class UpdateStoredInfoTypes
{
    public static StoredInfoType Update(
        string gcsFileUri,
        string storedInfoTypePath,
        string outputPath)
    {
        // Instantiate the client.
        var dlp = DlpServiceClient.Create();

        // Construct the stored infotype config. Here, we will change the source from bigquery table to GCS file.
        var storedConfig = new StoredInfoTypeConfig
        {
            LargeCustomDictionary = new LargeCustomDictionaryConfig
            {
                CloudStorageFileSet = new CloudStorageFileSet
                {
                    Url = gcsFileUri
                },
                OutputPath = new CloudStoragePath
                {
                    Path = outputPath
                }
            }
        };

        // Construct the request using the stored config by specifying the update mask object
        // which represent the path of field to be updated.
        var request = new UpdateStoredInfoTypeRequest
        {
            Config = storedConfig,
            Name = storedInfoTypePath,
            UpdateMask = new FieldMask
            {
                Paths =
                {
                    "large_custom_dictionary.cloud_storage_file_set.url"
                }
            }
        };

        // Call the API.
        StoredInfoType response = dlp.UpdateStoredInfoType(request);

        // Inspect the result.
        Console.WriteLine(response);
        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"
)

// updateStoredInfoType uses the Data Loss Prevention API to update stored infoType
// detector by changing the source term list from one stored in Bigquery
// to one stored in Cloud Storage.
func updateStoredInfoType(w io.Writer, projectID, gcsUri, fileSetUrl, infoTypeId string) error {
	// projectId := "your-project-id"
	// gcsUri := "gs://" + "your-bucket-name" + "/path/to/your/file.txt"
	// fileSetUrl := "your-cloud-storage-file-set"
	// infoTypeId := "your-stored-info-type-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()

	// Set path in Cloud Storage.
	cloudStoragePath := &dlppb.CloudStoragePath{
		Path: gcsUri,
	}
	cloudStorageFileSet := &dlppb.CloudStorageFileSet{
		Url: fileSetUrl,
	}

	// Configuration for a custom dictionary created from a data source of any size
	largeCustomDictionaryConfig := &dlppb.LargeCustomDictionaryConfig{
		OutputPath: cloudStoragePath,
		Source: &dlppb.LargeCustomDictionaryConfig_CloudStorageFileSet{
			CloudStorageFileSet: cloudStorageFileSet,
		},
	}

	// Set configuration for stored infoTypes.
	storedInfoTypeConfig := &dlppb.StoredInfoTypeConfig{
		Type: &dlppb.StoredInfoTypeConfig_LargeCustomDictionary{
			LargeCustomDictionary: largeCustomDictionaryConfig,
		},
	}

	// Set mask to control which fields get updated.
	fieldMask := &fieldmaskpb.FieldMask{
		Paths: []string{"large_custom_dictionary.cloud_storage_file_set.url"},
	}
	// Construct the job creation request to be sent by the client.
	req := &dlppb.UpdateStoredInfoTypeRequest{
		Name:       fmt.Sprint("projects/" + projectID + "/storedInfoTypes/" + infoTypeId),
		Config:     storedInfoTypeConfig,
		UpdateMask: fieldMask,
	}

	// Use the client to send the API request.
	resp, err := client.UpdateStoredInfoType(ctx, req)
	if err != nil {
		return err
	}

	// Print the result.
	fmt.Fprintf(w, "output: %v", resp.Name)
	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.CloudStorageFileSet;
import com.google.privacy.dlp.v2.CloudStoragePath;
import com.google.privacy.dlp.v2.LargeCustomDictionaryConfig;
import com.google.privacy.dlp.v2.StoredInfoType;
import com.google.privacy.dlp.v2.StoredInfoTypeConfig;
import com.google.privacy.dlp.v2.StoredInfoTypeName;
import com.google.privacy.dlp.v2.UpdateStoredInfoTypeRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class UpdateStoredInfoType {
  public static void main(String[] args) throws IOException {
    // 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 path to file in GCS bucket that holds a collection of words and phrases to be searched by
    // the new infoType detector.
    String filePath = "gs://" + "your-bucket-name" + "/path/to/your/file.txt";
    // The path to the location in a GCS bucket to store the created dictionary.
    String outputPath = "your-cloud-storage-file-set";
    // The name of the stored InfoType which is to be updated.
    String infoTypeId = "your-stored-info-type-id";
    updateStoredInfoType(projectId, filePath, outputPath, infoTypeId);
  }

  // Update the stored info type rebuilding the Custom dictionary.
  public static void updateStoredInfoType(
      String projectId, String filePath, String outputPath, String infoTypeId) 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 dlp = DlpServiceClient.create()) {
      // Set path in Cloud Storage.
      CloudStoragePath cloudStoragePath = CloudStoragePath.newBuilder().setPath(outputPath).build();
      CloudStorageFileSet cloudStorageFileSet =
          CloudStorageFileSet.newBuilder().setUrl(filePath).build();

      // Configuration for a custom dictionary created from a data source of any size
      LargeCustomDictionaryConfig largeCustomDictionaryConfig =
          LargeCustomDictionaryConfig.newBuilder()
              .setOutputPath(cloudStoragePath)
              .setCloudStorageFileSet(cloudStorageFileSet)
              .build();

      // Set configuration for stored infoTypes.
      StoredInfoTypeConfig storedInfoTypeConfig =
          StoredInfoTypeConfig.newBuilder()
              .setLargeCustomDictionary(largeCustomDictionaryConfig)
              .build();

      // Set mask to control which fields get updated.
      // Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask for constructing the field mask paths.
      FieldMask fieldMask =
          FieldMask.newBuilder()
              .addPaths("large_custom_dictionary.cloud_storage_file_set.url")
              .build();

      // Construct the job creation request to be sent by the client.
      UpdateStoredInfoTypeRequest updateStoredInfoTypeRequest =
          UpdateStoredInfoTypeRequest.newBuilder()
              .setName(
                  StoredInfoTypeName.ofProjectStoredInfoTypeName(projectId, infoTypeId).toString())
              .setConfig(storedInfoTypeConfig)
              .setUpdateMask(fieldMask)
              .build();

      // Send the job creation request and process the response.
      StoredInfoType response = dlp.updateStoredInfoType(updateStoredInfoTypeRequest);

      // Print the results.
      System.out.println("Updated stored InfoType successfully: " + response.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.

// Import the required libraries
const dlp = require('@google-cloud/dlp');

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

// The project ID to run the API call under.
// const projectId = "your-project-id";

// The identifier for the stored infoType
// const infoTypeId = 'github-usernames';

// The path to the location in a Cloud Storage bucket to store the created dictionary
// const outputPath = 'cloud-bucket-path';

// Path of file containing term list
// const cloudStorageFileSet = 'gs://[PATH_TO_GS]';

async function updateStoredInfoType() {
  // Specify configuration of the large custom dictionary including cloudStorageFileSet and outputPath
  const largeCustomDictionaryConfig = {
    outputPath: {
      path: outputPath,
    },
    cloudStorageFileSet: {
      url: fileSetUrl,
    },
  };

  // Construct the job creation request to be sent by the client.
  const updateStoredInfoTypeRequest = {
    name: `projects/${projectId}/storedInfoTypes/${infoTypeId}`,
    config: {
      largeCustomDictionary: largeCustomDictionaryConfig,
    },
    updateMask: {
      paths: ['large_custom_dictionary.cloud_storage_file_set.url'],
    },
  };

  // Send the job creation request and process the response.
  const [response] = await dlpClient.updateStoredInfoType(
    updateStoredInfoTypeRequest
  );

  // Print the results.
  console.log(`InfoType updated successfully: ${JSON.stringify(response)}`);
}
await updateStoredInfoType();

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\CloudStorageFileSet;
use Google\Cloud\Dlp\V2\CloudStoragePath;
use Google\Cloud\Dlp\V2\LargeCustomDictionaryConfig;
use Google\Cloud\Dlp\V2\StoredInfoTypeConfig;
use Google\Protobuf\FieldMask;

/**
 * Rebuild/Update the stored infoType.
 *
 * @param string $callingProjectId  The Google Cloud Project ID to run the API call under.
 * @param string $gcsPath           The path to file in GCS bucket that holds a collection of words and phrases to be searched by the new infoType detector.
 * @param string $outputgcsPath     The path to the location in a Cloud Storage bucket to store the created dictionary.
 * @param string $storedInfoTypeId  The name of the stored InfoType which is to be updated.
 *
 */
function update_stored_infotype(
    string $callingProjectId,
    string $gcsPath,
    string $outputgcsPath,
    string $storedInfoTypeId
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

    // Set path in Cloud Storage.
    $cloudStorageFileSet = (new CloudStorageFileSet())
        ->setUrl($gcsPath);

    // Configuration for a custom dictionary created from a data source of any size
    $largeCustomDictionaryConfig = (new LargeCustomDictionaryConfig())
        ->setOutputPath((new CloudStoragePath())
            ->setPath($outputgcsPath))
        ->setCloudStorageFileSet($cloudStorageFileSet);

    // Set configuration for stored infoTypes.
    $storedInfoTypeConfig = (new StoredInfoTypeConfig())
        ->setLargeCustomDictionary($largeCustomDictionaryConfig);

    // Send the stored infoType creation request and process the response.

    $name = "projects/$callingProjectId/locations/global/storedInfoTypes/" . $storedInfoTypeId;
    // Set mask to control which fields get updated.
    // Refer https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask for constructing the field mask paths.
    $fieldMask = (new FieldMask())
        ->setPaths([
            'large_custom_dictionary.cloud_storage_file_set.url'
        ]);

    // Run request
    $response = $dlp->updateStoredInfoType($name, [
        'config' => $storedInfoTypeConfig,
        'updateMask' => $fieldMask
    ]);

    // Print results
    printf('Successfully update Stored InforType : %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.

import google.cloud.dlp


def update_stored_infotype(
    project: str,
    stored_info_type_id: str,
    gcs_input_file_path: str,
    output_bucket_name: str,
) -> None:
    """Uses the Data Loss Prevention API to update stored infoType
    detector by changing the source term list from one stored in Bigquery
    to one stored in Cloud Storage.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        stored_info_type_id: The identifier of stored infoType which is to
            be updated.
        gcs_input_file_path: The url in the format <bucket>/<path_to_file>
            for the location of the source term list.
        output_bucket_name: The name of the bucket in Google Cloud Storage
            where large dictionary is stored.
    """

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

    # Construct the stored infoType configuration dictionary.
    stored_info_type_config = {
        "large_custom_dictionary": {
            "output_path": {"path": f"gs://{output_bucket_name}"},
            "cloud_storage_file_set": {"url": f"gs://{gcs_input_file_path}"},
        }
    }

    # Set mask to control which fields get updated. For more details, refer
    # https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask
    # for constructing the field mask paths.
    field_mask = {"paths": ["large_custom_dictionary.cloud_storage_file_set.url"]}

    # Convert the stored infoType id into a full resource id.
    stored_info_type_name = (
        f"projects/{project}/locations/global/storedInfoTypes/{stored_info_type_id}"
    )

    # Call the API.
    response = dlp.update_stored_info_type(
        request={
            "name": stored_info_type_name,
            "config": stored_info_type_config,
            "update_mask": field_mask,
        }
    )

    # Print the result
    print(f"Updated stored infoType successfully: {response.name}")

REST

Begriffsliste aktualisieren

Wenn Sie nur die Liste der Begriffe im großen benutzerdefinierten Wörterbuch aktualisieren, ist für Ihre storedInfoTypes.patch-Anfrage nur das Feld name erforderlich. Geben Sie den vollständigen Ressourcennamen des gespeicherten infoTypes an, den Sie neu erstellen möchten.

Die folgenden Muster stellen gültige Einträge für das Feld name dar:

  • organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_ID
  • projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID

Ersetzen Sie STORED_INFOTYPE_ID durch die Kennung des gespeicherten „infoType“, den Sie neu erstellen möchten.

Wenn Sie die Kennzeichnung des gespeicherten infoTypes nicht kennen, rufen Sie die Methode storedInfoTypes.list auf, um eine Liste aller aktuell gespeicherten infoTypes aufzurufen.

Beispiel

PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID

In diesem Fall ist kein Anfragetext erforderlich.

Liste der Quellbegriffe wechseln

Sie können die Liste der Quellbegriffe für einen gespeicherten Infotyp von einer in BigQuery gespeicherten in eine in Cloud Storage gespeicherte Liste ändern. Verwenden Sie die Methode storedInfoTypes.patch, schließen Sie aber in LargeCustomDictionaryConfig anstelle des BigQueryField-Objekts ein CloudStorageFileSet-Objekt ein. Legen Sie dann den Parameter updateMask auf den neu erstellten gespeicherten infoType-Parameter im Format FieldMask fest. In der folgenden JSON-Datei wird beispielsweise im Parameter updateMask angegeben, dass die URL des Cloud Storage-Pfads aktualisiert wurde (large_custom_dictionary.cloud_storage_file_set.url):

Beispiel

PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/github-usernames

{
  "config":{
    "largeCustomDictionary":{
      "cloudStorageFileSet":{
        "url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
      }
    }
  },
  "updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}

Ebenso können Sie die Begriffsliste von einer in einer BigQuery-Tabelle gespeicherten in eine in einem Cloud Storage-Bucket gespeicherte Liste ändern.

Inhalte mit einem großen benutzerdefinierten Wörterbuchdetektor scannen

Das Scannen von Inhalten mit einem großen benutzerdefinierten Wörterbuchdetektor ähnelt dem Scannen von Inhalten mit einem anderen benutzerdefinierten infoType-Detektor.

Bei dieser Vorgehensweise wird davon ausgegangen, dass Sie bereits einen gespeicherten infoType haben. Weitere Informationen finden Sie auf dieser Seite unter Gespeicherten infoType erstellen.

Console

Sie können einen großen benutzerdefinierten Wörterbuchdetektor in folgenden Fällen anwenden:

Geben Sie im Abschnitt Erkennung konfigurieren im Unterabschnitt InfoTypes den InfoType für das große benutzerdefinierte Wörterbuch an.

  1. Klicken Sie auf Infotypen verwalten.
  2. Klicken Sie im Bereich InfoTypes auf den Tab Benutzerdefiniert.
  3. Klicken Sie auf Benutzerdefinierten infoType hinzufügen.
  4. Führen Sie im Bereich Benutzerdefinierten infoType hinzufügen die folgenden Schritte aus:

    1. Wählen Sie unter Typ die Option Gespeicherter infoType aus.
    2. Geben Sie unter InfoType einen Namen für den benutzerdefinierten infoType ein. Sie können Buchstaben, Ziffern und Unterstriche verwenden.
    3. Wählen Sie unter Wahrscheinlichkeit die Standardwahrscheinlichkeitsstufe aus, die allen Ergebnissen zugewiesen werden soll, die mit diesem benutzerdefinierten infoType übereinstimmen. Mit Hotword-Regeln können Sie die Wahrscheinlichkeit einzelner Ergebnisse weiter optimieren.

      Wenn Sie keinen Standardwert angeben, wird das Standardwahrscheinlichkeitsniveau auf VERY_LIKELY festgelegt. Weitere Informationen finden Sie unter Wahrscheinlichkeit der Übereinstimmung.

    4. Wählen Sie unter Empfindlichkeit die Empfindlichkeitsstufe aus, die allen Ergebnissen zugewiesen werden soll, die diesem benutzerdefinierten infoType entsprechen. Wenn Sie keinen Wert angeben, werden die Sensitivitätsstufen dieser Ergebnisse auf HIGH gesetzt.

      Sensibilitätsbewertungen werden in Datenprofilen verwendet. Beim Erstellen von Datenprofilen verwendet der Schutz sensibler Daten die Sensibilitätsbewertungen der infoTypes, um das Sensibilitätsniveau zu berechnen.

    5. Wählen Sie unter Gespeicherter infoType-Name den gespeicherten infoType aus, auf dem der neue benutzerdefinierte infoType basieren soll.

    6. Klicken Sie auf Fertig, um den Bereich Benutzerdefinierten infoType hinzufügen zu schließen.

  5. Optional: Bearbeiten Sie auf dem Tab Vordefiniert die Auswahl der vordefinierten infoTypes.

  6. Klicken Sie auf Fertig, um den Bereich InfoTypes zu schließen.

    Der benutzerdefinierte infoType wird der Liste der infoTypes hinzugefügt, nach denen der Schutz sensibler Daten sucht. Diese Auswahl ist jedoch erst endgültig, wenn Sie den Job, den Job-Trigger, die Vorlage oder die Scankonfiguration speichern.

  7. Klicken Sie auf Speichern, wenn Sie mit dem Erstellen oder Bearbeiten der Konfiguration fertig sind.

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.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class InspectDataWithStoredInfotypes
{
    public static InspectContentResponse Inspect(
        string projectId,
        string storedInfotypePath,
        string text,
        InfoType infoType = null)
    {
        // Instantiate the dlp client.
        var dlp = DlpServiceClient.Create();

        // Construct the infotype if null.
        var infotype = infoType ?? new InfoType { Name = "GITHUB_LOGINS" };

        // Construct the inspect config using stored infotype.
        var inspectConfig = new InspectConfig
        {
            CustomInfoTypes =
            {
                new CustomInfoType
                {
                    InfoType = infotype,
                    StoredType = new StoredType { Name = storedInfotypePath }
                }
            },
            IncludeQuote = true
        };

        // Construct the request using inspect config.
        var request = new InspectContentRequest
        {
            ParentAsLocationName = new LocationName(projectId, "global"),
            InspectConfig = inspectConfig,
            Item = new ContentItem { Value = text }
        };

        // Call the API.
        InspectContentResponse response = dlp.InspectContent(request);

        // Inspect the results.
        var findings = response.Result.Findings;
        Console.WriteLine($"Findings: {findings.Count}");
        foreach (var f in findings)
        {
            Console.WriteLine("\tQuote: " + f.Quote);
            Console.WriteLine("\tInfo type: " + f.InfoType.Name);
            Console.WriteLine("\tLikelihood: " + f.Likelihood);
        }

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

// inspectWithStoredInfotype inspects the given text using the specified stored infoType detector.
func inspectWithStoredInfotype(w io.Writer, projectID, infoTypeId, textToDeidentify string) error {
	// projectId := "your-project-id"
	// infoTypeId := "your-info-type-id"
	// textToDeidentify := "This commit was made by kewin2010"

	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 content to be inspected.
	contentItem := &dlppb.ContentItem{
		DataItem: &dlppb.ContentItem_Value{
			Value: textToDeidentify,
		},
	}

	// Specify the info type the inspection will look for.
	infoType := &dlppb.InfoType{
		Name: "GITHUB_LOGINS",
	}

	// Specify the stored info type the inspection will look for.
	storedType := &dlppb.StoredType{
		Name: infoTypeId,
	}

	customInfoType := &dlppb.CustomInfoType{
		InfoType: infoType,
		Type: &dlppb.CustomInfoType_StoredType{
			StoredType: storedType,
		},
	}

	// Specify how the content should be inspected.
	inspectConfig := &dlppb.InspectConfig{
		CustomInfoTypes: []*dlppb.CustomInfoType{
			customInfoType,
		},
		IncludeQuote: true,
	}

	// Construct the Inspect request to be sent by the client.
	req := &dlppb.InspectContentRequest{
		Parent:        fmt.Sprintf("projects/%s/locations/global", projectID),
		InspectConfig: inspectConfig,
		Item:          contentItem,
	}

	// Use the client to send the API request.
	resp, err := client.InspectContent(ctx, req)
	if err != nil {
		return err
	}

	// Process the results.
	fmt.Fprintf(w, "Findings: %d\n", len(resp.Result.Findings))
	for _, f := range resp.Result.Findings {
		fmt.Fprintf(w, "\tQuote: %s\n", f.Quote)
		fmt.Fprintf(w, "\tInfo type: %s\n", f.InfoType.Name)
		fmt.Fprintf(w, "\tLikelihood: %s\n", f.Likelihood)
	}
	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.ContentItem;
import com.google.privacy.dlp.v2.CustomInfoType;
import com.google.privacy.dlp.v2.Finding;
import com.google.privacy.dlp.v2.InfoType;
import com.google.privacy.dlp.v2.InspectConfig;
import com.google.privacy.dlp.v2.InspectContentRequest;
import com.google.privacy.dlp.v2.InspectContentResponse;
import com.google.privacy.dlp.v2.LocationName;
import com.google.privacy.dlp.v2.ProjectStoredInfoTypeName;
import com.google.privacy.dlp.v2.StoredType;
import java.io.IOException;

public class InspectWithStoredInfotype {

  public static void main(String[] args) throws IOException {
    // 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 sample assumes that you have an existing stored infoType.
    // To create a stored InfoType refer:
    // https://cloud.google.com/dlp/docs/creating-stored-infotypes#create-storedinfotye 
    String storedInfoTypeId = "your-info-type-id";
    // The string to de-identify.
    String textToInspect =
        "My phone number is (223) 456-7890 and my email address is gary@example.com.";
    inspectWithStoredInfotype(projectId, storedInfoTypeId, textToInspect);
  }

  //  Inspects the given text using the specified stored infoType detector.
  public static void inspectWithStoredInfotype(
      String projectId, String storedInfoTypeId, String textToInspect) 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 dlp = DlpServiceClient.create()) {

      // Specify the content to be inspected.
      ContentItem contentItem = ContentItem.newBuilder().setValue(textToInspect).build();

      InfoType infoType = InfoType.newBuilder().setName("STORED_TYPE").build();

      // Reference to the existing StoredInfoType to inspect the data.
      StoredType storedType = StoredType.newBuilder()
              .setName(ProjectStoredInfoTypeName.of(projectId, storedInfoTypeId).toString())
              .build();

      CustomInfoType customInfoType =
          CustomInfoType.newBuilder().setInfoType(infoType).setStoredType(storedType).build();

      // Construct the configuration for the Inspect request.
      InspectConfig inspectConfig =
          InspectConfig.newBuilder()
              .addCustomInfoTypes(customInfoType)
              .setIncludeQuote(true)
              .build();

      // Construct the Inspect request to be sent by the client.
      InspectContentRequest inspectContentRequest =
          InspectContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").toString())
              .setInspectConfig(inspectConfig)
              .setItem(contentItem)
              .build();

      // Use the client to send the API request.
      InspectContentResponse response = dlp.inspectContent(inspectContentRequest);

      // Parse the response and process results.
      System.out.println("Findings: " + "" + response.getResult().getFindingsCount());
      for (Finding f : response.getResult().getFindingsList()) {
        System.out.println("\tQuote: " + f.getQuote());
        System.out.println("\tInfoType: " + f.getInfoType().getName());
        System.out.println("\tLikelihood: " + f.getLikelihood() + "\n");
      }
    }
  }
}

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 = 'your-project-id';

// The custom info-type id created and stored in the bucket.
// const infoTypeId = 'your-info-type-id';

// The string to inspect.
// const string = 'My phone number is (223) 456-7890 and my email address is gary@example.com.';

async function inspectWithStoredInfotype() {
  // Reference to the existing StoredInfoType to inspect the data.
  const customInfoType = {
    infoType: {
      name: 'GITHUB_LOGINS',
    },
    storedType: {
      name: infoTypeId,
    },
  };

  // Construct the configuration for the Inspect request.
  const inspectConfig = {
    customInfoTypes: [customInfoType],
    includeQuote: true,
  };

  // Construct the Inspect request to be sent by the client.
  const request = {
    parent: `projects/${projectId}/locations/global`,
    inspectConfig: inspectConfig,
    item: {
      value: string,
    },
  };
  // Run request
  const [response] = await dlp.inspectContent(request);

  // Print Findings
  const findings = response.result.findings;
  if (findings.length > 0) {
    console.log(`Findings: ${findings.length}\n`);
    findings.forEach(finding => {
      console.log(`InfoType: ${finding.infoType.name}`);
      console.log(`\tQuote: ${finding.quote}`);
      console.log(`\tLikelihood: ${finding.likelihood} \n`);
    });
  } else {
    console.log('No findings.');
  }
}
await inspectWithStoredInfotype();

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\ContentItem;
use Google\Cloud\Dlp\V2\CustomInfoType;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\Likelihood;
use Google\Cloud\Dlp\V2\StoredType;

/**
 * Inspect with stored infoType.
 * Scan content using a large custom dictionary detector.
 *
 * @param string $projectId             The Google Cloud Project ID to run the API call under.
 * @param string $storedInfoTypeName    The name of the stored infotype whose This value must be in the format
 * projects/projectName/(locations/locationId)/storedInfoTypes/storedInfoTypeName.
 * @param string $textToInspect         The string to inspect.
 */
function inspect_with_stored_infotype(
    string $projectId,
    string $storedInfoTypeName,
    string $textToInspect
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

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

    // Specify the content to be inspected.
    $item = (new ContentItem())
        ->setValue($textToInspect);

    // Reference to the existing StoredInfoType to inspect the data.
    $customInfoType = (new CustomInfoType())
        ->setInfoType((new InfoType())
            ->setName('STORED_TYPE'))
        ->setStoredType((new StoredType())
            ->setName($storedInfoTypeName));

    // Construct the configuration for the Inspect request.
    $inspectConfig = (new InspectConfig())
        ->setCustomInfoTypes([$customInfoType])
        ->setIncludeQuote(true);

    // Run request.
    $response = $dlp->inspectContent([
        'parent' => $parent,
        'inspectConfig' => $inspectConfig,
        'item' => $item
    ]);

    // Print the results.
    $findings = $response->getResult()->getFindings();
    if (count($findings) == 0) {
        printf('No findings.' . PHP_EOL);
    } else {
        printf('Findings:' . PHP_EOL);
        foreach ($findings as $finding) {
            printf('  Quote: %s' . PHP_EOL, $finding->getQuote());
            printf('  Info type: %s' . PHP_EOL, $finding->getInfoType()->getName());
            printf('  Likelihood: %s' . PHP_EOL, Likelihood::name($finding->getLikelihood()));
        }
    }
}

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 inspect_with_stored_infotype(
    project: str,
    stored_info_type_id: str,
    content_string: str,
) -> None:
    """Uses the Data Loss Prevention API to inspect/scan content using stored
    infoType.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        content_string: The string to inspect.
        stored_info_type_id: The identifier of stored infoType used to inspect.
    """

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

    # Convert stored infoType id into full resource id
    stored_type_name = f"projects/{project}/storedInfoTypes/{stored_info_type_id}"

    # Construct a custom info type dictionary using stored infoType.
    custom_info_types = [
        {
            "info_type": {"name": "STORED_TYPE"},
            "stored_type": {
                "name": stored_type_name,
            },
        }
    ]

    # Construct the inspection configuration dictionary.
    inspect_config = {
        "custom_info_types": custom_info_types,
        "include_quote": True,
    }

    # Construct the `item` to be inspected using stored infoType.
    item = {"value": content_string}

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

    # Call the API.
    response = dlp.inspect_content(
        request={
            "parent": parent,
            "inspect_config": inspect_config,
            "item": item,
        }
    )

    # Print out the results.
    if response.result.findings:
        for finding in response.result.findings:
            print(f"Quote: {finding.quote}")
            print(f"Info type: {finding.info_type.name}")
            print(f"Likelihood: {finding.likelihood}")
    else:
        print("No findings.")

REST

Wenn der folgende JSON-Code an die Methode content.inspect gesendet wird, scannt er den angegebenen Text mit dem angegebenen gespeicherten infoType-Detektor. Der Parameter infoType ist erforderlich, da alle benutzerdefinierten infoTypes einen Namen haben müssen, der nicht mit integrierten infoTypes oder anderen benutzerdefinierten infoTypes in Konflikt steht. Der Parameter storedType enthält den vollständigen Ressourcenpfad des gespeicherten infoType.

JSON-Eingabe

POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect

{
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"GITHUB_LOGINS"
        },
        "storedType":{
          "name":"projects/PROJECT_ID/storedInfoTypes/github-logins"
        }
      }
    ]
  },
  "item":{
    "value":"The commit was made by githubuser."
  }
}

Fehler beheben

Wenn beim Versuch, einen gespeicherten infoType aus einer in Cloud Storage gespeicherten Begriffsliste zu erstellen, ein Fehler auftritt, kann das folgende Ursachen haben:

  • Sie haben eine Obergrenze für gespeicherte infoTypes erreicht. Je nach Problem gibt es verschiedene Umgehungen:
    • Wenn Sie die Obergrenze für eine einzelne Eingabedatei in Cloud Storage (200 MB) erreichen, können Sie versuchen, die Datei in mehrere Dateien aufzuteilen. Sie können mehrere Dateien verwenden, um ein einzelnes benutzerdefiniertes Wörterbuch zu erstellen, solange die kombinierte Größe aller Dateien 1 GB nicht überschreitet.
    • Für BigQuery gelten nicht dieselben Einschränkungen wie für Cloud Storage. Sie können die Begriffe in eine BigQuery-Tabelle verschieben. Die maximale Größe einer benutzerdefinierten Wörterbuchspalte in BigQuery beträgt 1 GB und die maximale Anzahl der Zeilen 5.000.000.
    • Wenn Ihre Begriffslistendatei alle anwendbaren Limits für Listen von Quellbegriffen überschreitet, müssen Sie die Begriffslistendatei in mehrere Dateien aufteilen und für jede Datei ein Wörterbuch erstellen. Erstellen Sie dann für jedes Wörterbuch einen separaten Scanjob.
  • Einer oder mehrere Ihrer Begriffe enthalten nicht mindestens einen Buchstaben oder eine Ziffer. Sensitive Data Protection kann nicht nach Begriffen suchen, die ausschließlich aus Leerzeichen oder Symbolen bestehen. Mindestens ein Buchstabe oder eine Ziffer muss enthalten sein. Sehen Sie sich Ihre Begriffsliste an, prüfen Sie, ob solche Begriffe enthalten sind, und korrigieren oder löschen Sie sie dann.
  • Ihre Begriffsliste enthält eine Wortgruppe mit zu vielen "Komponenten". Eine Komponente in diesem Kontext ist eine fortlaufende Sequenz, die nur Buchstaben, nur Ziffern oder nur Nicht-Buchstaben- und Nicht-Ziffern-Zeichen wie Leerzeichen oder Symbole enthält. Sehen Sie sich Ihre Begriffsliste an, prüfen Sie, ob solche Begriffe enthalten sind, und korrigieren oder löschen Sie sie dann.
  • Der Dienst-Agent für den Schutz sensibler Daten hat keinen Zugriff auf die Wörterbuchquelldaten oder auf den Cloud Storage-Bucket zum Speichern von Wörterbuchdateien. Zum Beheben dieses Problems erteilen Sie dem Kundenservicemitarbeiter für den Schutz sensibler Daten die Rolle „Storage Admin“ (roles/storage.admin) oder die Rollen „BigQuery Data Owner“ (roles/bigquery.dataOwner) und „BigQuery Job User“ (roles/bigquery.jobUser).

API-Übersicht

Wenn Sie einen großen benutzerdefinierten Wörterbuchdetektor erstellen, ist das Erstellen eines gespeicherten infoType erforderlich.

Ein gespeicherter infoType wird im Schutz sensibler Daten durch das StoredInfoType-Objekt dargestellt. Es besteht aus den folgenden zugehörigen Objekten:

  • StoredInfoTypeVersion enthält das Erstellungsdatum und die Erstellungszeit sowie die letzten fünf Fehlermeldungen, die bei der Erstellung der aktuellen Version aufgetreten sind.

    • StoredInfoTypeConfig enthält die Konfiguration des gespeicherten infoType, einschließlich Name und Beschreibung. Bei einem großen benutzerdefinierten Wörterbuch muss type eine LargeCustomDictionaryConfig sein.

      • LargeCustomDictionaryConfig gibt Folgendes an:
        • Den Speicherort Ihrer Wortgruppenliste in Cloud Storage oder BigQuery.
        • Den Speicherort der generierten Wörterbuchdateien in Cloud Storage.
    • StoredInfoTypeState enthält den Status der aktuellen Version und alle ausstehenden Versionen des gespeicherten infoType. Statusinformationen geben Aufschluss darüber, ob der gespeicherte infoType neu erstellt wird, einsatzbereit oder ungültig ist.

Details zum Wörterbuchabgleich

Im Folgenden finden Sie Hinweise dazu, wie der Schutz sensibler Daten den Abgleich mit Wörtern und Wortgruppen im Wörterbuch vornimmt. Diese Punkte gelten sowohl für reguläre als auch für große benutzerdefinierte Wörterbücher:

  • Bei Wörtern in Wörterbüchern wird nicht zwischen Groß- und Kleinschreibung unterschieden. Wenn Ihr Wörterbuch Abby enthält, wird es auf abby, ABBY, Abby usw. abgestimmt.
  • Alle Zeichen, ob in Wörterbüchern oder zu scannenden Inhalten, die nicht zu den in der Unicode Basic Multilingual Plane enthaltenen Buchstaben, Ziffern und anderen alphabetischen Zeichen zählen, werden beim Scannen auf Übereinstimmungen wie Leerzeichen behandelt. Wenn Ihr Wörterbuch nach Abby Abernathy sucht, findet es abby abernathy, Abby, Abernathy, Abby (ABERNATHY) und so weiter als Übereinstimmungen.
  • Die Zeichen in direkter Nachbarschaft zu einer Übereinstimmung müssen von einem anderen Typ sein (Buchstaben oder Ziffern) als die benachbarten Zeichen innerhalb des Worts. Wenn Ihr Wörterbuch nach Abi sucht, werden die ersten drei Zeichen von Abi904, aber nicht von Abigail als Übereinstimmung erkannt.
  • Wörter in Wörterbüchern, die Zeichen aus der Supplementary Multilingual Plane des Unicode-Standards enthalten, können zu unerwarteten Ergebnissen führen. Beispiele für solche Zeichen sind Emojis, wissenschaftliche Symbole und historische Schriften.

Buchstaben, Ziffern und andere alphabetische Zeichen sind so definiert:

  • Buchstaben: Zeichen mit den allgemeinen Kategorien Lu, Ll, Lt, Lm oder Lo in der Unicode-Spezifikation
  • Ziffern: Zeichen mit der allgemeinen Kategorie Nd in der Unicode-Spezifikation
  • Andere alphabetische Zeichen: Zeichen mit der allgemeinen Kategorie Nl in der Unicode-Spezifikation oder mit der beitragenden Eigenschaft Other_Alphabetic gemäß Unicode-Standard

Zum Erstellen, Bearbeiten oder Löschen eines gespeicherten infoType verwenden Sie die folgenden Methoden:

  • storedInfoTypes.create: erstellt einen neuen gespeicherten infoType mit der von Ihnen angegebenen StoredInfoTypeConfig.
  • storedInfoTypes.patch: erstellt den gespeicherten infoType mit einer von Ihnen angegebenen neuen StoredInfoTypeConfig neu. Wenn keine angegeben wird, wird mit dieser Methode eine neue Version des gespeicherten infoType mit der vorhandenen StoredInfoTypeConfig erstellt.
  • storedInfoTypes.get: ruft die StoredInfoTypeConfig und alle ausstehenden Versionen des angegebenen gespeicherten infoType ab.
  • storedInfoTypes.list: listet alle aktuell gespeicherten infoTypes auf.
  • storedInfoTypes.delete: löscht den angegebenen gespeicherten infoType.