Specifica delle località di elaborazione

Grazie alla possibilità di specificare una regione in cui eseguire le operazioni di protezione dei dati sensibili, puoi controllare dove vengono trattati i dati potenzialmente sensibili. Questo documento spiega il concetto di località di elaborazione per la protezione dei dati sensibili e mostra come specificare una regione.

Per un elenco delle regioni e delle regioni multiple supportate, consulta Località di Sensitive Data Protection.

Informazioni su regioni e regioni multiple

Una regione è un luogo geografico specifico, ad esempio gli Stati Uniti occidentali o il nord-est asiatico. Una località con più regioni (o semplicemente più regioni) è una vasta area geografica, come l'Unione Europea, che contiene due o più regioni geografiche.

Considerazioni sulla località

Una buona posizione bilancia i costi di latenza, disponibilità e larghezza di banda.

  • Utilizza una regione per ottimizzare la latenza e la larghezza di banda di rete.

  • Utilizza più regioni quando vuoi elaborare dati esterni alla rete Google e distribuiti in aree geografiche di grandi dimensioni o quando vuoi la maggiore disponibilità offerta dalla ridondanza tra regioni.

  • In genere, devi elaborare i dati in una posizione comoda o contiene la maggior parte degli utenti dei tuoi dati.

  • Se la tua organizzazione è tenuta a conservare i dati in transito all'interno di una regione specificata, utilizza solo le regioni che supportano gli endpoint regionali (REP). In questo caso, devi utilizzare l'API Cloud Data Loss Prevention, perché gli endpoint regionali per Sensitive Data Protection non sono disponibili per l'utilizzo con la console Google Cloud.

Specifica una regione

La modalità di specifica della regione di elaborazione dipende dal tipo di endpoint a cui invii la richiesta: l'endpoint globale o un endpoint regionale. Il tipo di endpoint scelto dipende dal fatto che tu debba conservare i dati in transito all'interno di una regione specificata. Per ulteriori informazioni, consulta Endpoint globali e regionali per Sensitive Data Protection.

Specifica una regione in una richiesta all'endpoint globale

Console

Scegli una regione quando configuri l'operazione di protezione dei dati sensibili.

Ad esempio, quando crei un attivatore di job, scegli una località dal menu Località della risorsa, come mostrato di seguito:

Se la località di elaborazione non è un problema, utilizza la regione Globale e Google sceglie la località in cui deve avvenire l'elaborazione. Globale è la scelta predefinita per la regione.

REST

Inserisci le informazioni sulla regione nell'URL dell'endpoint della richiesta. Se la località di elaborazione non è un problema, utilizza la regione global e Google sceglierà la località in cui deve avvenire l'elaborazione. Tieni presente che tutte le risorse create da una richiesta che specifica la regione global vengono archiviate nella regione global.

Di seguito sono riportati alcuni esempi di richieste all'endpoint globale.

Utilizzo della regione globale

Le due richieste seguenti hanno lo stesso effetto. Non includere una regione equivale a specificare 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

Utilizzo di una regione specifica

Per specificare una regione per l'elaborazione, all'interno dell'URL della risorsa inseriscilocations/ e poi il nome della regione.

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

Specificare una regione in una richiesta a un endpoint a livello di regione

Console

Per la Protezione dei dati sensibili, gli endpoint regionali non sono disponibili per l'utilizzo con la console Google Cloud.

C#

Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.

Per autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.

Per autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per scoprire come installare e utilizzare la libreria client per Sensitive Data Protection, consulta Librerie client di Sensitive Data Protection.

Per autenticarti a Sensitive Data Protection, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

L'esempio seguente invia una richiesta content.inspect a un endpoint regionale. Tutti i dati allegati a questa richiesta rimangono nella regione specificata durante il transito, l'utilizzo e la modalità at-rest.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • REP_REGION: una regione in cui è disponibile un endpoint regionale (REP) per la protezione dei dati sensibili, ad esempio us-west2. Per un elenco completo delle regioni, consulta Località di Sensitive Data Protection.
  • PROJECT_ID: il tuo ID progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempio example-project.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

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

Considerazioni sul co-hosting

Quando esegui la scansione di un repository di archiviazione come Cloud Storage o BigQuery, devi specificare nella richiesta di protezione dei dati sensibili la stessa posizione del repository sottoposto a scansione. Ad esempio, se il set di dati BigQuery si trova nella località multiregionale dell'Unione europea, specifica la località multiregionale dell'Unione europea (europe) quando configuri il job Sensitive Data Protection.

Se non posizioni la richiesta di protezione dei dati sensibili nello stesso luogo del repository di archiviazione che stai analizzando, l'elaborazione della richiesta potrebbe essere suddivisa tra la posizione dei dati e la posizione specificata nella richiesta.

Passaggi successivi