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
InspectConfigen 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.
Java
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.
REST
Consulta la guía de inicio rápido de JSON para obtener más información sobre el uso de la API de DLP con JSON.
Entrada de JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Salida de JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
Si especificas redactConfig, se oculta un valor porque se lo quita por completo. El mensaje redactConfig no tiene argumentos; si lo especificas se habilita su transformación.
Por ejemplo, supongamos que especificaste redactConfig para todos los infotipos EMAIL_ADDRESS y que 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 .
En los siguientes ejemplos, se muestra cómo formar la solicitud a la API y qué muestra la API de DLP:
C#
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.
Go
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.
Java
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.
Node.js
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.
PHP
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.
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.
REST
Entrada de JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Salida de JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
Si configuras characterMaskConfig como un objeto CharacterMaskConfig, se enmascara de manera parcial una string mediante el reemplazo de una cantidad determinada de caracteres por un carácter fijo. El enmascaramiento puede comenzar desde el principio o el final de la string. Esta transformación también funciona con los tipos de número como los números enteros largos.
El objeto CharacterMaskConfig tiene varios de sus propios argumentos:
maskingCharacter: El carácter que se debe usar para enmascarar cada carácter de un valor sensible. Por ejemplo, puedes especificar un asterisco (*) o un numeral (#) para enmascarar una serie de números como los de un número de tarjeta de crédito.numberToMask: La cantidad de caracteres que se enmascararán. Si no estableces este valor, todos los caracteres coincidentes se enmascararán.reverseOrder: Si se deben enmascarar los caracteres en orden inverso. Si configurasreverseOrdercomo verdadero, los caracteres de los valores coincidentes se enmascaran desde el final hacia el principio del valor. Si lo estableces en falso, el enmascaramiento comienza al principio del valor.charactersToIgnore[]: Uno o más caracteres para omitir cuando se enmascaran valores. Por ejemplo, especifica aquí un guion para que los guiones permanezcan en su lugar cuando se enmascara un número de teléfono. También puedes especificar un grupo de caracteres comunes (CharsToIgnore) para que se los ignore cuando se enmascara.
Por ejemplo, supongamos que configuraste characterMaskConfig para enmascarar con “#” para los infotipos EMAIL_ADDRESS, excepto los caracteres “.” y “@” Si 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 ##########@#######.###.
A continuación, se muestran ejemplos para usar la API de DLP para desidentificar datos sensibles con técnicas de enmascaramiento.
Java
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.
Node.js
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.
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.
Go
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.
PHP
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.
C#
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.
REST
En el siguiente ejemplo de JSON, se muestra cómo formar una solicitud de API y lo que muestra la API de DLP:
Entrada de JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Salida de JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
Si configuras cryptoHashConfig como un objeto CryptoHashConfig, se realiza una seudonimización en un valor de entrada mediante la generación de un valor subrogado con un hash criptográfico.
Este método reemplaza al valor de entrada con un “resumen” o valor de hash encriptado.
El resumen se calcula si tomas el hash SHA-256 del valor de entrada.
La clave criptográfica que se usa para crear el hash es un objeto CryptoKey y debe tener un tamaño de 32 o 64 bytes.
El método genera una representación codificada en Base64 de la salida de hash. Por el momento, solo los valores de número entero y string pueden generar un hash.
Por ejemplo, supongamos que especificaste cryptoHashConfig para todos los Infotipos EMAIL_ADDRESS y el objeto CryptoKey consta de una clave generada de forma aleatoria (TransientCryptoKey). Luego, se envía la siguiente cadena a Sensitive Data Protection:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
La string obtenida generada de manera criptográfica tendrá el siguiente aspecto:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Por supuesto, la string hexadecimal se generará de manera criptográfica y será diferente a la que se muestra aquí.
dateShiftConfig
Si configuras dateShiftConfig como un objeto DateShiftConfig, se realiza un cambio de fecha en un valor de entrada de fecha mediante el cambio de fechas por una cantidad de días aleatoria.
Las técnicas de cambio de fechas cambian un conjunto de fechas de forma aleatoria, pero conservan la secuencia y la duración de un período. En general, el cambio de fechas se realiza en el contexto de un individuo o una entidad. Es decir, debes cambiar todas las fechas para un individuo específico con el mismo diferencial de cambio, pero debes usar un diferencial de cambio distinto para cada individuo.
Para obtener más información sobre cambio de fecha, consulta el tema del concepto de cambio de fecha.
A continuación, se muestra el código de muestra en varios lenguajes que demuestran cómo usar la API de DLP para desidentificar fechas mediante el cambio de fecha.
Java
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.