Verarbeitungsstandorte angeben

Durch die Möglichkeit, eine Region anzugeben, in der die Vorgänge zum Schutz sensibler Daten ausgeführt werden sollen, können Sie steuern, wo potenziell vertrauliche Daten verarbeitet werden. In diesem Dokument wird das Konzept des Verarbeitungsstandorts für den Schutz vertraulicher Daten erläutert. Außerdem erfahren Sie, wie Sie eine Region angeben.

Eine Liste der unterstützten Regionen und Multiregionen finden Sie unter Standorte mit Schutz sensibler Daten.

Regionen und Multiregionen

Eine Region ist ein bestimmter geografischer Ort, z. B. die westliche USA oder Nordostasien. Ein multiregionaler Standort (oder einfach Multiregion) ist ein großes geografisches Gebiet (beispielsweise die Europäischen Union), das mindestens zwei geografische Regionen enthält.

Überlegungen zum Standort

Ein guter Standort bietet einen Ausgleich zwischen Latenz, Verfügbarkeit und Bandbreitenkosten.

  • Region verwenden, um Latenz und Netzwerkbandbreite zu optimieren

  • Verwenden Sie eine Multi-Region, wenn Sie Daten von außerhalb des Google-Netzwerks verarbeiten, die über große geografische Gebiete verteilt sind, oder wenn Sie die höhere Verfügbarkeit bieten möchten, die durch regionale Redundanz entsteht.

  • Im Allgemeinen sollten Sie Ihre Daten an einem Ort verarbeiten, der praktisch ist oder den Großteil der Nutzer Ihrer Daten enthält.

  • Wenn Ihre Organisation Daten bei der Übertragung in einer bestimmten Region aufbewahren muss, verwenden Sie nur die Regionen, die regionale Endpunkte (REP) unterstützen. In diesem Fall müssen Sie die Cloud Data Loss Prevention API verwenden, da die regionalen Endpunkte für den Schutz vertraulicher Daten nicht mit der Google Cloud Console verwendet werden können.

Region angeben

Wie Sie die Verarbeitungsregion angeben, hängt davon ab, an welchen Endpunkt Sie die Anfrage senden: an den globalen Endpunkt oder an einen regionalen Endpunkt. Welchen Endpunkttyp Sie auswählen, hängt davon ab, ob Sie Daten bei der Übertragung in einer bestimmten Region aufbewahren müssen. Weitere Informationen finden Sie unter Globale und regionale Endpunkte für den Schutz sensibler Daten.

Region in einer Anfrage an den globalen Endpunkt angeben

Console

Wählen Sie beim Einrichten des Vorgangs zum Schutz sensibler Daten eine Region aus.

Wenn Sie beispielsweise einen Job-Trigger erstellen, wählen Sie im Menü Ressourcenstandort einen Standort aus, wie hier gezeigt:

Wenn der Verarbeitungsort keine Rolle spielt, verwenden Sie die Region Global und Google wählt den Standort aus, an dem die Verarbeitung stattfinden soll. Global ist die Standardregion.

REST

Fügen Sie Regionsinformationen in die Anfrage-Endpunkt-URL ein. Wenn der Verarbeitungsort keine Rolle spielt, verwenden Sie die Region global und Google wählt den Standort aus, an dem die Verarbeitung stattfinden soll. Alle Ressourcen, die von einer Anfrage erstellt wurden, in der die Region global angegeben ist, werden in der Region global gespeichert.

Im Folgenden finden Sie einige Beispielanfragen an den globalen Endpunkt.

Globale Region verwenden

Die folgenden beiden Anfragen haben denselben Effekt. Das Fehlen einer Region ist identisch mit der Angabe von locations/global/.

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

Bestimmte Region verwenden

Zum Angeben einer Region für die Verarbeitung fügen Sie in der Ressourcen-URL locations/ und dann den Regionsnamen ein.

POST https://www.googleapis.com/dlp/v2/projects/PROJECT_ID/locations/us-west2/content:inspect

