Menentukan lokasi pemrosesan

Dengan kemampuan untuk menentukan region tempat menjalankan operasi Perlindungan Data Sensitif, Anda dapat mengontrol tempat data yang berpotensi sensitif diproses. Dokumen ini menjelaskan konsep lokasi pemrosesan Perlindungan Data Sensitif 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 beberapa region 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.

  • Umumnya, Anda harus memproses data di lokasi yang mudah dijangkau atau berisi sebagian besar pengguna data Anda.

  • Jika organisasi Anda diwajibkan untuk menyimpan data dalam pengiriman dalam region yang ditentukan, hanya gunakan region yang mendukung endpoint regional (REP). Dalam hal ini, Anda perlu menggunakan Cloud Data Loss Prevention API, karena endpoint regional untuk Sensitive Data Protection tidak tersedia untuk digunakan dengan konsol Google Cloud.

Menentukan region

Cara Anda menentukan region pemrosesan bergantung pada jenis endpoint tempat Anda mengirim permintaan—endpoint global atau endpoint regional. Jenis endpoint yang Anda pilih bergantung pada apakah Anda diwajibkan untuk menyimpan data dalam pengiriman dalam wilayah yang ditentukan. 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.

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

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

REST

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

Berikut adalah beberapa contoh permintaan ke endpoint global.

Menggunakan region global

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

Untuk menentukan region yang akan diproses, dalam URL resource, masukkan 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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.

Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.

Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 Perlindungan Data Sensitif, lihat library klien Perlindungan Data Sensitif.

Untuk melakukan autentikasi ke Perlindungan Data Sensitif, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 mengirimkan permintaan content.inspect ke endpoint regional. Setiap data yang dilampirkan ke permintaan ini tetap berada di region yang ditentukan saat dalam transit, digunakan, dan dalam penyimpanan.

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: Project ID 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 Perlindungan Data Sensitif sebagai 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 Perlindungan Data Sensitif bersama dengan repositori penyimpanan yang Anda pindai, pemrosesan permintaan Anda dapat dibagi antara lokasi data dan lokasi yang ditentukan dalam permintaan.

Langkah selanjutnya