InfoTypes e detectores de infoType

O Cloud Data Loss Prevention (DLP) usa tipos de informações (infoTypes) para definir o que será verificado. Os infoTypes são tipos de dados confidenciais, como nome, endereço de e-mail, número de telefone, número de identificação, número de cartão de crédito e assim por diante. Um detector de infoType é o mecanismo de detecção correspondente que corresponde aos critérios de correspondência de um infoType.

Como usar infoTypes

O Cloud DLP usa detectores de infoType na configuração de suas verificações para determinar o que inspecionar e como transformar descobertas. Os nomes de infoType também são usados ao exibir ou informar os resultados da verificação.

Por exemplo, se você quiser procurar endereços de e-mail em um bloco de texto, especifique o detector de infoType EMAIL_ADDRESS na configuração de inspeção. Se você quiser editar endereços de e-mail do bloco de texto, especifique EMAIL_ADDRESS na configuração da inspeção e na configuração da desidentificação para indicar como editar ou transformar esse tipo.

Além disso, é possível usar uma combinação de detectores de infoType integrados e personalizados para excluir um subconjunto de endereços de e-mail das descobertas da verificação. Primeiro, crie um infoType personalizado chamado INTERNAL_EMAIL_ADDRESS e configure-o para excluir endereços de e-mail de teste interno. Em seguida, configure a verificação para incluir descobertas para EMAIL_ADDRESS, mas inclua uma regra de exclusão que exclua todas as descobertas que correspondam a INTERNAL_EMAIL_ADDRESS. Para mais informações sobre regras de exclusão e outros recursos de detectores de infoType personalizados, consulte Como criar detectores de infoType personalizados.

O Cloud DLP fornece um conjunto de detectores de infoType integrados que você especifica por nome e cada um deles é listado na referência do detector de InfoType. Esses detectores usam uma variedade de técnicas para descobrir e classificar cada tipo. Por exemplo, alguns tipos exigem uma correspondência de padrão, alguns podem ter somas de verificação matemáticas, alguns têm restrições especiais de dígitos e outros podem ter prefixos específicos ou contexto sobre as descobertas.

Exemplos

Ao configurar o Cloud DLP para verificar seu conteúdo, inclua os detectores de infoType que serão usados na configuração da verificação.

Por exemplo, o código JSON e as amostras de código a seguir demonstram uma solicitação de verificação simples para a API Cloud DLP. O detector PHONE_NUMBER é especificado em inspectConfig, o que instrui o Cloud DLP a verificar a string fornecida em busca de um número de telefone.

Protocolo

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 você envia a solicitação anterior ao endpoint especificado, o Cloud DLP retorna 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"
      }
    ]
  }
}

Java

Ver no GitHub (em inglês) Feedback

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

Python

def inspect_string_basic(
    project, content_string, info_types=["PHONE_NUMBER"],
):
    """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.
        info_types: A list of strings representing info types to look for.
            A full list of info type categories can be fetched from the API.
    Returns:
        None; the response from the API is printed to the terminal.
    """

    # Import the client library.
    import google.cloud.dlp

    # 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": info_type} for info_type in info_types]

    # 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("Quote: {}".format(finding.quote))
            print("Info type: {}".format(finding.info_type.name))
            print("Likelihood: {}".format(finding.likelihood))
    else:
        print("No findings.")

Se forem necessários controle e previsibilidade precisos sobre quais detectores são executados, especifique infoTypes específicos listados na referência. Caso contrário, o Cloud DLP usará uma lista padrão, que pode mudar ao longo do tempo. Dependendo da quantidade de conteúdo a ser verificada, a verificação de infoTypes padrão pode ser extremamente demorada ou dispendiosa.

Para mais informações sobre como usar os detectores de infoType para verificar conteúdo, consulte um dos tópicos de instruções sobre inspeção, edição ou desidentificação.

Certeza e teste