Region in einer Anfrage an einen regionalen Endpunkt angeben

Console

Für den Schutz sensibler Daten können regionale Endpunkte nicht mit der Google Cloud Console verwendet werden.

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.Collections.Generic;
using System.Linq;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using static Google.Cloud.Dlp.V2.InspectConfig.Types;

public class InspectStringRep
{
    public static InspectContentResponse Inspect(
        string projectId,
        string repLocation,
        string dataValue,
        string minLikelihood,
        int maxFindings,
        bool includeQuote,
        IEnumerable<InfoType> infoTypes,
        IEnumerable<CustomInfoType> customInfoTypes)
    {
        var inspectConfig = new InspectConfig
        {
            MinLikelihood = (Likelihood)Enum.Parse(typeof(Likelihood), minLikelihood, true),
            Limits = new FindingLimits
            {
                MaxFindingsPerRequest = maxFindings
            },
            IncludeQuote = includeQuote,
            InfoTypes = { infoTypes },
            CustomInfoTypes = { customInfoTypes }
        };
        var request = new InspectContentRequest
        {
            Parent = new LocationName(projectId, repLocation).ToString(),
            Item = new ContentItem
            {
                Value = dataValue
            },
            InspectConfig = inspectConfig
        };

        var dlp = new DlpServiceClientBuilder
        {
            Endpoint = $"dlp.{repLocation}.rep.googleapis.com"
        }.Build();

        var response = dlp.InspectContent(request);

        PrintResponse(includeQuote, response);

        return response;
    }

    private static void PrintResponse(bool includeQuote, InspectContentResponse response)
    {
        var findings = response.Result.Findings;
        if (findings.Any())
        {
            Console.WriteLine("Findings:");
            foreach (var finding in findings)
            {
                if (includeQuote)
                {
                    Console.WriteLine($"  Quote: {finding.Quote}");
                }
                Console.WriteLine($"  InfoType: {finding.InfoType}");
                Console.WriteLine($"  Likelihood: {finding.Likelihood}");
            }
        }
        else
        {
            Console.WriteLine("No findings.");
        }
    }
}

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

// inspectString inspects the a given string, and prints results.
func inspectStringRep(w io.Writer, projectID, repLocation, textToInspect string) error {
	// projectID := "my-project-id"
	// textToInspect := "My name is Gary and my email is gary@example.com"
	ctx := context.Background()

	// Assemble the regional endpoint url using provided rep location
	repEndpoint := fmt.Sprintf("dlp.%s.rep.googleapis.com:443", repLocation)

	// Initialize client.
	client, err := dlp.NewClient(ctx, option.WithEndpoint(repEndpoint))
	if err != nil {
		return err
	}
	defer client.Close() // Closing the client safely cleans up background resources.

	// Create and send the request.
	req := &dlppb.InspectContentRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, repLocation),
		Item: &dlppb.ContentItem{
			DataItem: &dlppb.ContentItem_Value{
				Value: textToInspect,
			},
		},
		InspectConfig: &dlppb.InspectConfig{
			InfoTypes: []*dlppb.InfoType{
				{Name: "PHONE_NUMBER"},
				{Name: "EMAIL_ADDRESS"},
				{Name: "CREDIT_CARD_NUMBER"},
			},
			IncludeQuote: true,
		},
	}
	resp, err := client.InspectContent(ctx, req)
	if err != nil {
		return err
	}

	// Process the results.
	result := resp.Result
	fmt.Fprintf(w, "Findings: %d\n", len(result.Findings))
	for _, f := range 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.cloud.dlp.v2.DlpServiceSettings;
