InfoTypes e detetores de infoType

A Proteção de dados confidenciais usa tipos de informações, ou infoTypes, para definir o que procura. Um infoType é um tipo de dados confidenciais, como um nome, um endereço de email, um número de telefone, um número de identificação, um número de cartão de crédito, etc. Um detetor infoType é o mecanismo de deteção correspondente que corresponde aos critérios de correspondência de um infoType.

Práticas recomendadas para selecionar infoTypes

Compreender os seus dados é um dos primeiros passos essenciais para os proteger. Como prática recomendada, deve recolher, armazenar e processar apenas as informações de que necessita para a sua empresa. Ao identificar os dados que está a processar, pode tomar decisões informadas para a sua empresa, utilizadores e postura de segurança e privacidade dos dados.

Alguns dos seus exemplos de utilização empresarial podem exigir determinadas informações confidenciais, enquanto outros podem não exigir. Não existe uma única solução que suporte todos os exemplos de utilização. Por este motivo, a Proteção de dados confidenciais oferece um controlo flexível sobre os tipos de dados a analisar. Se estiver a usar infoTypes para desidentificação ou ocultação, também tem controlo sobre quando e como os dados são transformados.

Diretrizes gerais

Considere as seguintes diretrizes gerais quando selecionar infoTypes.

Use infoTypes gerais em vez de infoTypes específicos

Se não precisar que os resultados da análise mostrem os infoTypes específicos que foram detetados, considere usar infoTypes gerais em vez de infoTypes específicos nas suas configurações de inspeção. Para obter informações sobre as vantagens de usar detetores de infoType gerais nas suas solicitações, consulte Detetores de infoType gerais e específicos nesta página.

Para ver uma lista completa dos infoTypes gerais e dos infoTypes específicos que incluem, consulte o artigo infoTypes gerais.

Informações confidenciais que não precisa de recolher

Cada serviço na sua empresa deve recolher apenas os dados de que o serviço precisa. Por exemplo, determinados serviços na sua empresa não precisam de recolher informações financeiras. Para esses serviços, considere ativar detetores infoType, como CREDIT_CARD_NUMBER, FINANCIAL_ACCOUNT_NUMBER e outros infoTypes na categoria da indústria FINANCE.

Informações que precisa de recolher, mas que não quer partilhar amplamente com a sua equipa

Podem existir exemplos de utilização válidos para a recolha de informações pessoais, mas não deve partilhá-las amplamente com a sua equipa. Por exemplo, um cliente que regista um pedido de apoio técnico pode fornecer-lhe informações de contacto para que possa entrar em contacto com ele para resolver quaisquer problemas. Não quer que todos os membros da equipa que veem o pedido vejam as informações de identificação pessoal (IIP). Considere ativar detetores de infoType, como PHONE_NUMBER, EMAIL_ADDRESS e outros infoTypes na categoria de tipo PII.

Categorias de dados confidenciais que estão sujeitas a regulamentos da indústria, de privacidade de dados ou jurisdicionais

Determinados tipos de informações são considerados confidenciais devido à forma como são emitidos ou para que podem ser usados. Noutros casos, as informações contextuais e demográficas são consideradas uma categoria protegida. Estes tipos de informações podem ter restrições adicionais sobre a forma como são recolhidas, utilizadas e geridas. Considere ativar os detetores infoType nas seguintes categorias:

Escolher entre infoTypes semelhantes

Considere o seguinte ao escolher entre detetores infoType semelhantes.

Passaportes

Se não precisar de procurar identificadores de passaportes de um país específico, escolha o detetor generalizado: PASSPORT.

Estão disponíveis determinados detetores de passaportes específicos de países, como UK_PASSPORT. No entanto, alguns detetores de passaportes específicos de países só conseguem identificar passaportes com formatos específicos ou com a presença de pistas contextuais.

Nomes de pessoas

Ao procurar nomes de pessoas, use PERSON_NAME na maioria dos casos de utilização em vez de FIRST_NAME ou LAST_NAME.

PERSON_NAME é um detetor para nomes de pessoas. Inclui nomes de uma única palavra e nomes completos. Este detetor tenta detetar, por exemplo, nomes como Jane, Jane Smith e Jane Marie Smith através de várias tecnologias, incluindo a compreensão de linguagem natural. FIRST_NAME e LAST_NAME são subconjuntos deste detetor que tentam identificar partes de um nome. As conclusões destes detetores são sempre subconjuntos de conclusões de PERSON_NAME.