As descobertas são informadas com uma pontuação de certeza chamada de probabilidade. A pontuação de probabilidade indica até que ponto é provável que uma descoberta corresponda ao tipo. Por exemplo, um tipo pode retornar uma probabilidade menor se corresponder apenas ao padrão e retornar uma probabilidade maior se corresponder ao padrão e tiver contexto positivo ao redor dele. Por esse motivo, é possível perceber que uma única descoberta pode corresponder a vários tipos com menor probabilidade. Além disso, uma descoberta pode não aparecer ou pode ter menos certeza se não corresponder corretamente ou se tiver contexto negativo em torno dela. Por exemplo, uma descoberta pode não ser informada se corresponder à estrutura do infoType especificado, mas falhar na soma de verificação do infoType. Ou uma descoberta pode corresponder a mais de um infoType, mas ter um contexto que impulsiona um deles e, portanto, só é informado para esse tipo.

Se você estiver testando vários detectores, poderá notar que dados falsos ou de amostra não são informados porque esses dados não são aprovados em verificações suficientes.

Tipos de detectores de infoType

O Cloud DLP inclui vários tipos de detectores de infoType, que estão resumidos aqui:

  • Os detectores de infoType integrados fazem parte do Cloud DLP e contêm detectores para tipos de dados confidenciais específicos do país ou da região. Eles também incluem tipos de dados aplicáveis globalmente.
  • Os detectores de infoType personalizados são aqueles que você mesmo cria. Eles são divididos em três tipos:
    • Os pequenos detectores de dicionários personalizados são listas de palavras simples com as quais o Cloud DLP faz correspondência. Use detectores de dicionário personalizados pequenos quando tiver uma lista de até várias dezenas de milhares de palavras ou frases. Os detectores de dicionários personalizados pequenos são preferidos caso você não preveja alterações significativas na sua lista de palavras.
    • Os detectores de dicionários personalizados grandes são gerados pelo Cloud DLP usando grandes listas de palavras ou frases armazenadas no Cloud Storage ou no BigQuery. Use detectores de dicionário personalizados grandes quando tiver uma lista grande de palavras ou frases, até dezenas de milhões.
    • Os detectores de expressões regulares (regex) permitem que o Cloud DLP detecte correspondências com base em um padrão de expressão regular.

Além disso, o Cloud DLP inclui o conceito de regras de inspeção. Com elas, você ajusta os resultados da verificação usando estes itens:

  • Regras de exclusão, que permitem diminuir o número de descobertas retornadas adicionando regras a um detector de infoType integrado ou personalizado.
  • Regras de hotword, que permitem aumentar a quantidade ou alterar o valor de probabilidade das descobertas retornadas adicionando regras a um detector de infoType integrado ou personalizado.

Detectores de infoType integrados

Os detectores de infoType incorporados são integrados ao Cloud DLP e incluem detectores para tipos de dados confidenciais específicos por país ou região, como o francês Numéro d'Inscription au Répertoire (NIR) (FRANCE_NIR), Número da carta de habilitação do Reino Unido (UK_DRIVERS_LICENSE_NUMBER) e o número da Previdência Social dos EUA (US_SOCIAL_SECURITY_NUMBER). Eles 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 e-mail (EMAIL_ADDRESS) e números de cartão de crédito (CREDIT_CARD_NUMBER). Para detectar conteúdo que corresponda a infoTypes, o Cloud DLP aproveita várias técnicas, incluindo correspondência de padrões, somas de verificação, machine learning, análise de contexto e outras.

A lista de detectores de infoType integrados é atualizada com frequência. Para uma lista completa daqueles que são compatíveis atualmente, consulte Referência dos detectores de infoType.

Também é possível ver uma lista completa dos detectores de infoType integrados chamando o método infoTypes.list do Cloud DLP.

Os detectores de infoType integrados não são um método de detecção totalmente preciso. Eles não podem garantir conformidade com requisitos regulamentares, por exemplo. Você precisa decidir que dados são confidenciais e como eles serão protegidos. O Google recomenda que você teste suas configurações para ter certeza de que elas atendem aos requisitos.