import com.google.privacy.dlp.v2.ByteContentItem;
import com.google.privacy.dlp.v2.ByteContentItem.BytesType;
import com.google.privacy.dlp.v2.ContentItem;
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.protobuf.ByteString;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class InspectStringRep {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String repLocation = "regional-endpoint-location-to-use";
    String textToInspect = "My name is Gary and my email is gary@example.com";
    inspectString(projectId, repLocation, textToInspect);
  }

  // Inspects the provided text.
  public static void inspectString(String projectId, String repLocation, String textToInspect)
      throws IOException {
    // Assemble the regional endpoint url using provided rep location
    String repEndpoint = String.format("dlp.%s.rep.googleapis.com:443", repLocation);
    DlpServiceSettings settings = DlpServiceSettings.newBuilder()
        .setEndpoint(repEndpoint)
        .build();
    // 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(settings)) {
      // Specify the type and content to be inspected.
      ByteContentItem byteItem =
          ByteContentItem.newBuilder()
              .setType(BytesType.TEXT_UTF8)
              .setData(ByteString.copyFromUtf8(textToInspect))
              .build();
      ContentItem item = ContentItem.newBuilder().setByteItem(byteItem).build();

      // Specify the type of info the inspection will look for.
      List<InfoType> infoTypes = new ArrayList<>();
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      for (String typeName : new String[] {"PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD_NUMBER"}) {
        infoTypes.add(InfoType.newBuilder().setName(typeName).build());
      }

      // Construct the configuration for the Inspect request.
      InspectConfig config =
          InspectConfig.newBuilder().addAllInfoTypes(infoTypes).setIncludeQuote(true).build();

      // Construct the Inspect request to be sent by the client.
      InspectContentRequest request =
          InspectContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, repLocation).toString())
              .setItem(item)
              .setInspectConfig(config)
              .build();

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

      // 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("\tInfo type: " + f.getInfoType().getName());
        System.out.println("\tLikelihood: " + f.getLikelihood());
      }
    }
  }
}

REST

Im folgenden Beispiel wird eine content.inspect-Anfrage an einen regionalen Endpunkt gesendet. Alle mit dieser Anfrage verknüpften Daten verbleiben in der angegebenen Region, während sie übertragen, verwendet und gespeichert werden.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • REP_REGION: Eine Region, in der ein regionaler Endpunkt (REP) für den Schutz sensibler Daten verfügbar ist, z. B. us-west2. Eine vollständige Liste der Regionen finden Sie unter Standorte für den Schutz sensibler Daten.
  • PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, z. B. example-project.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "inspectConfig": {
    "infoTypes": [
      {
        "name": "CREDIT_CARD_NUMBER"
      }
    ]
  },
  "item": {
    "value": "hi, my ccn is 4111111111111111"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "result": {
    "findings": [
      {
        "infoType": {
          "name": "CREDIT_CARD_NUMBER",
          "sensitivityScore": {
            "score": "SENSITIVITY_HIGH"
          }
        },
        "likelihood": "LIKELY",
        "location": {
          "byteRange": {
            "start": "14",
            "end": "30"
          },
          "codepointRange": {
            "start": "14",
            "end": "30"
          }
        },
        "createTime": "2024-08-09T19:54:13.348Z",
        "findingId": "2024-08-09T19:54:13.352163Z4747901452516738787"
      }
    ]
  }
}

Überlegungen zu Colocations

Wenn Sie ein Speicher-Repository wie Cloud Storage oder BigQuery scannen, sollten Sie denselben Speicherort in Ihrer Anfrage zum Schutz sensibler Daten als Speicherort des gescannten Repositorys angeben. Wenn sich das BigQuery-Dataset zum Beispiel am multiregionalen Standort „Europäische Union“ befindet, geben Sie beim Konfigurieren des Jobs für den Schutz sensibler Daten die Multiregion (europe) an.

Wenn Sie Ihre Anfrage zum Schutz sensibler Daten nicht an demselben Standort wie dem des zu durchsuchenden Speicher-Repositorys stellen, wird die Verarbeitung Ihrer Anfrage möglicherweise zwischen dem Speicherort der Daten und dem in der Anfrage angegebenen Speicherort aufgeteilt.

Nächste Schritte