InfoTypes y detectores de infoType

Protección de Datos Sensibles usa tipos de información (o infoTypes) para definir qué debe buscar. Un infoType es un tipo de dato sensible, como un nombre, una dirección de correo electrónico, un número de teléfono, un número de identificación, un número de tarjeta de crédito, etc. Un detector de infoType es el mecanismo de detección correspondiente que se basa en los criterios de coincidencia de un infoType.

Prácticas recomendadas para seleccionar infoTypes

Conocer tus datos es uno de los primeros pasos fundamentales para protegerlos. Le recomendamos que recoja, almacene y trate únicamente la información que necesite para su negocio. Si identificas los datos que gestionas, podrás tomar decisiones fundamentadas para tu empresa, tus usuarios y tu postura en materia de seguridad y privacidad de los datos.

Es posible que algunos de tus casos prácticos requieran determinada información sensible y otros no. No hay una única solución que admita todos los casos prácticos. Por este motivo, Protección de Datos Sensibles ofrece un control flexible sobre los tipos de datos que se deben analizar. Si usas infoTypes para desidentificar o enmascarar, también puedes controlar cuándo y cómo se transforman los datos.

Directrices generales

Ten en cuenta las siguientes directrices generales al seleccionar infoTypes.

Usar infoTypes generales en lugar de infoTypes específicos

Si no necesitas que los resultados del análisis muestren los infoTypes específicos que se han detectado, puedes usar infoTypes generales en lugar de infoTypes específicos en tus configuraciones de inspección. Para obtener información sobre las ventajas de usar detectores de infoType generales en tus solicitudes, consulta la sección Detectores de infoType generales y específicos de esta página.

Para ver una lista completa de los infoTypes generales y los infoTypes específicos que incluyen, consulta infoTypes generales.

Información sensible que no necesitas recoger

Cada servicio de tu empresa debe recoger solo los datos que necesite. Por ejemplo, algunos servicios de tu empresa no necesitan recoger información financiera. En el caso de esos servicios, te recomendamos que habilites detectores de infoType como CREDIT_CARD_NUMBER, FINANCIAL_ACCOUNT_NUMBER y otros infoTypes de la categoría FINANCE.

Información que necesitas recoger, pero que no quieres compartir con todo tu equipo

Puede haber casos prácticos válidos para recoger información personal, pero no deberías compartirla con todo tu equipo. Por ejemplo, un cliente que presenta una solicitud de asistencia puede facilitarte su información de contacto para que puedas ponerte en contacto con él y resolver cualquier problema. No quieres que todos los miembros del equipo que vean la incidencia puedan acceder a la información personal identificable (IPI). Te recomendamos que habilites detectores de infoType como PHONE_NUMBER, EMAIL_ADDRESS y otros infoTypes de la categoría PII.

Categorías de datos sensibles que están sujetas a normativas del sector, de privacidad de los datos o jurisdiccionales

Determinados tipos de información se consideran sensibles por cómo se emiten o para qué se pueden usar. En otros casos, la información contextual y demográfica se considera una categoría protegida. Estos tipos de información pueden tener restricciones adicionales sobre cómo se recogen, usan y gestionan. Te recomendamos que habilites los detectores de infoType de las siguientes categorías:

Elegir entre infoTypes similares

Ten en cuenta lo siguiente a la hora de elegir entre detectores de infoType similares.

Pasaportes

Si no necesitas buscar identificadores de pasaporte de un país específico, elige el detector generalizado: PASSPORT.

Hay disponibles determinados detectores de pasaportes específicos de cada país, como UK_PASSPORT. Sin embargo, algunos detectores de pasaportes específicos de cada país solo pueden identificar pasaportes con formatos concretos o con la presencia de pistas contextuales.

Nombres de personas

Cuando busques nombres de personas, usa PERSON_NAME en la mayoría de los casos en lugar de FIRST_NAME o LAST_NAME.

PERSON_NAME es un detector de nombres de personas. Incluye nombres de una sola palabra y nombres completos. Este detector intenta detectar nombres como Jane, Jane Smith y Jane Marie Smith mediante varias tecnologías, incluida la comprensión del lenguaje natural. FIRST_NAME y LAST_NAME son subconjuntos de este detector que intentan identificar partes de un nombre. Los resultados de estos detectores siempre son subconjuntos de los resultados de PERSON_NAME.