Datas e horas

Se não precisar de procurar todas as datas, considere usar um detetor de datas segmentado, como o DATE_OF_BIRTH. Este detetor tenta identificar o contexto que indica que a data está relacionada com o nascimento de uma pessoa.

O detetor DATE tenta encontrar todas as datas, independentemente do contexto. Também sinaliza datas relativas, como hoje ou ontem. Da mesma forma, TIME tenta encontrar todas as indicações de tempo.

Localizações

Se não precisar de procurar todas as localizações, considere usar STREET_ADDRESS em vez do detetor LOCATION. O detetor STREET_ADDRESS tenta encontrar endereços totalmente qualificados, que são normalmente mais precisos do que localizações genéricas e podem ser considerados mais confidenciais.

O detetor infoType tenta encontrar qualquer localização, independentemente do contexto. Por exemplo, Paris ou Canadá.LOCATION

Detetores de InfoType que requerem contexto

Muitos detetores de infoType requerem a presença de pistas contextuais antes de identificarem uma correspondência. Se um detetor de infoType incorporado não estiver a sinalizar itens que espera que sejam sinalizados, porque não existem pistas contextuais próximas desses itens, considere usar GENERIC_ID ou um detetor de infoType personalizado.

Tipos de informações sem uma definição comum da indústria

Alguns tipos de informações não têm uma definição comum na indústria. Exemplos: números de registos médicos, números de contas, PINs e códigos de segurança. Para estes tipos, considere usar infoTypes como GENERIC_ID, FINANCIAL_ACCOUNT_NUMBER e MEDICAL_RECORD_NUMBER. Estes detetores usam uma combinação de deteção de entidades e contexto para encontrar elementos potencialmente confidenciais.

Detetores infoType com latência mais elevada

  • Evite ativar detetores de infoType de que não precisa. Embora as seguintes sejam úteis em determinados cenários, estes infoTypes podem fazer com que os pedidos sejam executados muito mais lentamente do que os pedidos que não os incluem:

    • PERSON_NAME
    • FEMALE_NAME
    • MALE_NAME
    • FIRST_NAME
    • LAST_NAME
    • DATE_OF_BIRTH
    • LOCATION
    • STREET_ADDRESS
    • ORGANIZATION_NAME
  • Especifique sempre os detetores infoType de forma explícita. Não use uma lista infoTypes vazia.

Como usar infoTypes

A proteção de dados confidenciais usa detetores infoType na configuração das respetivas análises para determinar o que inspecionar e como transformar as conclusões. Os nomes dos InfoTypes também são usados quando são apresentados ou comunicados os resultados da análise.

Por exemplo, se quiser procurar endereços de email num bloco de texto, especifica o detetor de EMAIL_ADDRESS infoType na configuração da inspeção. Se quiser ocultar endereços de email do bloco de texto, especifica EMAIL_ADDRESS na configuração de inspeção e na configuração de desidentificação para indicar como ocultar ou transformar esse tipo.

Além disso, pode usar uma combinação de detetores de infoType incorporados e personalizados para excluir um subconjunto de endereços de email dos resultados da análise. Primeiro, crie um infoType personalizado denominado INTERNAL_EMAIL_ADDRESS e configure-o para excluir endereços de email de teste internos. Em seguida, pode configurar a análise para incluir constatações para EMAIL_ADDRESS, mas incluir uma regra de exclusão que exclua quaisquer constatações que correspondam a INTERNAL_EMAIL_ADDRESS. Para mais informações sobre as regras de exclusão e outras funcionalidades dos detetores de infoTypes personalizados, consulte o artigo Criar detetores de infoTypes personalizados.

A Proteção de dados confidenciais fornece um conjunto de detetores infoType incorporados que especifica por nome, cada um dos quais está listado na referência do detetor infoType. Estes detetores usam várias técnicas para descobrir e classificar cada tipo. Por exemplo, alguns tipos vão exigir uma correspondência de padrão, alguns podem ter somas de verificação matemáticas, alguns têm restrições de dígitos especiais e outros podem ter prefixos específicos ou contexto em torno das conclusões.

Exemplos

Quando configura a Proteção de dados confidenciais para analisar o seu conteúdo, inclui os detetores infoType a usar na configuração da análise.