Detectores de infoType personalizados

Eles são divididos em três tipos:

Além disso, o Cloud DLP inclui regras de inspeção que permitem adicionar as seguintes regras aos detectores atuais para ajustar os resultados da verificação:

Detectores de dicionários personalizados pequenos

Use detectores de dicionários personalizados pequenos (também chamados de "detectores de dicionários personalizados regulares") para corresponder a uma lista curta (até várias dezenas de milhares) de palavras ou frases. Um dicionário personalizado pequeno pode atuar como um detector exclusivo próprio.

Os detectores de dicionários personalizados são úteis quando você quer verificar uma lista de palavras ou frases que não são facilmente correspondidas por uma expressão regular ou um detector incorporado. Por exemplo, se você quiser verificar salas de conferência que geralmente são identificadas não por números, mas por nomes, como nomes de estado ou região, pontos de referência, personagens fictícios, entre outros. É possível criar um detector de dicionário personalizado pequeno que contenha uma lista desses nomes de salas. O Cloud DLP poderá verificar o conteúdo de cada sala e retornar uma correspondência quando encontrar uma delas no contexto. Saiba mais sobre como o Cloud DLP combina palavras e frases de dicionário na seção "Especificidades de correspondência do dicionário" de Como criar um detector de dicionário personalizado regular.

Para mais detalhes sobre como detectores de infoType personalizados de dicionário pequenos funcionam, bem como para ver exemplos em ação, consulte Como criar um detector de dicionário personalizado regular.

Detectores de dicionários personalizados grandes

Use detectores de dicionários personalizados grandes (também chamados de "detectores de dicionários personalizados armazenados") quando houver mais de algumas palavras ou frases para verificar ou se sua lista de palavras ou frases mudar com frequência. Detectores de dicionários personalizados grandes podem corresponder a até dezenas de milhões de palavras ou frases.

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

  • Uma lista de frases que você cria e define. Essa lista é armazenada como um arquivo de texto no Cloud Storage ou como uma coluna em uma tabela do BigQuery.
  • Os arquivos de dicionário gerados, que são criados pelo Cloud DLP com base na sua lista de frases. Os arquivos de dicionário são armazenados no Cloud Storage e compostos por uma cópia dos dados da frase de origem e dos filtros de Bloom, que ajudam na pesquisa e na correspondência. Não é possível editar esses arquivos diretamente.

Depois de criar uma lista de palavras e usar o Cloud DLP para gerar um dicionário personalizado, inicie ou programe uma verificação usando um detector de dicionário personalizado grande de maneira semelhante a outros detectores de infoType.

Para mais detalhes sobre como os detectores de dicionários personalizados grandes funcionam, bem como exemplos em ação, consulte Como criar um detector de dicionário personalizado armazenado.

Expressões regulares

Um detector de infoType personalizado de expressão regular (regex) permite que você crie seus próprios detectores de infoType para que o Cloud DLP detecte correspondências com base em um padrão de regex. Por exemplo, se você tiver números de registros médicos no formato ###-#-#####. Será possível definir um padrão de regex como este:

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

O Cloud DLP corresponderia então a itens como este:

123-4-56789

Também é possível especificar uma probabilidade a ser atribuída a cada correspondência de infoType personalizada. Ou seja, quando o Cloud DLP fizer a correspondência com a sequência especificada, ele atribuirá a probabilidade indicada por você. Isso é útil porque, se a regex personalizada definir uma sequência comum o suficiente, ela poderá corresponder facilmente a alguma outra sequência aleatória. Não convém que o Cloud DLP rotule todas as correspondências como  VERY_LIKELY. Isso pode reduzir a confiança nos resultados da verificação e, possivelmente, fazer com que as informações incorretas sejam correspondidas ou desidentificadas.