Fechas y horas

Si no necesitas analizar todas las fechas, puedes usar un detector de fechas específico, como DATE_OF_BIRTH. Este detector intenta identificar el contexto que indica que la fecha está relacionada con el nacimiento de una persona.

El detector DATE intenta encontrar todas las fechas, independientemente del contexto. También marca fechas relativas, como hoy o ayer. Del mismo modo, TIME intenta encontrar todas las marcas de tiempo.

Ubicaciones

Si no necesitas buscar todas las ubicaciones, te recomendamos que uses STREET_ADDRESS en lugar del detector LOCATION. El detector STREET_ADDRESS intenta encontrar direcciones completas, que suelen ser más precisas que las ubicaciones genéricas y se pueden considerar más sensibles.

El detector de infoType LOCATION intenta encontrar cualquier ubicación, independientemente del contexto. Por ejemplo, París o Canadá.

Detectores de infoType que requieren contexto

Muchos detectores de infoType requieren que haya pistas contextuales para identificar una coincidencia. Si un detector de infoType integrado no marca elementos que crees que deberían marcarse porque no hay indicios contextuales cerca de esos elementos, considera la posibilidad de usar GENERIC_ID o un detector de infoType personalizado.

Tipos de información que no tienen una definición común en el sector

Algunos tipos de información no tienen una definición común en el sector. Por ejemplo, números de historial médico, números de cuenta, PINs y códigos de seguridad. En estos casos, te recomendamos que uses infoTypes como GENERIC_ID, FINANCIAL_ACCOUNT_NUMBER y MEDICAL_RECORD_NUMBER. Estos detectores usan una combinación de detección de entidades y contexto para encontrar elementos potencialmente sensibles.

Detectores de infoType con mayor latencia

  • Evita habilitar detectores de infoType que no necesites. Aunque los siguientes infoTypes son útiles en determinados casos, pueden hacer que las solicitudes se ejecuten mucho más lentamente que las que no los incluyen:

    • PERSON_NAME
    • FEMALE_NAME
    • MALE_NAME
    • FIRST_NAME
    • LAST_NAME
    • DATE_OF_BIRTH
    • LOCATION
    • STREET_ADDRESS
    • ORGANIZATION_NAME
  • Especifica siempre los detectores de infoType de forma explícita. No utilices una lista infoTypes vacía.

Cómo usar los infoTypes

Protección de Datos Sensibles usa detectores de infoType en la configuración de sus análisis para determinar qué debe inspeccionar y cómo debe transformar los resultados. Los nombres de InfoType también se usan al mostrar o generar informes de los resultados de los análisis.

Por ejemplo, si quieres buscar direcciones de correo en un bloque de texto, debes especificar el detector de EMAIL_ADDRESS infoType en la configuración de inspección. Si quieres ocultar direcciones de correo electrónico del bloque de texto, debes especificar EMAIL_ADDRESS tanto en la configuración de inspección como en la de anonimización para indicar cómo ocultar o transformar ese tipo de datos.

Además, puede usar una combinación de detectores de infoType integrados y personalizados para excluir un subconjunto de direcciones de correo de los resultados del análisis. Primero, crea un infoType personalizado llamado INTERNAL_EMAIL_ADDRESS y configúralo para que excluya las direcciones de correo de prueba internas. Después, puedes configurar el análisis para que incluya resultados de EMAIL_ADDRESS, pero también una regla de exclusión que excluya los resultados que coincidan con INTERNAL_EMAIL_ADDRESS. Para obtener más información sobre las reglas de exclusión y otras funciones de los detectores de infoType personalizados, consulta el artículo Crear detectores de infoType personalizados.

Protección de Datos Sensibles proporciona un conjunto de detectores de infoType integrados que se especifican por nombre. Cada uno de ellos se muestra en la referencia de detectores de infoType. Estos detectores usan varias técnicas para descubrir y clasificar cada tipo. Por ejemplo, algunos tipos requerirán una coincidencia de patrón, otros pueden tener sumas de comprobación matemáticas, otros tienen restricciones especiales de dígitos y otros pueden tener prefijos específicos o contexto en torno a los resultados.

Ejemplos

Cuando configuras Protección de Datos Sensibles para que analice tu contenido, incluyes los detectores infoType que se van a usar en la configuración del análisis.

