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 una lista de excepciones para detectores incorporados. 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 predeterminadaVERY_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 se crea un perfil de tus datos, Sensitive Data Protection usa las puntuaciones de sensibilidad de los infoTypes 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. Si deseas 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 presenta una guía sobre cómo Sensitive Data Protection detecta coincidencias entre palabras y frases del diccionario. Estos puntos se aplican a los diccionarios personalizados normales y grandes:
- Las palabras del diccionario no 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, los dígitos y otros caracteres alfabéticos contenidos 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 del Plano multilingüe complementario del estándar Unicode pueden generar resultados inesperados. Algunos ejemplos de esos caracteres son los emojis, los símbolos científicos y las escrituras históricas.
Las letras, los dígitos y otros caracteres alfabéticos se definen de la siguiente manera:
- Letras: caracteres con categorías generales
Lu
,Ll
,Lt
,Lm
oLo
en la especificación Unicode - Dígitos: caracteres con la categoría general
Nd
en la especificación Unicode - Otros caracteres alfabéticos: caracteres con la categoría general
Nl
en la especificación Unicode o con la propiedad contribuyenteOther_Alphabetic
, como se define en el estándar Unicode
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 identifiquen.
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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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ó correctamente 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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
. Con este JSON, se le indica a la Protección de datos sensibles que ignore las direcciones de correo electrónico especificadas y que reemplace todas las direcciones de correo electrónico que detecte por una cadena 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 incorporado de PERSON_NAME
de Protección de datos sensibles no puede mostrar las coincidencias en algunos nombres de personas que son comunes dentro de tu conjunto de datos.
La protección de datos sensibles te permite mejorar los detectores de Infotipo incorporados mediante la inclusión de un detector integrado en la declaración para un detector de Infotipo personalizado, como se muestra en el siguiente ejemplo. En este fragmento, se ilustra cómo configurar la Protección de datos sensibles para que el detector de Infotipo incorporado PERSON_NAME
coincida, además, con el nombre “Quasimodo”:
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 Protección de datos sensibles, consulta Bibliotecas cliente de 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 información sobre los diccionarios personalizados grandes.