Por exemplo, os seguintes exemplos de JSON e código demonstram um pedido de análise simples à API DLP. Tenha em atenção que o detetor PHONE_NUMBER é especificado em inspectConfig, o que indica à proteção de dados confidenciais que analise a string fornecida para encontrar um número de telefone.

C#

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


using System;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;

public class InspectPhoneNumber
{
    public static InspectContentResponse Inspect(
        string projectId,
        string text,
        Likelihood minLikelihood = Likelihood.Possible)
    {
        // Instantiate a client.
        var dlp = DlpServiceClient.Create();

        // Set content item.
        var contentItem = new ContentItem { Value = text };

        // Construct inspect config.
        var inspectConfig = new InspectConfig
        {
            InfoTypes = { new InfoType { Name = "PHONE_NUMBER" } },
            IncludeQuote = true,
            MinLikelihood = minLikelihood
        };

        // Construct a request.
        var request = new InspectContentRequest
        {
            ParentAsLocationName = new LocationName(projectId, "global"),
            InspectConfig = inspectConfig,
            Item = contentItem,
        };

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

        // Inspect the results.
        var resultFindings = response.Result.Findings;

        Console.WriteLine($"Findings: {resultFindings.Count}");

        foreach (var f in resultFindings)
        {
            Console.WriteLine("\tQuote: " + f.Quote);
            Console.WriteLine("\tInfo type: " + f.InfoType.Name);
            Console.WriteLine("\tLikelihood: " + f.Likelihood);
        }

        return response;
    }
}

Go

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import (
	"context"
	"fmt"
	"io"

	dlp "cloud.google.com/go/dlp/apiv2"
	"cloud.google.com/go/dlp/apiv2/dlppb"
)