Por ejemplo, en los siguientes ejemplos de JSON y de código se muestra una solicitud de análisis sencilla a la API DLP. Ten en cuenta que el PHONE_NUMBER detector se especifica en inspectConfig, que indica a Protección de Datos Sensibles que analice la cadena dada en busca de un número de teléfono.

C#

Para saber cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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 cómo instalar y usar la biblioteca de cliente de Protección de Datos Sensibles, consulta el artículo sobre las bibliotecas de cliente de Protección de Datos Sensibles.

Para autenticarte en Protección de Datos Sensibles, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo 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"
    }
  }
}

Cuando envías la solicitud anterior al endpoint especificado, Protección de Datos Sensibles devuelve lo siguiente:

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

Debe especificar infoTypes concretos que se indiquen en la referencia en su configuración de inspección. Si no especificas ningún infoType, Protección de Datos Sensibles usará una lista de infoTypes predeterminada que solo se puede usar para hacer pruebas. Es posible que la lista predeterminada no se adapte a tus casos prácticos.

Para obtener más información sobre cómo usar los detectores de infoType para analizar tu contenido, consulta uno de los artículos de instrucciones sobre cómo inspeccionar, ocultar o anonimizar datos.

Certeza y pruebas

Los resultados se indican con una puntuación de certeza llamada probabilidad. La puntuación de probabilidad indica la probabilidad de que un resultado coincida con el tipo correspondiente. Por ejemplo, un tipo puede devolver una probabilidad más baja si solo coincide con el patrón y una probabilidad más alta si coincide con el patrón y tiene un contexto positivo a su alrededor. Por este motivo, puede que una sola detección coincida con varios tipos con una probabilidad menor. Además, es posible que no se muestre un resultado o que tenga una certeza menor si no coincide correctamente o si tiene un contexto negativo. Por ejemplo, es posible que no se informe de un resultado si coincide con la estructura del infoType especificado, pero no supera la suma de comprobación del infoType. También puede ocurrir que un resultado coincida con más de un infoType, pero que el contexto favorezca a uno de ellos y, por lo tanto, solo se informe de ese tipo.

Si estás probando varios detectores, puede que observes que no se registran datos falsos o de muestra porque no superan suficientes comprobaciones para registrarse.

Tipos de detectores de infoType

Protección de Datos Sensibles incluye varios tipos de detectores de infoType, que se resumen a continuación:

  • Los detectores de infoType integrados están integrados en Protección de Datos Sensibles. Incluyen detectores de tipos de datos sensibles específicos de cada país o región, así como tipos de datos aplicables a nivel mundial. También hay infoTypes generales para ayudarte a simplificar tus configuraciones.
  • Los detectores de infoType personalizados son detectores que creas tú. Hay tres tipos de detectores de infoType personalizados:
    • Los detectores de diccionario personalizado pequeños son listas de palabras sencillas con las que Sensitive Data Protection busca coincidencias. Usa detectores de diccionario personalizado pequeños cuando tengas una lista de hasta varias decenas de miles de palabras o frases. Se recomiendan los detectores de diccionario personalizado pequeños si no prevés que tu lista de palabras vaya a cambiar significativamente.
    • Protección de Datos Sensibles genera detectores de diccionarios personalizados grandes a partir de listas grandes de palabras o frases almacenadas en Cloud Storage o BigQuery. Usa detectores de diccionario personalizado grande cuando tengas una lista grande de palabras o frases (hasta decenas de millones).
    • Los detectores de expresiones regulares (regex) permiten que Protección de Datos Sensibles detecte coincidencias basadas en un patrón de expresión regular.

Además, Protección de Datos Sensibles incluye el concepto de reglas de inspección, que te permiten ajustar los resultados de los análisis con lo siguiente:

  • Las reglas de exclusión le permiten reducir el número de resultados devueltos añadiendo reglas a un detector de infoType integrado o personalizado.
  • Las reglas de palabras de activación te permiten aumentar la cantidad o cambiar el valor de probabilidad de los resultados devueltos añadiendo reglas a un detector de infoType integrado o personalizado.

Detectores de infoType integrados

