Los diccionarios personalizados ofrecen la posibilidad sencilla pero potente de buscar coincidencias con una lista de palabras o frases. Puedes usar un diccionario personalizado como detector o como lista de excepciones para detectores integrados. También puede usar diccionarios personalizados para aumentar los detectores de InfoType integrados y encontrar más coincidencias.
En esta sección se describe cómo crear un detector de diccionario personalizado normal a partir de una lista de palabras.
Anatomía de un detector de infoType personalizado de diccionario
Como se resume en la descripción general de la API, para crear un detector de InfoType personalizado de diccionario, debes definir un objeto CustomInfoType
que contenga lo siguiente:
- El nombre que quieres asignar al detector de infoType personalizado, dentro de un objeto
InfoType
. - Un valor
Likelihood
opcional. Si omite este campo, las coincidencias con los elementos del diccionario devolverán una probabilidad predeterminada deVERY_LIKELY
. - Opcional
DetectionRule
objetos o reglas de activación por voz. Estas reglas ajustan la probabilidad de que se produzcan resultados dentro de una proximidad determinada de las palabras activadoras especificadas. Consulta más información sobre las reglas de palabras de activación en el artículo Personalizar la probabilidad de coincidencia. Un valor
SensitivityScore
opcional. Si omite este campo, las coincidencias con los elementos del diccionario devolverán un nivel de sensibilidad predeterminado deHIGH
.Las puntuaciones de sensibilidad se usan en los perfiles de datos. Al crear perfiles de tus datos, Protección de Datos Sensibles usa las puntuaciones de sensibilidad de los infoTypes para calcular el nivel de sensibilidad.
Un
Dictionary
, ya sea unWordList
que contenga una lista de palabras que se deben buscar o unCloudStoragePath
a un archivo de texto que contenga una lista de palabras delimitada por saltos de línea que se deben buscar.
Como objeto JSON, un detector de infoTipo personalizado de diccionario que incluye todos los componentes opcionales tiene el siguiente aspecto. Este archivo JSON incluye una ruta a un archivo de texto de diccionario almacenado en Cloud Storage. Para ver una lista de palabras insertada, 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 la concordancia con diccionario
A continuación, se ofrecen directrices sobre cómo Protección de Datos Sensibles busca coincidencias con palabras y frases de diccionarios. Estos puntos se aplican tanto a los diccionarios personalizados normales como a los grandes:
- En las palabras del diccionario no se distingue entre mayúsculas y minúsculas. Si tu diccionario incluye
Abby
, se corresponderá conabby
,ABBY
,Abby
, etc. - Todos los caracteres (en diccionarios o en contenido que se va a analizar) que no sean letras, números u otros caracteres alfabéticos incluidos en el plano multilingüe básico de Unicode se consideran espacios en blanco al buscar coincidencias. Si tu diccionario busca
Abby Abernathy
, encontrará coincidencias conabby abernathy
,Abby, Abernathy
,Abby (ABERNATHY)
, etc. - Los caracteres que rodean a cualquier coincidencia deben ser de un tipo diferente (letras o números) que los caracteres adyacentes de la palabra. Si tu diccionario busca
Abi
, coincidirá con los tres primeros caracteres deAbi904
, pero no con los deAbigail
. - Las palabras del diccionario que contengan caracteres del plano multilingüe suplementario del estándar Unicode pueden dar resultados inesperados. Algunos ejemplos de estos caracteres son los emojis, los símbolos científicos y los alfabetos históricos.
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 de contribuciónOther_Alphabetic
, tal como se define en el estándar Unicode.
Ejemplos
Lista de palabras sencilla
Supongamos que tiene datos que incluyen la habitación del hospital en la que se trató a un paciente durante una visita. Estas ubicaciones pueden considerarse sensibles en un conjunto de datos concreto, pero no son algo que detecten los detectores integrados de Protección de Datos Sensibles.
Las salas se han indicado como:
- "RM-Orange"
- "RM-Yellow"
- "RM-Green"
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.
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.
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.
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.
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.
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.
REST
El siguiente ejemplo de JSON define un diccionario personalizado que puedes usar para anonimizar números de habitación personalizados.
Entrada 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 JSON:
Cuando enviamos la entrada JSON a
content:deidentify
,
devuelve la siguiente respuesta 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"
}
]
}
}
Protección de Datos Sensibles ha identificado correctamente los números de habitación especificados en el mensaje WordList
del diccionario personalizado. Ten en cuenta que los elementos se emparejan incluso cuando faltan las mayúsculas 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 quieres ocultar esta información. Sin embargo, estos registros también incluyen las direcciones de correo de los desarrolladores internos, y no quieres ocultarlas.
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.
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.
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.
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.
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.
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.
REST
En el siguiente ejemplo de JSON se crea un diccionario personalizado que incluye un subconjunto de direcciones de correo electrónico dentro del mensaje WordList
(jack@example.org y jill@example.org) y se les asigna el nombre de infoType personalizado DEVELOPER_EMAIL
. Este JSON indica a Protección de Datos Sensibles que ignore las direcciones de correo especificadas y que sustituya cualquier otra dirección de correo que detecte por una cadena que corresponda a su infoType (en este caso, EMAIL_ADDRESS
):
Entrada 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 JSON:
Cuando enviamos este JSON a
content:deidentify
,
devuelve la siguiente respuesta 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"
}
]
}
}
En el resultado se ha identificado correctamente user1@example.com como coincidencia del detector de infoType EMAIL_ADDRESS
y jack@example.org como coincidencia del detector de infoType personalizado DEVELOPER_EMAIL
. Ten en cuenta que, como hemos elegido transformar solo EMAIL_ADDRESS
, jack@example.org no se ha modificado.
Aumentar un detector de infoType integrado
Imagina una situación en la que un detector de infoType integrado no devuelve los valores correctos. Por ejemplo, quieres obtener coincidencias de nombres de personas, pero el detector PERSON_NAME
integrado de Protección de Datos Sensibles no devuelve coincidencias de algunos nombres de personas que son habituales en tu conjunto de datos.
Protección de Datos Sensibles te permite aumentar los detectores de infoType integrados
incluyendo un detector integrado en la declaración de un detector de infoType personalizado, como se muestra en el siguiente ejemplo. En este fragmento se muestra cómo configurar Protección de Datos Sensibles para que el detector de infoType integrado PERSON_NAME
también coincida con el nombre "Quasimodo":
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.
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.
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.
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.
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.
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.
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
Siguientes pasos
Información sobre los diccionarios personalizados grandes