Menentukan lokasi pemrosesan

Dengan kemampuan untuk menentukan region tempat operasi Sensitive Data Protection dilakukan, Anda dapat mengontrol tempat data yang berpotensi sensitif diproses. Dokumen ini menjelaskan konsep lokasi pemrosesan Sensitive Data Protection dan menunjukkan cara menentukan region.

Untuk melihat daftar region dan multi-region yang didukung, lihat Lokasi Perlindungan Data Sensitif.

Tentang region dan multi-region

Region adalah lokasi geografis tertentu, seperti Amerika Serikat bagian barat atau Asia timur laut. Lokasi multi-region (atau hanya multi-region) adalah area geografis yang luas, seperti Uni Eropa, yang berisi dua atau lebih wilayah geografis.

Pertimbangan lokasi

Lokasi yang baik menyeimbangkan biaya latensi, ketersediaan, dan bandwidth.

  • Gunakan region untuk membantu mengoptimalkan latensi dan bandwidth jaringan.

  • Gunakan multi-region jika Anda ingin memproses data dari luar jaringan Google dan didistribusikan di wilayah geografis yang luas, atau jika Anda menginginkan ketersediaan yang lebih tinggi yang disertai redundansi di seluruh region.

  • Secara umum, Anda harus memproses data di lokasi yang nyaman atau berisi sebagian besar pengguna data Anda.

  • Jika organisasi Anda diwajibkan untuk menyimpan data dalam transit di lokasi tertentu, maka gunakan hanya region atau multi-region yang mendukung endpoint regional (REP). Dalam kasus ini, Anda harus menggunakan Cloud Data Loss Prevention API, karena endpoint regional untuk Sensitive Data Protection tidak tersedia untuk digunakan dengan Google Cloud konsol.

Menentukan wilayah

Cara Anda menentukan region pemrosesan bergantung pada jenis endpoint yang Anda gunakan untuk mengirim permintaan—endpoint global atau endpoint regional. Jenis endpoint yang Anda pilih bergantung pada apakah Anda diwajibkan untuk menyimpan data dalam transit di dalam wilayah tertentu. Untuk mengetahui informasi selengkapnya, lihat Endpoint global dan regional untuk Perlindungan Data Sensitif.

Menentukan region dalam permintaan ke endpoint global

Konsol

Pilih region saat menyiapkan operasi Perlindungan Data Sensitif Anda.

Misalnya, saat membuat pemicu tugas, pilih lokasi dari menu Lokasi resource, seperti yang ditunjukkan di sini:

Jika lokasi pemrosesan tidak menjadi masalah, gunakan region Global dan Google akan memilih lokasi tempat pemrosesan harus dilakukan. Global adalah pilihan region default.

REST

Masukkan informasi wilayah ke dalam URL endpoint permintaan. Jika lokasi pemrosesan tidak menjadi masalah, gunakan region global dan Google akan memilih lokasi tempat pemrosesan harus dilakukan. Perhatikan bahwa semua resource yang dibuat oleh permintaan yang menentukan region global disimpan di region global.

Berikut adalah beberapa contoh permintaan ke endpoint global.

Menggunakan wilayah global

Dua permintaan berikut memiliki efek yang sama. Tidak menyertakan region sama dengan menentukan 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

Menggunakan wilayah tertentu

Untuk menentukan region pemrosesan, dalam URL resource, sisipkan locations/, lalu nama region.

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

Menentukan region dalam permintaan ke endpoint regional

Konsol

Untuk Perlindungan Data Sensitif, endpoint regional tidak tersedia untuk digunakan dengan konsol Google Cloud .

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.

Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.

Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Sensitive Data Protection, lihat library klien Sensitive Data Protection.

Untuk melakukan autentikasi ke Sensitive Data Protection, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Contoh berikut mengirim permintaan content.inspect ke endpoint regional. Data apa pun yang dilampirkan pada permintaan ini tetap berada di region yang ditentukan saat dalam perjalanan, digunakan, dan saat tidak digunakan.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • REP_REGION: region tempat endpoint regional (REP) untuk Sensitive Data Protection tersedia—misalnya, us-west2. Untuk mengetahui daftar lengkap region, lihat Lokasi Perlindungan Data Sensitif.
  • PROJECT_ID: ID project Google Cloud Anda. Project ID adalah string alfanumerik, seperti example-project.

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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

Pertimbangan kolokasi

Saat memindai repositori penyimpanan seperti Cloud Storage atau BigQuery, Anda harus menentukan lokasi yang sama dalam permintaan Sensitive Data Protection dengan lokasi repositori yang Anda pindai. Misalnya, jika set data BigQuery berada di lokasi multi-region Uni Eropa, tentukan multi-region Uni Eropa (europe) saat mengonfigurasi tugas Perlindungan Data Sensitif.

Jika Anda tidak menempatkan permintaan Sensitive Data Protection bersama dengan repositori penyimpanan yang Anda pindai, pemrosesan permintaan Anda dapat dibagi antara lokasi data dan lokasi yang ditentukan dalam permintaan.

Langkah berikutnya