Para mais informações sobre detectores de infoType personalizados de expressões regulares e para vê-los em ação, consulte Como criar um detector de regex personalizado.

Regras de inspeção

Use regras de inspeção para refinar os resultados retornados pelos detectores de infoType atuais, sejam eles incorporados ou personalizados. Essas regras podem ser úteis quando for preciso aumentar os resultados retornados pelo Cloud DLP, seja adicionando ou excluindo o detector de infoType atual.

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

  • Regras de exclusão
  • Regras de hotword

Para mais informações sobre regras de inspeção, consulte Como modificar os detectores de InfoType para refinar os resultados da verificação.

Regras de exclusão

As regras de exclusão permitem diminuir a quantidade ou a precisão das descobertas retornadas ao adicionar regras a um detector de infoType integrado ou personalizado. Essas regras podem ajudar a reduzir o ruído ou impedir que resultados indesejados sejam retornados por um detector de infoType.

Por exemplo, ao verificar um banco de dados em busca de endereços de e-mail, é possível adicionar uma regra de exclusão como um regex personalizado que instrua o Cloud DLP a excluir descobertas que terminem em "@example.com".

Para mais informações sobre regras de exclusão, consulte Como modificar os detectores de InfoType para refinar os resultados da verificação.

Regras de hotword

As regras de hotword permitem aumentar a quantidade ou precisão das descobertas retornadas ao adicionar regras a um detector de infoType integrado ou personalizado. As regras de hotword podem ajudá-lo efetivamente a flexibilizar as regras de um detector de infoType atual.

Por exemplo, suponha que você queira verificar nomes de pacientes em um banco de dados médico. Embora seja possível usar o detector de infoType PERSON_NAME integrado do Cloud DLP, isso o levará a fazer a correspondência dos nomes de todas as pessoas, e não apenas dos pacientes. Para corrigir esse problema, inclua uma regra de hotword no formato de um infoType personalizado de regex que procura pela palavra “paciente” dentro de uma determinada proximidade de caracteres do primeiro caractere de possíveis correspondências. Em seguida, é possível atribuir a descobertas correspondentes a esse padrão uma probabilidade de "muito provável", já que elas correspondem aos critérios especiais.

Para mais informações sobre regras de hotword, consulte Como modificar os detectores de InfoType para refinar os resultados da verificação.

Exemplos

Para ter uma ideia melhor de como os infoTypes correspondem às descobertas, observe os seguintes exemplos de correspondência em uma série de dígitos para determinar se eles representam um número de seguro social dos EUA ou um número de identificação de contribuinte individual dos EUA. Lembre-se de que esses exemplos são para detectores de infoType integrados. Ao criar um detector de infoType personalizado, você especifica os critérios que determinam a probabilidade de uma correspondência de verificação.

Exemplo 1

"SSN 222-22-2222"

Informa um alto índice de probabilidade de VERY_LIKELY para um US_SOCIAL_SECURITY_NUMBER porque:

  • Ele está no formato de número de seguro social padrão, o que aumenta a certeza.
  • Ele tem contexto próximo ("SSN") que aumenta tendendo a US_SOCIAL_SECURITY_NUMBER.

Exemplo 2

"999-99-9999"

Informa um baixo índice de probabilidade de VERY_UNLIKELY para um US_SOCIAL_SECURITY_NUMBER porque:

  • Ele está no formato padrão, o que aumenta a certeza.
  • Começa com um número 9, o que não é permitido em números de seguro social, reduzindo, assim, a certeza.
  • Falta contexto, o que diminui a certeza.

Exemplo 3

"999-98-9999"

Informa um nível de probabilidade de POSSIBLE para um US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER e VERY_UNLIKELY para US_SOCIAL_SECURITY_NUMBER porque:

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

A seguir

A equipe do Cloud DLP lança novos detectores e grupos de infoType periodicamente. Para saber como ter a lista mais recente de infoTypes integrados, consulte [Como listar detectores de infoType integrados].