Los detectores de infoType integrados están incluidos en Protección de Datos Sensibles y contienen detectores de tipos de datos sensibles específicos de cada país o región, como el Numéro d'Inscription au Répertoire (NIR) (FRANCE_NIR) de Francia, el número del carné de conducir del Reino Unido (UK_DRIVERS_LICENSE_NUMBER) y el número de la Seguridad Social de EE. UU. (US_SOCIAL_SECURITY_NUMBER). También incluyen tipos de datos aplicables a nivel mundial, como nombres de personas (PERSON_NAME), números de teléfono (PHONE_NUMBER), direcciones de correo electrónico (EMAIL_ADDRESS) y números de tarjetas de crédito (CREDIT_CARD_NUMBER). Para detectar contenido que se corresponda con infoTypes, Protección de Datos Sensibles utiliza varias técnicas, como la coincidencia de patrones, las sumas de comprobación, el aprendizaje automático y el análisis de contexto, entre otras.

La lista de detectores de infoType integrados se actualiza constantemente. Para ver una lista completa de los detectores de infoType integrados que se admiten actualmente, consulte la referencia del detector de infoType.

También puedes ver una lista completa de todos los detectores de infoType integrados llamando al método infoTypes.list de Protección de Datos Sensibles.

Idiomas disponibles

Los infoTipos específicos de cada país admiten el inglés y los idiomas del país correspondiente. La mayoría de los infoTipos globales funcionan con varios idiomas. Prueba Protección de datos sensibles con tus datos para verificar que cumple tus requisitos.

Detectores de infoType generales y específicos

Un detector de infoType general es un detector que se define de forma más amplia que los detectores de infoType habituales y puede coincidir con una amplia gama de tipos de información potencialmente sensible. Los detectores de infoType generales son superconjuntos de detectores de infoType específicos que comparten un atributo o un propósito comunes. Por ejemplo, el detector de infoType DRIVERS_LICENSE_NUMBER puede detectar contenido que coincida con los infoTypes GERMANY_DRIVERS_LICENSE_NUMBER y CANADA_DRIVERS_LICENSE_NUMBER.

En muchos casos, los detectores de infoType generales también pueden encontrar coincidencias que los detectores de infoType específicos no pueden. Por ejemplo, el detector PASSPORT es más eficaz a la hora de encontrar números de pasaporte que los detectores de pasaporte específicos de cada país, que a veces requieren la presencia de pistas contextuales o contenido con un formato específico.

En la configuración de inspección, puede usar un detector de infoType general en lugar de un detector de infoType específico. Protección de Datos Sensibles muestra los resultados en función del detector que hayas especificado en tu solicitud. Por ejemplo, si una cadena que inspeccionas coincide con el GERMANY_DRIVERS_LICENSE_NUMBER infoType y has buscado tanto DRIVERS_LICENSE_NUMBER como GERMANY_DRIVERS_LICENSE_NUMBER en tu solicitud, obtendrás dos resultados para la misma cadena: uno para DRIVERS_LICENSE_NUMBER y otro para GERMANY_DRIVERS_LICENSE_NUMBER. Sin embargo, si solo has buscado DRIVERS_LICENSE_NUMBER en tu solicitud, el resultado de la inspección solo mostrará el hallazgo de DRIVERS_LICENSE_NUMBER.

Usar un detector de infoType general tiene las siguientes ventajas:

  • En muchos casos, los detectores de infoType generales tienen un mayor recuerdo que los detectores de infoType específicos. La recuperación es el número de instancias positivas verdaderas del número total de instancias relevantes.

  • Puedes simplificar tus solicitudes de Protección de Datos Sensibles porque no tienes que especificar cada infoType concreto que necesites buscar. Por ejemplo, el detector de infoType GOVERNMENT_ID incluye más de 100 detectores de infoType diferentes.

  • Es menos probable que alcances el límite de 150 detectores de infoType por solicitud.

  • Si Protección de Datos Sensibles lanza un nuevo infoType y lo añade a un infoType general que ya se ha especificado en tus configuraciones, Protección de Datos Sensibles lo incluirá automáticamente en sus análisis. No tiene que añadir manualmente los infoTypes recién lanzados a sus configuraciones.

Los infoTypes generales y específicos tienen una relación de muchos a muchos. Es decir, un infoType general puede incluir muchos infoTypes específicos, y un infoType específico puede pertenecer a muchos infoTypes generales. Para ver una lista completa de los infoTypes generales y los infoTypes específicos que incluyen, consulta infoTypes generales.

Detectores de infoType personalizados

Hay tres tipos de detectores de infoType personalizados:

