En este tema, se describe cómo crear y volver a compilar diccionarios personalizados grandes. También abarca varias situaciones de error.
Cuándo elegir un diccionario personalizado grande en lugar de un diccionario personalizado normal
Los detectores de diccionarios personalizados normales son suficientes cuando tienes decenas de miles de palabras o frases sensibles en las que deseas analizar tu contenido. Si tienes más términos o si tu lista de términos cambia con frecuencia, considera crear un diccionario personalizado grande, que puede admitir decenas de millones de términos.
Diferencias entre los diccionarios personalizados grandes y otros Infotipos personalizados
Los diccionarios personalizados grandes son diferentes de otros Infotipos personalizados, ya que cada diccionario personalizado grande tiene dos componentes:
- Una lista de frases que creas y defines. La lista se almacena como un archivo de texto dentro de Cloud Storage o como una columna en una tabla de BigQuery.
- Los archivos del diccionario, que la protección de datos sensibles genera y almacena en Cloud Storage Los archivos de diccionario se componen de una copia de tu lista de términos y filtros de Bloom que ayudan en la búsqueda y en la detección de coincidencias.
Crear un diccionario personalizado grande
En esta sección, se describe cómo crear, editar y volver a compilar un diccionario personalizado grande.
Crear una lista de términos
Crea una lista que contenga todas las palabras y frases que deseas que busque el detector de Infotipo nuevo. Realiza una de las siguientes acciones:
- Colocar un archivo de texto con cada palabra o frase en su propia línea en un bucket de Cloud Storage.
- Designa una columna de una tabla de BigQuery como contenedor para las palabras y frases. Otorga a cada entrada su propia fila en la columna. Puedes usar una tabla de BigQuery existente, siempre que todas las palabras y frases del diccionario estén en una sola columna.
Es posible crear una lista de términos que sea demasiado grande para que la protección de datos sensibles la procese. Si ves un mensaje de error, consulta Solución de errores más adelante en este tema.
Crea un Infotipo almacenado
Después de crear tu lista de términos, usa la protección de datos sensibles para crear un diccionario:
Console
En un bucket de Cloud Storage, crea una carpeta nueva en la que la protección de datos sensibles almacenará el diccionario generado.
La protección de datos sensibles crea carpetas que contienen los archivos del diccionario en la ubicación que especifiques.
En la consola de Google Cloud, ve a la página Crear infotipo.
En Tipo, selecciona Diccionario personalizado grande.
En ID de Infotipo, ingresa un identificador para el Infotipo almacenado.
Usarás este identificador cuando configures tus trabajos de inspección y desidentificación. Puedes usar letras, números, guiones y guiones bajos en el nombre.
En Nombre visible del Infotipo, ingresa un nombre para el Infotipo almacenado.
Puedes usar espacios y signos de puntuación en el nombre.
En Descripción, ingresa una descripción de lo que detecta tu Infotipo almacenado.
En Tipo de almacenamiento, selecciona la ubicación de tu lista de términos:
- BigQuery: Ingresa el ID del proyecto, el ID del conjunto de datos y el ID de la tabla. En el campo Nombre del campo, ingresa el identificador de la columna. Puedes designar como máximo una columna de la tabla.
- Google Cloud Storage: Ingresa la ruta de acceso al archivo.
En Bucket o carpeta de salida, ingresa la ubicación de Cloud Storage de la carpeta que creaste en el paso 1.
Haz clic en Crear.
Aparecerá un resumen del Infotipo almacenado. Cuando se genera el diccionario y el nuevo Infotipo almacenado está listo para usar, el estado del Infotipo muestra Listo.
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
- Crea una carpeta nueva para el diccionario en un bucket de Cloud Storage. La protección de datos sensibles crea carpetas que contienen los archivos del diccionario en la ubicación que especifiques.
- Crea el diccionario con el método
storedInfoTypes.create
. El métodocreate
incluye los siguientes parámetros:- Un objeto
StoredInfoTypeConfig
, que contiene la configuración del Infotipo almacenado Incluye lo siguiente:description
: es una descripción del diccionario.displayName
: es el nombre que deseas asignar al diccionario.LargeCustomDictionaryConfig
: Contiene la configuración del diccionario personalizado grande. Encontrarás la siguiente información:BigQueryField
: se especifica si tu lista de términos se almacena en BigQuery. Incluye una referencia a la tabla en la que está almacenada tu lista, además del campo que contiene cada frase del diccionario.CloudStorageFileSet
: se especifica si tu lista de términos se almacena en Cloud Storage. Incluye la URL a la ubicación de origen en Cloud Storage, de la siguiente manera:"gs://[PATH_TO_GS]"
. Se admiten comodines.outputPath
: es la ruta a la ubicación en un bucket de Cloud Storage para almacenar el diccionario creado.
storedInfoTypeId
: Es el identificador del Infotipo almacenado. Usa este identificador para hacer referencia al Infotipo almacenado cuando lo vuelvas a compilar, lo borres o lo uses en un trabajo de inspección o desidentificación. Si dejas este campo vacío, el sistema generará un identificador para ti.
- Un objeto
A continuación, se muestra un ejemplo de JSON que, cuando se envía al método storedInfoTypes.create
, crea un Infotipo almacenado nuevo, en particular, un detector de diccionario personalizado grande. En este ejemplo, se crea un Infotipo almacenado a partir de una lista de términos almacenada en una base de datos de BigQuery disponible de forma pública (bigquery-public-data.samples.github_nested
). La base de datos contiene todos los nombres de usuario de GitHub que se usan en las confirmaciones. La ruta de salida para el diccionario generado se establece en un bucket de Cloud Storage llamado dlptesting
, y el Infotipo almacenado se llama github-usernames
.
Entrada de JSON
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes
{
"config":{
"displayName":"GitHub usernames",
"description":"Dictionary of GitHub usernames used in commits",
"largeCustomDictionary":{
"outputPath":{
"path":"gs://[PATH_TO_GS]"
},
"bigQueryField":{
"table":{
"datasetId":"samples",
"projectId":"bigquery-public-data",
"tableId":"github_nested"
}
}
}
},
"storedInfoTypeId":"github-usernames"
}
Vuelve a compilar el diccionario
Si deseas actualizar el diccionario, primero debes actualizar la lista de términos de origen y, luego, indicarle a la Protección de datos sensibles que vuelva a compilar el Infotipo almacenado.
Actualiza la lista de términos de origen existente en Cloud Storage o BigQuery.
Agrega, quita o cambia los términos o frases según sea necesario.
Para crear una versión nueva del Infotipo almacenado, vuelve a compilarlo con la consola de Google Cloud o el método
storedInfoTypes.patch
.Cuando se vuelve a compilar, se crea una versión nueva del diccionario, que reemplaza el diccionario anterior.
Cuando vuelves a compilar un Infotipo almacenado en una versión nueva, se borra la versión anterior. Mientras la Protección de datos sensibles actualiza el Infotipo almacenado, su estado es “pendiente”. Durante este tiempo, la versión anterior del Infotipo almacenado todavía existe. Cualquier análisis que ejecutes mientras el Infotipo almacenado está en estado pendiente se ejecutará con la versión anterior del Infotipo almacenado.
Para volver a compilar el Infotipo almacenado, haz lo siguiente:
Console
- Actualiza y guarda tu lista de términos en Cloud Storage o BigQuery.
En la consola de Google Cloud, ve a tu lista de Infotipos almacenados.
Haz clic en el ID del Infotipo almacenado que deseas actualizar.
En la página Detalles del Infotipo, haz clic en Volver a compilar datos.
La protección de datos sensibles vuelve a compilar el Infotipo almacenado con los cambios que realizaste en la lista de términos de origen. Una vez que el estado del Infotipo almacenado sea “Listo”, puedes usarlo. Cualquier plantilla o activador de trabajo que use el Infotipo almacenado usará de forma automática la versión que se volvió a compilar.
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
Actualizar la lista de términos
Si solo actualizas la lista de términos del diccionario personalizado grande, la solicitud storedInfoTypes.patch
solo requiere el campo name
. Proporciona el nombre completo del recurso del Infotipo almacenado que deseas volver a compilar.
Los siguientes patrones representan entradas válidas para el campo name
:
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_ID
projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
Reemplaza STORED_INFOTYPE_ID por el identificador del Infotipo almacenado que deseas volver a compilar.
Si no conoces el identificador del Infotipo almacenado, llama al método storedInfoTypes.list
para ver una lista de todos los Infotipos almacenados actuales.
Ejemplo
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
En este caso, el cuerpo de la solicitud no es necesario.
Cambiar la lista de términos de origen
Puedes cambiar la lista de términos de origen para un Infotipo almacenado de uno almacenado en BigQuery a uno almacenado en Cloud Storage. Usa el método storedInfoTypes.patch
, pero incluye un objeto CloudStorageFileSet
en LargeCustomDictionaryConfig
en el que ya usaste un objeto BigQueryField
. Luego, configura el parámetro updateMask
en el parámetro de Infotipo almacenado que volviste a compilar, en formato FieldMask
. Por ejemplo, el siguiente JSON indica en el parámetro updateMask
que se actualizó la URL de la ruta de acceso de Cloud Storage (large_custom_dictionary.cloud_storage_file_set.url
):
Ejemplo
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/github-usernames
{
"config":{
"largeCustomDictionary":{
"cloudStorageFileSet":{
"url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
}
}
},
"updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}
De manera similar, puedes cambiar tu lista de términos de una almacenada en una tabla de BigQuery a una almacenada en un bucket de Cloud Storage.
Analiza contenido con un detector de diccionarios personalizado grande
Analizar contenido con un detector de diccionario personalizado grande es similar a analizar contenido con cualquier otro detector de Infotipo personalizado.
En este procedimiento, se supone que ya tienes un Infotipo almacenado. Para obtener más información, consulta Crea un Infotipo almacenado en esta página.
Console
Puedes aplicar un detector de diccionario personalizado grande cuando haces lo siguiente:
- Crear un trabajo nuevo
- Crear o editar un activador de trabajo
- Crea o edita una plantilla
- Configuración de la generación de perfiles de datos
En la sección Configurar detección de la página, en la subsección Infotipos, puedes especificar tu Infotipo de diccionario personalizado grande.
- Haz clic en Administrar infotipos.
- En el panel InfoTypes, haz clic en la pestaña InfoTypes.
- Haz clic en Agregar Infotipo personalizado.
En el panel Add custom infoType (Agregar Infotipo personalizado), haz lo siguiente:
- En Tipo, selecciona Infotipo almacenado.
- En InfoType, ingresa un nombre para el Infotipo personalizado. Puedes usar letras, números y guiones bajos.
En Likelihood, selecciona el nivel de probabilidad predeterminado que deseas asignar a todos los resultados que coincidan con este Infotipo personalizado. Puedes ajustar aún más el nivel de probabilidad de resultados individuales mediante las reglas de palabra clave.
Si no especificas un valor predeterminado, el nivel de probabilidad predeterminado se establece en
VERY_LIKELY
. Para obtener más información, consulta Probabilidad de coincidencia.En Sensibilidad, selecciona el nivel de sensibilidad que deseas asignar a todos los resultados que coincidan con este Infotipo personalizado. Si no especificas un valor, los niveles de sensibilidad de esos resultados se establecen en
HIGH
.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.
En Nombre del Infotipo almacenado, selecciona el Infotipo almacenado en el que deseas basar el nuevo Infotipo personalizado.
Haz clic en Listo para cerrar el panel Agregar infotipo personalizado.
Opcional: En la pestaña Integrado, edita la selección de Infotipos integrados.
Haz clic en Listo para cerrar el panel Infotipos.
El Infotipo personalizado se agrega a la lista de Infotipos que analiza la Protección de datos sensibles. Sin embargo, esta selección no será definitiva hasta que guardes el trabajo, el activador del trabajo, la plantilla o la configuración del análisis.
Cuando termines de crear o editar la configuración, haz clic en Guardar.
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
Cuando se envía al método content.inspect
, en el siguiente ejemplo, se analiza el texto dado con el detector de Infotipo almacenado especificado. El parámetro infoType
es obligatorio porque todos los Infotipos personalizados deben tener un nombre que no entre en conflicto con los Infotipos integrados ni con otros Infotipos personalizados. El parámetro storedType
contiene la ruta de acceso completa al recurso del Infotipo almacenado.
Entrada de JSON
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
{
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"GITHUB_LOGINS"
},
"storedType":{
"name":"projects/PROJECT_ID/storedInfoTypes/github-logins"
}
}
]
},
"item":{
"value":"The commit was made by githubuser."
}
}
Solucionar errores
Si recibes un error mientras intentas crear un Infotipo almacenado a partir de una lista de términos almacenada en Cloud Storage, puede deberse a las siguientes causas:
- Alcanzaste un límite superior para los Infotipos almacenados. Según el problema, hay varias soluciones:
- Si alcanzas el límite superior para un solo archivo de entrada en Cloud Storage (200 MB), intenta dividir el archivo en varios archivos. Puedes usar varios archivos para crear un único diccionario personalizado, siempre y cuando el tamaño combinado de todos los archivos no exceda 1 GB.
- BigQuery no tiene los mismos límites que Cloud Storage. Considera trasladar los términos a una tabla de BigQuery. El tamaño máximo de una columna de diccionario personalizado en BigQuery es de 1 GB y la cantidad máxima de filas es de 5,000,000.
- Si tu archivo de lista de términos excede todos los límites aplicables para las listas de términos de origen, debes dividir el archivo de lista de términos en varios archivos y crear un diccionario para cada uno. Luego, crea un trabajo de análisis separado para cada diccionario.
- Uno o más de tus términos no contienen, al menos, una letra o número. La Protección de datos sensibles no puede analizar términos que estén compuestos solo de espacios o símbolos. Debe tener al menos una letra o número. Mira tu lista de términos y fíjate si hay alguno de esos términos incluido y, luego, corrígelo o bórralo.
- Tu lista de términos contiene una frase con demasiados “componentes”. Un componente en este contexto es una secuencia continua que contiene solo letras, solo números o solo caracteres que no son letras ni dígitos, como espacios o símbolos. Mira tu lista de términos y fíjate si hay alguno de esos términos incluido y, luego, corrígelo o bórralo.
- El agente de servicio de protección de datos sensibles no tiene acceso a los datos de origen del diccionario ni al bucket de Cloud Storage para almacenar archivos de diccionario. Para solucionar este problema, otorga al agente de servicio de protección de datos sensibles el rol de administrador de almacenamiento (
roles/storage.admin
) o de propietario de datos de BigQuery (roles/bigquery.dataOwner
) y usuario de trabajo de BigQuery (roles/bigquery.jobUser
).
Descripción general de la API
Debes crear un Infotipo almacenado si creas un detector de diccionario personalizado grande.
Un Infotipo almacenado se representa en la protección de datos sensibles con el objeto StoredInfoType
. Consta de los siguientes objetos relacionados:
StoredInfoTypeVersion
incluye la fecha y hora de creación y los últimos cinco mensajes de error que se produjeron cuando se creó la versión actual.StoredInfoTypeConfig
contiene la configuración del Infotipo almacenado, incluidos su nombre y descripción. Para un diccionario personalizado grande,type
debe serLargeCustomDictionaryConfig
.LargeCustomDictionaryConfig
especifica lo siguiente:- Dónde se almacena tu lista de frases dentro de Cloud Storage o BigQuery.
- Dónde se almacenan los archivos de diccionario generados en Cloud Storage.
StoredInfoTypeState
contiene el estado de la versión más reciente y cualquier versión pendiente del Infotipo almacenado. La información de estado incluye si el Infotipo almacenado se está recopilando de nuevo, si está listo para usar o si no es válido.
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.
Para crear, editar o borrar un Infotipo almacenado, utiliza los siguientes métodos:
storedInfoTypes.create
: crea un nuevo Infotipo almacenado según el objetoStoredInfoTypeConfig
que especifiques.storedInfoTypes.patch
: Vuelve a compilar el Infotipo almacenado con unStoredInfoTypeConfig
nuevo que especifiques. Si no se especifica ninguno, este método crea una versión nueva del Infotipo almacenado con elStoredInfoTypeConfig
existente.storedInfoTypes.get
: recupera el objetoStoredInfoTypeConfig
y las versiones pendientes del Infotipo almacenado especificado.storedInfoTypes.list
: enumera todos los Infotipos almacenados actualmente.storedInfoTypes.delete
: borra el Infotipo almacenado especificado.