Desidentificar datos sensibles

Sensitive Data Protection puede desidentificar datos sensibles en el contenido de texto, incluido el texto almacenado en estructuras de contenedor como tablas. La desidentificación es el proceso de quitar información de identificación de los datos. La API detecta datos sensibles, como información de identificación personal (PII) y, luego, usa una transformación de desidentificación para enmascarar, borrar o, de otro modo, ocultar los datos. Por ejemplo, a continuación se muestran algunas de las técnicas de desidentificación:

  • Enmascarar datos sensibles mediante el reemplazo parcial o completo de caracteres con un símbolo, como un asterisco (*) o un hash (#).
  • Reemplaza cada instancia de datos sensibles con un token o una string subrogada.
  • Encriptación y reemplazo de datos sensibles con una clave predeterminada o generada de manera aleatoria.

Puedes proporcionar información a la API mediante JSON a través de HTTPS, también con la CLI y varios lenguajes de programación a través de las bibliotecas cliente de Sensitive Data Protection. Para configurar la CLI, consulta la Guía de inicio rápido. Para obtener más información sobre el envío de información en formato JSON, consulta la Guía de inicio rápido de JSON.

Descripción general de la API

Para desidentificar datos sensibles, usa el método content.deidentify de Sensitive Data Protection.

A continuación, se muestran las tres partes de desidentificación a una llamada a la API:

  • Los datos a inspeccionar: Una string o estructura de tabla (objeto ContentItem) para que la API inspeccione.
  • Qué se debe inspeccionar: Información de configuración de detección (InspectConfig), como qué tipos de datos (o infotipos) buscar, si filtrar resultados que están por encima de un límite de probabilidad determinado y si se debe mostrar una cantidad determinada de resultados.

    En tu objeto InspectConfig, asegúrate de incluir los infotipos que deseas analizar. De lo contrario, Sensitive Data Protection analizará un conjunto predeterminado de infoTypes (ALL_BASIC), algunos de los cuales es posible que no necesites. Analizar los Infotipos que no necesitas puede agregar latencia innecesaria a tu solicitud.

    Se requiere un objeto InspectConfig en tu solicitud, con una excepción. Para obtener más información, consulta Transformaciones de registros en esta página.

  • Qué hacer con los resultados de la inspección: La información de configuración (DeidentifyConfig) que define cómo deseas que se desidentifiquen los datos sensibles. En la siguiente sección, encontrarás más detalles sobre este argumento.

La API muestra los mismos elementos que le proporcionaste, en el mismo formato, pero se desidentificó todo el texto que contenga información sensible de acuerdo con tus criterios.

Especifica criterios de detección

Los detectores de tipo de información (o “Infotipo”) son los mecanismos que usa Sensitive Data Protection para encontrar datos sensibles.

Sensitive Data Protection incluye varios tipos de detectores de Infotipo, los cuales se resumen a continuación:

  • Los detectores de Infotipo integrados están incorporados en Sensitive Data Protection. Incluyen detectores para tipos de datos sensibles específicos de un país o región, así como tipos de datos aplicables a nivel mundial.
  • Los detectores de Infotipos personalizados son detectores que creas tú mismo. Existen tres tipos de detectores de Infotipos personalizados:
    • Los detectores de diccionarios personalizados normales son listas de palabras sencillas con las que Sensitive Data Protection detecta coincidencias. Usa los detectores de diccionarios personalizados normales cuando tengas una lista de al menos varias decenas de miles de palabras o frases. Se prefieren los detectores de diccionarios personalizados normales si esperas que tu lista de palabras no cambie de forma significativa.
    • La Protección de datos sensibles genera detectores de diccionarios personalizados almacenados con listas grandes de palabras o frases almacenadas en Cloud Storage o BigQuery. Usa los detectores de diccionarios personalizados almacenados cuando tengas listas grandes de palabras o frases de hasta decenas de millones.
    • Los detectores de expresiones regulares (regex) permiten que Sensitive Data Protection detecte coincidencias basadas en un patrón de expresión regular.

Para definir mejor los resultados del análisis, puedes crear reglas de inspección.

Transformaciones de desidentificación

Debes especificar una o más transformaciones cuando estableces la configuración de desidentificación (DeidentifyConfig). Existen dos categorías de transformaciones:

  • InfoTypeTransformations: Las transformaciones que solo se aplican a valores dentro del texto enviado que se identifican como un Infotipo específico.
  • RecordTransformations: Las transformaciones que solo se aplican a valores dentro de datos de texto tabulares enviados que se identifican como un Infotipo específico o en una columna completa de datos tabulares.

Transformaciones de Infotipos

Puedes especificar una o más transformaciones de Infotipo por solicitud. Dentro de cada objeto InfoTypeTransformation, especifica lo siguiente:

  • Uno o más Infotipos a los que se les debe aplicar una transformación (el objeto del arreglo infoTypes[])
  • Una transformación básica (el objeto PrimitiveTransformation)

Ten en cuenta que especificar un Infotipo es opcional, pero no especificar al menos un Infotipo en un argumento InspectConfig hace que la transformación se aplique a todos los Infotipos integrados que no tengan una transformación proporcionada. Esto no se recomienda, debido a que puede causar una disminución en el rendimiento y un incremento en el costo.

Transformaciones primitivas

Debes especificar al menos una transformación primitiva para aplicar a la entrada, sin importar si se aplica solo a ciertos infotipos o a la cadena de texto completa. En las siguientes secciones, se describen ejemplos de métodos de transformación que puedes usar. Para obtener una lista de todos los métodos de transformación que ofrece Sensitive Data Protection, consulta la Referencia de transformación.

replaceConfig

Establecer replaceConfig en un objeto ReplaceValueConfig reemplaza los valores de entrada coincidentes por un valor que especifiques.

Por ejemplo, supongamos que configuraste replaceConfig como “[email-address]” para todos los Infotipos EMAIL_ADDRESS y la siguiente cadena se envía a Sensitive Data Protection:

My name is Alicia Abernathy, and my email address is aabernathy@example.com.

La string obtenida será la que se muestra a continuación:

My name is Alicia Abernathy, and my email address is [email-address].

En el siguiente ejemplo y código JSON en varios lenguajes, se muestra cómo formar la solicitud a la API y lo que muestra la API de DLP:

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Sensitive Data Protection, consulta las bibliotecas cliente de Sensitive Data Protection.

Para autenticarte en Sensitive Data Protection, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

from typing import List

import google.cloud.dlp


def deidentify_with_replace(
    project: str,
    input_str: str,
    info_types: List[str],
    replacement_str: str = "REPLACEMENT_STR",
) -> None:
    """Uses the Data Loss Prevention API to deidentify sensitive data in a
    string by replacing matched input values with a value you specify.
    Args:
        project: The Google Cloud project id to use as a parent resource.
        input_str: The string to deidentify (will be treated as text).
        info_types: A list of strings representing info types to look for.
        replacement_str: The string to replace all values that match given
            info types.
    Returns:
        None; the response from the API is printed to the terminal.
    """

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

    # Convert the project id into a full resource id.
    parent =