Además, Protección de Datos Sensibles incluye reglas de inspección que te permiten ajustar los resultados de los análisis añadiendo lo siguiente a los detectores:

Detectores de diccionario personalizado pequeños

Usa detectores de diccionario personalizado pequeños (también denominados "detectores de diccionario personalizado normales") para buscar coincidencias con una lista corta (hasta varias decenas de miles) de palabras o frases. Un diccionario personalizado pequeño puede actuar como su propio detector único.

Los detectores de diccionario personalizado son útiles cuando quieres buscar una lista de palabras o frases que no se pueden identificar fácilmente con una expresión regular o un detector integrado. Por ejemplo, supongamos que quieres buscar salas de conferencias que se identifiquen por el nombre que se les ha asignado en lugar de por su número, como nombres de estados o regiones, monumentos, personajes de ficción, etc. Puedes crear un detector de diccionario personalizado pequeño que contenga una lista con los nombres de estas habitaciones. Protección de datos sensibles puede analizar tu contenido en busca de cada uno de los nombres de las habitaciones y devolver una coincidencia cuando encuentre uno de ellos en el contexto. Consulte más información sobre cómo la protección de datos sensibles busca palabras y frases de diccionario en la sección Detalles de la búsqueda de diccionario del artículo Crear un detector de diccionario personalizado normal.

Para obtener más información sobre cómo funcionan los detectores de InfoType personalizados de diccionario pequeño, así como ejemplos prácticos, consulta el artículo Crear un detector de diccionario personalizado normal.

Detectores de diccionario personalizado grande

Usa detectores de diccionario personalizado grandes (también denominados "detectores de diccionario personalizado almacenados") cuando tengas más de unas pocas palabras o frases que buscar, o si tu lista de palabras o frases cambia con frecuencia. Los detectores de diccionarios personalizados grandes pueden buscar coincidencias de hasta decenas de millones de palabras o frases.

Los detectores de diccionario personalizado grande se crean de forma diferente a los detectores personalizados de expresiones regulares y a los detectores de diccionario personalizado pequeño. Cada diccionario personalizado grande tiene dos componentes:

  • Una lista de frases que creas y defines. La lista se almacena como un archivo de texto en Cloud Storage o como una columna en una tabla de BigQuery.
  • Los archivos de diccionario generados, que se crean con Protección de Datos Sensibles a partir de tu lista de frases. Los archivos de diccionario se almacenan en Cloud Storage y se componen de una copia de los datos de las frases de origen, además de filtros Bloom, que ayudan a buscar y encontrar coincidencias. No puedes editar estos archivos directamente.

Una vez que hayas creado una lista de palabras y, a continuación, hayas usado Protección de Datos Sensibles para generar un diccionario personalizado, podrás iniciar o programar un análisis con un detector de diccionario personalizado grande de forma similar a otros detectores de infoType.

Para obtener más información sobre cómo funcionan los detectores de diccionarios personalizados grandes, así como ejemplos prácticos, consulta Crear un detector de diccionario personalizado almacenado.

Expresiones regulares

Un detector de InfoType personalizado de expresión regular (regex) te permite crear tus propios detectores de InfoType para que Protección de Datos Sensibles detecte coincidencias basadas en un patrón de regex. Por ejemplo, supongamos que tiene números de historial médico con el formato ###-#-#####. Puedes definir un patrón de expresión regular como el siguiente:

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

Protección de Datos Sensibles coincidiría con elementos como este:

123-4-56789

También puede especificar una probabilidad que se asignará a cada coincidencia de infoType personalizado. Es decir, cuando Protección de Datos Sensibles encuentre la secuencia que especifiques, le asignará la probabilidad que hayas indicado. Esto es útil porque, si tu expresión regular personalizada define una secuencia que es lo suficientemente común como para que pueda coincidir fácilmente con otra secuencia aleatoria, no querrás que Protección de Datos Sensibles etiquete cada coincidencia como VERY_LIKELY. Si lo hicieras, se perdería la confianza en los resultados del análisis y podría ocurrir que se asociara o se anonimizara información incorrecta.

Para obtener más información sobre los detectores personalizados de InfoType de expresiones regulares y verlos en acción, consulta el artículo Crear un detector personalizado de expresiones regulares.

Detalles de las reglas