// inspectPhoneNumber demonstrates a simple scan request to the Cloud DLP API.
// Notice that the PHONE_NUMBER detector is specified in inspectConfig,
// which instructs Cloud DLP to scan the given string for a phone number.
func inspectPhoneNumber(w io.Writer, projectID, textToInspect string) error {
	// projectID := "my-project-id"
	// textToInspect := "My phone number is (123) 555-6789"

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

	// Create and send the request.
	req := &dlppb.InspectContentRequest{
		Parent: fmt.Sprintf("projects/%s/locations/global", projectID),
		Item: &dlppb.ContentItem{
			DataItem: &dlppb.ContentItem_Value{
				Value: textToInspect,
			},
		},
		InspectConfig: &dlppb.InspectConfig{
			// Specify the type of info the inspection will look for.
			// See https://cloud.google.com/dlp/docs/infotypes-reference
			// for complete list of info types
			InfoTypes: []*dlppb.InfoType{
				{Name: "PHONE_NUMBER"},
			},
			IncludeQuote: true,
		},
	}

	// Send the request.
	resp, err := client.InspectContent(ctx, req)
	if err != nil {
		fmt.Fprintf(w, "receive: %v", err)
		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

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.


import com.google.cloud.dlp.v2.DlpServiceClient;
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.Likelihood;
import com.google.privacy.dlp.v2.LocationName;
import java.io.IOException;

public class InspectPhoneNumber {

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

  // Inspects the provided text.
  public static void inspectString(String projectId, 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 type and content to be inspected.
      ContentItem item = ContentItem.newBuilder().setValue(textToInspect).build();

      // Specify the type of info the inspection will look for.
      // See https://cloud.google.com/dlp/docs/infotypes-reference for complete list of info types
      InfoType infoType = InfoType.newBuilder().setName("PHONE_NUMBER").build();

      // Construct the configuration for the Inspect request.
      InspectConfig config =
          InspectConfig.newBuilder()
              .setIncludeQuote(true)
              .setMinLikelihood(Likelihood.POSSIBLE)
              .addInfoTypes(infoType)
              .build();

      // Construct the Inspect request to be sent by the client.
      InspectContentRequest request =
          InspectContentRequest.newBuilder()
              .setParent(LocationName.of(projectId, "global").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());
      }
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

// 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 = 'my-project';

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

// The minimum likelihood required before returning a match
// const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';

// The maximum number of findings to report per request (0 = server maximum)
// const maxFindings = 0;

// The infoTypes of information to match
// See https://cloud.google.com/dlp/docs/concepts-infotypes for more information
// about supported infoTypes.
// const infoTypes = [{ name: 'PHONE_NUMBER' }];

// The customInfoTypes of information to match
// const customInfoTypes = [{ infoType: { name: 'DICT_TYPE' }, dictionary: { wordList: { words: ['foo', 'bar', 'baz']}}},
//   { infoType: { name: 'REGEX_TYPE' }, regex: {pattern: '\\(\\d{3}\\) \\d{3}-\\d{4}'}}];

// Whether to include the matching string
// const includeQuote = true;

async function inspectPhoneNumber() {
  // Construct item to inspect
  const item = {value: string};

  // Construct request
  const request = {
    parent: `projects/${projectId}/locations/global`,
    inspectConfig: {
      infoTypes: infoTypes,
      customInfoTypes: customInfoTypes,
      minLikelihood: minLikelihood,
      includeQuote: includeQuote,
      limits: {
        maxFindingsPerRequest: maxFindings,
      },
    },
    item: item,
  };

  // Run request
  const [response] = await dlp.inspectContent(request);
  const findings = response.result.findings;
  if (findings.length > 0) {
    console.log('Findings:');
    findings.forEach(finding => {
      if (includeQuote) {
        console.log(`\tQuote: ${finding.quote}`);
      }
      console.log(`\tInfo type: ${finding.infoType.name}`);
      console.log(`\tLikelihood: ${finding.likelihood}`);
    });
  } else {
    console.log('No findings.');
  }
}
inspectPhoneNumber();

PHP

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

use Google\Cloud\Dlp\V2\Client\DlpServiceClient;
use Google\Cloud\Dlp\V2\ContentItem;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
use Google\Cloud\Dlp\V2\InspectContentRequest;
use Google\Cloud\Dlp\V2\Likelihood;

/**
 * Inspect data for phone numbers
 * Demonstrates a simple scan request to the Cloud DLP API. Notice that the PHONE_NUMBER detector is specified in inspectConfig, which instructs Cloud DLP to scan the given string for a phone number.
 *
 * @param string $projectId         The Google Cloud project id to use as a parent resource.
 * @param string $textToInspect     The string to inspect.
 */
function inspect_phone_number(
    // TODO(developer): Replace sample parameters before running the code.
    string $projectId,
    string $textToInspect = 'My name is Gary and my phone number is (415) 555-0890'
): void {
    // Instantiate a client.
    $dlp = new DlpServiceClient();

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

    // Specify what content you want the service to Inspect.
    $item = (new ContentItem())
        ->setValue($textToInspect);

    $inspectConfig = (new InspectConfig())
        // The infoTypes of information to match
        ->setInfoTypes([
            (new InfoType())->setName('PHONE_NUMBER'),
        ])
        // Whether to include the matching string
        ->setIncludeQuote(true)
        ->setMinLikelihood(Likelihood::POSSIBLE);

    // Run request
    $inspectContentRequest = (new InspectContentRequest())
        ->setParent($parent)
        ->setInspectConfig($inspectConfig)
        ->setItem($item);
    $response = $dlp->inspectContent($inspectContentRequest);

    // 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

Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.

Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

import google.cloud.dlp


def inspect_phone_number(
    project: str,
    content_string: str,
) -> None:
    """Uses the Data Loss Prevention API to analyze strings for protected data.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        content_string: The string to inspect phone number from.
    """

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

    # Prepare info_types by converting the list of strings into a list of
    # dictionaries (protos are also accepted).
    info_types = [{"name": "PHONE_NUMBER"}]

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

    # Construct the `item`.
    item = {"value": content_string}

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

    # 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

Entrada JSON:

POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/content:inspect?key={YOUR_API_KEY}

{
  "item":{
    "value":"My phone number is (415) 555-0890"
  },
  "inspectConfig":{
    "includeQuote":true,
    "minLikelihood":"POSSIBLE",
    "infoTypes":{
      "name":"PHONE_NUMBER"
    }
  }
}

Quando envia o pedido anterior para o ponto final especificado, a Proteção de dados confidenciais devolve o seguinte:

Saída JSON:

{
  "result":{
    "findings":[
      {
        "quote":"(415) 555-0890",
        "infoType":{
          "name":"PHONE_NUMBER"
        },
        "likelihood":"VERY_LIKELY",
        "location":{
          "byteRange":{
            "start":"19",
            "end":"33"
          },
          "codepointRange":{
            "start":"19",
            "end":"33"
          }
        },
        "createTime":"2018-10-29T23:46:34.535Z"
      }
    ]
  }
}

Tem de especificar infoTypes específicos indicados na referência na sua configuração de inspeção. Se não especificar nenhum infoType, a proteção de dados confidenciais usa uma lista de infoTypes predefinida destinada apenas a fins de teste. A lista predefinida pode não ser adequada para os seus exemplos de utilização.

Para mais informações sobre como usar detetores de infoType para analisar o seu conteúdo, consulte um dos tópicos de instruções sobre inspeção, ocultação ou remoção de identificação.

Certeza e testes

As conclusões são comunicadas com uma pontuação de certeza denominada probabilidade. A pontuação de probabilidade indica a probabilidade de uma descoberta corresponder ao tipo correspondente. Por exemplo, um tipo pode devolver uma probabilidade mais baixa se corresponder apenas ao padrão e devolver uma probabilidade mais elevada se corresponder ao padrão e tiver um contexto positivo à sua volta. Por este motivo, pode reparar que uma única descoberta pode corresponder a vários tipos com uma probabilidade inferior. Além disso, uma descoberta pode não aparecer ou ter uma certeza inferior se não corresponder corretamente ou se tiver um contexto negativo. Por exemplo, uma descoberta pode não ser comunicada se corresponder à estrutura do infoType especificado, mas falhar na soma de verificação do infoType. Em alternativa, um resultado pode corresponder a mais do que um infoType, mas ter contexto que melhora um deles e, por isso, só ser comunicado para esse tipo.

Se estiver a testar vários detetores, pode reparar que os dados falsos ou de exemplo não são comunicados porque não passam em verificações suficientes para serem comunicados.

Tipos de detetores infoType

A proteção de dados confidenciais inclui vários tipos de detetores infoType, todos resumidos aqui:

  • Os detetores de infoType integrados estão integrados na proteção de dados confidenciais. Incluem detetores para tipos de dados confidenciais específicos de um país ou de uma região, bem como tipos de dados aplicáveis a nível global. Os infoTypes gerais também estão disponíveis para ajudar a simplificar as suas configurações.
  • Os detetores infoType personalizados são detetores que cria por si. Existem três tipos de detetores de infoTypes personalizados:
    • Os detetores de dicionários personalizados pequenos são listas de palavras simples com as quais a proteção de dados confidenciais estabelece correspondências. Use pequenos detetores de dicionários personalizados quando tiver uma lista de até várias dezenas de milhares de palavras ou expressões. Os pequenos detetores de dicionários personalizados são preferíveis se não previr que a sua lista de palavras se altere significativamente.
    • Os detetores de dicionários personalizados grandes são gerados pela proteção de dados confidenciais através de grandes listas de palavras ou expressões armazenadas no Cloud Storage ou no BigQuery. Use detetores de dicionários personalizados grandes quando tiver uma lista grande de palavras ou expressões, até dezenas de milhões.
    • Os detetores de expressões regulares (regex) permitem que a proteção de dados confidenciais detete correspondências com base num padrão de expressão regular.

Além disso, a Proteção de dados confidenciais inclui o conceito de regras de inspeção, que lhe permitem otimizar os resultados da análise através do seguinte:

  • As regras de exclusão permitem-lhe diminuir o número de resultados devolvidos adicionando regras a um detetor de infoType incorporado ou personalizado.
  • As regras de palavras-chave permitem aumentar a quantidade ou alterar o valor de probabilidade dos resultados devolvidos adicionando regras a um detetor de infoType integrado ou personalizado.

Detetores infoType incorporados

Os detetores de infoTypes incorporados estão integrados na proteção de dados confidenciais e incluem detetores para tipos de dados confidenciais específicos de países ou regiões, como o Numéro d'Inscription au Répertoire (NIR) francês (FRANCE_NIR), o número da carta de condução do Reino Unido (UK_DRIVERS_LICENSE_NUMBER) e o número de segurança social dos EUA (US_SOCIAL_SECURITY_NUMBER). Também incluem tipos de dados aplicáveis globalmente, como o nome de uma pessoa (PERSON_NAME), números de telefone (PHONE_NUMBER), endereços de email (EMAIL_ADDRESS) e números de cartões de crédito (CREDIT_CARD_NUMBER).

A lista de detetores de infoType incorporados está sempre a ser atualizada. Para uma lista completa dos detetores de infoType incorporados atualmente suportados, consulte a referência do detetor de infoType.

Também pode ver uma lista completa de todos os detetores infoType incorporados chamando o método infoTypes.list do Google Cloud DLP.

Técnicas de deteção

Para detetar conteúdo que corresponde a infoTypes incorporados, a proteção de dados confidenciais usa várias técnicas, incluindo a correspondência de padrões, a validação de somas de verificação, a aprendizagem automática e a análise de contexto. Por exemplo, para detetar o infoType CREDIT_CARD_NUMBER, a proteção de dados confidenciais verifica os prefixos de emissor conhecidos, valida as somas de verificação, analisa os comprimentos dos carateres e considera o contexto em que o potencial número de cartão de crédito aparece.

A demonstração da proteção de dados confidenciais é uma aplicação baseada na Web que pode usar para testar detetores infoType incorporados.

Suporte de idiomas

Os infoTypes específicos de cada país suportam o idioma inglês e os idiomas do respetivo país. A maioria dos infoTypes globais funciona com vários idiomas. Teste a proteção de dados confidenciais com os seus dados para verificar se cumpre os seus requisitos.

Detetores de infotipos gerais e específicos

Um detetor de infoType geral é um detetor definido de forma mais abrangente do que os detetores de infoType típicos e pode corresponder a uma vasta gama de tipos de informações potencialmente confidenciais. Os detetores de infoType gerais são superconjuntos de detetores de infoType específicos que partilham um atributo ou uma finalidade comum. Por exemplo, o detetor de DRIVERS_LICENSE_NUMBER infoType pode detetar conteúdo que corresponda aos GERMANY_DRIVERS_LICENSE_NUMBER e CANADA_DRIVERS_LICENSE_NUMBER infoTypes.

Em muitos casos, os detetores infoType gerais também podem encontrar correspondências que os detetores infoType específicos não conseguem. Por exemplo, o detetor PASSPORT é melhor a encontrar números de passaportes do que os detetores de passaportes específicos de países, que, por vezes, requerem a presença de pistas contextuais ou conteúdo formatado especificamente.

Na configuração da inspeção, pode usar um detetor infoType geral em vez de um detetor infoType específico. A proteção de dados confidenciais apresenta os resultados com base no detetor que especificou no seu pedido. Por exemplo, se uma string que inspeciona corresponder ao GERMANY_DRIVERS_LICENSE_NUMBER infoType e tiver procurado DRIVERS_LICENSE_NUMBER e GERMANY_DRIVERS_LICENSE_NUMBER no seu pedido, recebe dois resultados para a mesma string: um para DRIVERS_LICENSE_NUMBER e outro para GERMANY_DRIVERS_LICENSE_NUMBER. No entanto, se tiver analisado apenas DRIVERS_LICENSE_NUMBER no seu pedido, o resultado da inspeção mostra apenas a descoberta para DRIVERS_LICENSE_NUMBER.

A utilização de um detetor de infoType geral tem as seguintes vantagens:

  • Em muitos casos, os detetores infoType gerais têm uma capacidade de deteção superior à dos detetores infoType específicos. A revocação é o número de instâncias verdadeiramente positivas em relação ao número total de instâncias relevantes.

  • Pode simplificar os seus pedidos de proteção de dados confidenciais porque não tem de especificar cada infoType específico para o qual precisa de fazer a análise. Por exemplo, o detetor GOVERNMENT_IDinfoType sozinho inclui mais de 100 detetores infoType diferentes.

  • É menos provável que atinja o limite de 150 detetores infoType por pedido.

  • Se a proteção de dados confidenciais lançar um novo infoType e o adicionar a um infoType geral que já esteja especificado nas suas configurações existentes, a proteção de dados confidenciais inclui automaticamente o novo infoType nas respetivas análises. Não tem de adicionar manualmente os infoTypes lançados recentemente às suas configurações existentes.

Os infoTypes gerais e específicos têm uma relação de muitos-para-muitos. Ou seja, um infoType geral pode incluir muitos infoTypes específicos, e um infoType específico pode pertencer a muitos infoTypes gerais. Para ver uma lista completa dos infoTypes gerais e dos infoTypes específicos que incluem, consulte infoTypes gerais.

Detetores infoType personalizados

Existem três tipos de detetores de infoType personalizados:

Além disso, a proteção de dados confidenciais inclui regras de inspeção, que lhe permitem ajustar os resultados da análise detalhada adicionando o seguinte aos detetores existentes:

Detetores de dicionários personalizados pequenos

Use detetores de dicionários personalizados pequenos (também denominados "detetores de dicionários personalizados normais") para fazer corresponder uma lista curta (até várias dezenas de milhares) de palavras ou expressões. Um pequeno dicionário personalizado pode funcionar como o seu próprio detetor único.

Os detetores de dicionários personalizados são úteis quando quer procurar uma lista de palavras ou expressões que não são facilmente correspondidas por uma expressão regular ou um detetor incorporado. Por exemplo, suponha que quer procurar salas de conferências que são normalmente referidas pelos respetivos nomes atribuídos em vez dos respetivos números, como nomes de estados ou regiões, pontos de referência, personagens fictícias, etc. Pode criar um pequeno detetor de dicionário personalizado que contenha uma lista destes nomes de divisões. A proteção de dados confidenciais pode analisar o seu conteúdo para cada um dos nomes das divisões e devolver uma correspondência quando encontrar um deles no contexto. Saiba como a proteção de dados confidenciais faz a correspondência com palavras e expressões do dicionário na secção "Especificidades da correspondência com o dicionário" do artigo Criar um detetor de dicionário personalizado normal.

Para mais detalhes sobre como funcionam os detetores de infoType personalizados de dicionários pequenos, bem como exemplos em ação, consulte o artigo Criar um detetor de dicionário personalizado normal.

Detetores de dicionários personalizados grandes

Use detetores de dicionários personalizados grandes (também denominados "detetores de dicionários personalizados armazenados") quando tiver mais do que algumas palavras ou expressões para procurar, ou se a sua lista de palavras ou expressões mudar frequentemente. Os detetores de dicionários personalizados grandes podem corresponder a dezenas de milhões de palavras ou expressões.

Os detetores de dicionários personalizados grandes são criados de forma diferente dos detetores personalizados de expressões regulares e dos detetores de dicionários personalizados pequenos. Cada dicionário personalizado grande tem dois componentes:

  • Uma lista de expressões que cria e define. A lista é armazenada como um ficheiro de texto no Cloud Storage ou uma coluna numa tabela do BigQuery.
  • Os ficheiros de dicionário gerados, que são criados pela proteção de dados confidenciais com base na sua lista de expressões. Os ficheiros de dicionário são armazenados no armazenamento na nuvem e incluem uma cópia dos dados das expressões de origem, além de filtros de Bloom, o que ajuda na pesquisa e na correspondência. Não pode editar diretamente estes ficheiros.

Depois de criar uma lista de palavras e, em seguida, usar a proteção de dados confidenciais para gerar um dicionário personalizado, inicia ou agenda uma análise com um detetor de dicionário personalizado grande de forma semelhante a outros detetores infoType.

Para mais detalhes sobre como funcionam os detetores de dicionários personalizados grandes, bem como exemplos em ação, consulte o artigo Criar um detetor de dicionário personalizado armazenado.

Expressões regulares

Um detetor de infoType personalizado de expressão regular (regex) permite-lhe criar os seus próprios detetores de infoType que permitem à proteção de dados confidenciais detetar correspondências com base num padrão de regex. Por exemplo, suponha que tinha números de registos médicos no formato ###-#-#####. Pode definir um padrão de regex como o seguinte:

[1-9]{3}-[1-9]{1}-[1-9]{5}

Em seguida, a Proteção de dados confidenciais faz a correspondência com itens como este:

123-4-56789

Também pode especificar uma probabilidade a atribuir a cada correspondência de infoType personalizado. Ou seja, quando a proteção de dados confidenciais encontra uma correspondência com a sequência especificada, atribui a probabilidade que indicou. Isto é útil porque, se a sua regex personalizada definir uma sequência suficientemente comum, pode facilmente corresponder a outra sequência aleatória. Nesse caso, não quer que a proteção de dados confidenciais etiquete todas as correspondências como VERY_LIKELY. Esta ação reduz a confiança nos resultados da análise e pode fazer com que sejam encontradas ou anonimizadas informações incorretas.

Para mais informações sobre detetores de infoTypes personalizados de expressões regulares e para os ver em ação, consulte o artigo Criar um detetor de regex personalizado.

Regras de inspeção

Usa regras de inspeção para refinar os resultados devolvidos pelos detetores de infoType existentes, sejam eles incorporados ou personalizados. As regras de inspeção podem ser úteis para casos em que os resultados devolvidos pela Proteção de dados confidenciais têm de ser aumentados de alguma forma, seja adicionando ou excluindo do detetor infoType existente.

Os dois tipos de regras de inspeção são:

  • Regras de exclusão
  • Regras de hotword

Para mais informações sobre as regras de inspeção, consulte o artigo Modificar os detetores infoType para refinar os resultados da análise.

Regras de exclusão

As regras de exclusão permitem-lhe diminuir a quantidade ou a precisão dos resultados devolvidos adicionando regras a um detetor infoType integrado ou personalizado. As regras de exclusão podem ajudar a reduzir o ruído ou outras descobertas indesejadas que são devolvidas por um detetor infoType.

Por exemplo, se analisar uma base de dados para encontrar endereços de email, pode adicionar uma regra de exclusão sob a forma de uma regex personalizada que instrua a proteção de dados confidenciais a excluir todas as descobertas que terminem em "@example.com".

As regras de exclusão não podem ser aplicadas a infoTypes de objetos.

Para mais informações sobre as regras de exclusão, consulte o artigo Modificar os detetores de infoType para refinar os resultados da análise.

Regras de hotword

As regras de palavras de ativação permitem-lhe aumentar a quantidade ou a precisão dos resultados devolvidos adicionando regras a um detetor de infoType integrado ou personalizado. As regras de palavras de ativação podem ajudar a afrouxar eficazmente as regras de um detetor de infoType existente.

Por exemplo, suponha que quer analisar uma base de dados médica para encontrar nomes de pacientes. Pode usar o detetor de PERSON_NAMEinfoType incorporado da proteção de dados confidenciais, mas isso faz com que a proteção de dados confidenciais encontre correspondências em todos os nomes de pessoas, não apenas nos nomes de pacientes. Para corrigir este problema, pode incluir uma regra de palavra de ativação no formato de um infoType personalizado de regex que procure a palavra "paciente" dentro de uma determinada proximidade de carateres do primeiro caráter de potenciais correspondências. Em seguida, pode atribuir às descobertas que correspondam a este padrão uma probabilidade de "muito provável", uma vez que correspondem aos seus critérios especiais.

Para mais informações sobre as regras de palavras de ativação, consulte o artigo Modificar os detetores infoType para refinar os resultados da análise.

Exemplos

Para ter uma melhor ideia de como os infoTypes correspondem nas descobertas, consulte os seguintes exemplos de correspondência numa série de dígitos para determinar se constituem um Número de Identificação da Segurança Social dos EUA ou um Número de Identificação Fiscal Individual dos EUA. Tenha em atenção que estes exemplos são para detetores de infoType incorporados. Quando cria um detetor infoType personalizado, especifica os critérios que determinam a probabilidade de uma correspondência de análise.

Exemplo 1

"SSN 222-22-2222"

Comunica uma pontuação de probabilidade elevada de VERY_LIKELY para um US_SOCIAL_SECURITY_NUMBER porque:

  • Está no formato padrão do número da segurança social, o que aumenta a certeza.
  • Tem contexto próximo ("SSN") que aumenta a confiança em US_SOCIAL_SECURITY_NUMBER.

Exemplo 2

"999-99-9999"

Comunica uma pontuação de probabilidade baixa de VERY_UNLIKELY para um US_SOCIAL_SECURITY_NUMBER porque:

  • Está no formato padrão, o que aumenta a certeza.
  • Começa com um 9, o que não é permitido em números de segurança social e diminui a certeza.
  • Não tem contexto, o que diminui a certeza.

Exemplo 3

"999-98-9999"

Comunica uma pontuação de probabilidade de POSSIBLE para um US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER e VERY_UNLIKELY para US_SOCIAL_SECURITY_NUMBER porque:

  • Tem o formato padrão para US_SOCIAL_SECURITY_NUMBER e US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER.
  • Começa com um 9 e tem outra verificação de dígitos, o que aumenta a certeza para US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER.
  • Não tem contexto, o que diminui a certeza para ambos.

O que se segue?

A equipa de proteção de dados confidenciais lança periodicamente novos detetores e grupos de infoTypes. Para saber como obter a lista mais recente de infoTypes incorporados, consulte o artigo Listar detetores de infoTypes incorporados.