Los diccionarios personalizados proporcionan la capacidad simple pero potente de hacer coincidir una lista de palabras o frases. Puedes usar un diccionario personalizado como detector o como lista de excepciones para los detectores integrados. También puedes usar diccionarios personalizados a fin de mejorar los detectores de Infotipo incorporados para que coincidan con los resultados adicionales.
En esta sección, se describe cómo crear un detector de diccionarios personalizado normal a partir de una lista de palabras.
Anatomía de un detector de Infotipo personalizado de diccionario
Como se resume en la Descripción general de la API, para crear un detector de Infotipo personalizado de diccionario, debes definir un objeto CustomInfoType
que contenga lo siguiente:
- El nombre que desees darle al detector de Infotipo personalizado, dentro de un objeto
InfoType
. - Un valor
Likelihood
opcional. Si omites este campo, las coincidencias con los elementos del diccionario mostrarán una probabilidad predeterminada deVERY_LIKELY
. - Objetos
DetectionRule
opcionales o reglas de palabra clave. Estas reglas ajustan la probabilidad de resultados dentro de una proximidad determinada de las palabras clave específicas. Obtén más información sobre las reglas de palabras clave en Personaliza la probabilidad de coincidencia. Un valor
SensitivityScore
opcional. Si omites este campo, las coincidencias con los elementos del diccionario mostrarán un nivel de sensibilidad predeterminado deHIGH
.Las puntuaciones de sensibilidad se usan en los perfiles de datos. Cuando generas perfiles de tus datos, la protección de datos sensibles usa las puntuaciones de sensibilidad de los Infotipos para calcular el nivel de sensibilidad.
Un
Dictionary
, como unaWordList
que contiene una lista de palabras para analizar o unaCloudStoragePath
a un archivo de solo texto que contiene una lista de palabras delimitadas por saltos de línea que se analizarán.
Como un objeto JSON, un detector de Infotipo personalizado de diccionario que incluye todos los componentes opcionales se ve de la siguiente manera. Este JSON incluye una ruta de acceso a un archivo de texto del diccionario almacenado en Cloud Storage. Para ver una lista de palabras intercaladas, consulta la sección Ejemplos más adelante en este tema.
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
Detalles de coincidencias en el diccionario
A continuación, se incluye orientación sobre cómo la protección de datos sensibles establece coincidencias entre palabras y frases del diccionario. Estos puntos se aplican a los diccionarios personalizados grandes y normales:
- Las palabras del diccionario distinguen entre mayúsculas y minúsculas. Si tu diccionario incluye
Abby
, coincidirá conabby
,ABBY
,Abby
, etcétera. - Todos los caracteres, en los diccionarios o en el contenido que se va a analizar, excepto las letras y los dígitos en el plano multilingüe básico de Unicode, se consideran como espacios en blanco cuando se buscan coincidencias. Si tu diccionario analiza
Abby Abernathy
, coincidirá conabby abernathy
,Abby, Abernathy
,Abby (ABERNATHY)
, etcétera. - Los caracteres que rodean cualquier coincidencia deben ser de un tipo diferente (letras o dígitos) de los caracteres adyacentes dentro de la palabra. Si tu diccionario analiza
Abi
, coincidirá con los tres primeros caracteres deAbi904
, pero no deAbigail
. - Las palabras del diccionario que contienen caracteres en el plano multilingüe complementario del estándar Unicode pueden generar resultados inesperados. Algunos ejemplos de estos caracteres son el chino, el japonés, el coreano y los emojis.
Ejemplos
Lista de palabras simples
Supongamos que tienes datos que incluyen en qué habitación de hospital se trató a un paciente durante una visita. Estas ubicaciones se pueden considerar sensibles en un conjunto de datos en particular, pero no son algo que los detectores integrados de la protección de datos sensibles podrían detectar.
Las habitaciones se catalogaron de la siguiente manera:
- “RM-Orange”
- “RM-Yellow”
- “RM-Green”
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
En el siguiente ejemplo de JSON, se define un diccionario personalizado que podrías usar para desidentificar los números de habitaciones personalizados.
Entrada de JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
Salida de JSON:
Cuando publicamos la entrada JSON en content:deidentify
, se muestra la siguiente salida de JSON:
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
La Protección de datos sensibles identificó de forma correcta los números de habitación especificados en el mensaje WordList
del diccionario personalizado. Ten en cuenta que los elementos coinciden incluso cuando falta la mayúscula y el guion (-
), como en el segundo ejemplo, “rm green”.
Lista de excepciones
Supongamos que tienes datos de registro que incluyen identificadores de clientes, como direcciones de correo electrónico, y deseas ocultar esta información. Sin embargo, estos registros también incluyen las direcciones de correo electrónico de los desarrolladores internos y no quieres ocultarlas.
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
En el siguiente ejemplo de JSON, se crea un diccionario personalizado que enumera un subconjunto de direcciones de correo electrónico dentro del mensaje WordList
(jack@example.org y jill@example.org) y les asigna el nombre de Infotipo personalizado DEVELOPER_EMAIL
. Este JSON indica a la protección de datos sensibles que ignore las direcciones de correo electrónico especificadas y que reemplace cualquier otra dirección de correo electrónico que detecte por una string que corresponda a su Infotipo (en este caso, EMAIL_ADDRESS
):
Entrada de JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
Salida de JSON:
Cuando publicamos este JSON en content:deidentify
, se muestra la siguiente salida de JSON:
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
La salida identificó de forma correcta que el detector de Infotipo EMAIL_ADDRESS
y el detector de Infotipo personalizado DEVELOPER_EMAIL
coincidieron con user1@example.com y jack@example.org. Observa que, debido a que elegimos transformar solo EMAIL_ADDRESS
, la dirección jack@example.org se mantuvo intacta.
Mejora un detector de Infotipo incorporado
Considera una situación en la que un detector de Infotipo incorporado no muestra los valores correctos. Por ejemplo, deseas que se muestren las coincidencias en nombres de personas, pero el detector integrado de PERSON_NAME
de la protección de datos sensibles no puede mostrar las coincidencias en algunos nombres de personas que son comunes en tu conjunto de datos.
La protección de datos sensibles te permite mejorar los detectores de Infotipo integrados mediante la inclusión de un detector integrado en la declaración de un detector de Infotipo personalizado, como se muestra en el siguiente ejemplo. En este fragmento, se muestra cómo configurar la protección de datos sensibles para que el detector de Infotipo integrado PERSON_NAME
coincida, además, con el nombre "Quasimodo":
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas 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 la protección de datos sensibles, consulta Bibliotecas cliente de la protección de datos sensibles.
Para autenticarte en la protección de datos sensibles, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
¿Qué sigue?
Obtén más información sobre los diccionarios personalizados grandes.