Las reglas de inspección se usan para acotar los resultados devueltos por los detectores de infoType, ya sean integrados o personalizados. Las reglas de inspección pueden ser útiles cuando los resultados que devuelve Protección de Datos Sensibles deben aumentarse de alguna forma, ya sea añadiendo o excluyendo elementos del detector de infoType.

Hay dos tipos de reglas de inspección:

  • Reglas de exclusión
  • Reglas de palabras de activación

Para obtener más información sobre las reglas de inspección, consulta Modificar los detectores de InfoType para acotar los resultados del análisis.

Reglas de exclusión

Las reglas de exclusión le permiten reducir la cantidad o la precisión de los resultados devueltos añadiendo reglas a un detector de infoType integrado o personalizado. Las reglas de exclusión pueden ayudarte a reducir el ruido u otros resultados no deseados que devuelva un detector de infoType.

Por ejemplo, si analiza una base de datos en busca de direcciones de correo electrónico, puede añadir una regla de exclusión en forma de expresión regular personalizada que indique a Protección de Datos Sensibles que excluya cualquier resultado que termine en "@example.com".

Las reglas de exclusión no se pueden aplicar a los infoTypes de objeto.

Para obtener más información sobre las reglas de exclusión, consulta Modificar los detectores de InfoType para acotar los resultados del análisis.

Reglas de palabras de activación

Las reglas de palabras de activación te permiten aumentar la cantidad o la precisión de los resultados devueltos añadiendo reglas a un detector de infoType integrado o personalizado. Las reglas de palabras de activación pueden ayudarte a flexibilizar las reglas de un detector de infoType.

Por ejemplo, supongamos que quieres buscar nombres de pacientes en una base de datos médica. Puedes usar el detector PERSON_NAME infoType integrado de Protección de Datos Sensibles, pero esto hará que Protección de Datos Sensibles busque coincidencias con todos los nombres de personas, no solo con los nombres de pacientes. Para solucionar este problema, puede incluir una regla de palabra de activación en forma de infoType personalizado de expresión regular que busque la palabra "paciente" a una distancia determinada del primer carácter de las posibles coincidencias. Después, puedes asignar a las detecciones que coincidan con este patrón una probabilidad de "muy probable", ya que se corresponden con tus criterios especiales.

Para obtener más información sobre las reglas de palabras clave activadoras, consulta Modificar los detectores de InfoType para acotar los resultados del análisis.

Ejemplos

Para hacerte una idea de cómo se identifican los infoTipos en los resultados, consulta los siguientes ejemplos de identificación de una serie de dígitos para determinar si constituyen un número de la seguridad social o un número de identificación fiscal individual de EE. UU. Ten en cuenta que estos ejemplos son para detectores de infoType integrados. Cuando creas un detector de InfoType personalizado, especificas los criterios que determinan la probabilidad de que se produzca una coincidencia en el análisis.

Ejemplo 1

"SSN 222-22-2222"

Informa de una puntuación de probabilidad alta de VERY_LIKELY para un US_SOCIAL_SECURITY_NUMBER porque:

  • Está en el formato estándar de número de la seguridad social, lo que aumenta la certeza.
  • Tiene un contexto cercano ("DNI") que favorece la búsqueda de US_SOCIAL_SECURITY_NUMBER.

Ejemplo 2

"999-99-9999"

Informa de una puntuación de probabilidad baja de VERY_UNLIKELY para un US_SOCIAL_SECURITY_NUMBER porque:

  • Tiene el formato estándar, lo que aumenta la certeza.
  • Empieza por un 9, que no está permitido en los números de la seguridad social, por lo que se reduce la certeza.
  • No tiene contexto, lo que reduce la certeza.

Ejemplo 3

"999-98-9999"

Informa de una puntuación de probabilidad de POSSIBLE para US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER y de VERY_UNLIKELY para US_SOCIAL_SECURITY_NUMBER porque:

  • Tiene el formato estándar tanto para US_SOCIAL_SECURITY_NUMBER como para US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER.
  • Empieza por 9 y tiene otra comprobación de dígitos, lo que aumenta la certeza de US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER.
  • No tiene ningún contexto, lo que reduce la certeza de ambas.

Siguientes pasos

El equipo de Protección de Datos Sensibles publica periódicamente nuevos detectores y grupos de infoTypes. Para saber cómo obtener la lista más reciente de infoTypes integrados, consulta Mostrar detectores integrados de infoType.