Os dicionários personalizados têm a capacidade simples e eficaz de corresponder listas de palavras ou frases. É possível usar um dicionário personalizado como um detector ou como uma lista de exceções para detectores integrados. Também é possível usar dicionários personalizados para aumentar os detectores de infoType integrados para corresponder a outras descobertas.
Esta seção descreve como criar um detector de dicionário personalizado regular a partir de uma lista de palavras.
Anatomia de um detector de infoType personalizado de dicionário
Conforme resumido na
Visão geral da API, para criar um
detector de infoType personalizado de dicionário, defina um objeto
CustomInfoType
que contenha o seguinte:
- O nome que você quer dar ao detector de infoType personalizado, em um objeto
InfoType
. - Um valor
Likelihood
opcional. Se você omitir esse campo, as correspondências retornadas para os itens do dicionário terão uma probabilidade padrão deVERY_LIKELY
. - Objetos
DetectionRule
ou regras de hotword opcionais. Essas regras ajustam a probabilidade de descobertas de acordo com determinada proximidade de hotwords especificadas. Saiba mais sobre regras de hotwords em Como personalizar a probabilidade de correspondência. Um valor
SensitivityScore
opcional. Se você omitir esse campo, as correspondências retornadas para os itens do dicionário vão retornar um nível de sensibilidade padrão deHIGH
.Os escores de sensibilidade são usados em perfis de dados. Ao criar o perfil dos seus dados, a Proteção de dados sensíveis usa as pontuações de sensibilidade dos infoTypes para calcular o nível de confidencialidade.
Um
Dictionary
, como umWordList
contendo uma lista de palavras a serem verificadas ou umCloudStoragePath
para um único arquivo de texto contendo uma lista de palavras delimitadas por nova linha a serem verificadas também.
Como um objeto JSON, um detector de infoType personalizado de dicionário que inclui todos os componentes opcionais tem a aparência a seguir. Esse JSON inclui um caminho para um arquivo de texto de dicionário armazenado no Cloud Storage. Para conferir uma lista de palavras inline, consulte a seção Exemplos, mais adiante neste tópico.
{
"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"
}
}
}
],
...
}
Especificações de correspondência de dicionário
Confira a seguir orientações sobre como a Proteção de dados sensíveis combina palavras e frases do dicionário. As observações abaixo se aplicam a dicionários personalizados grandes e regulares:
- As palavras do dicionário são indiferentes a maiúsculas. Se o dicionário incluir
Abby
, ele corresponderá aabby
,ABBY
,Abby
e assim por diante. - Todos os caracteres, tanto nos dicionários quanto no conteúdo que será verificado, diferentes de letras, dígitos e outros caracteres alfabéticos contidos no Plano Multilíngue Básico Unicode são considerados espaços em branco durante a verificação de correspondências. Se o dicionário procurar
por
Abby Abernathy
, ele corresponderá aabby abernathy
,Abby, Abernathy
,Abby (ABERNATHY)
e assim por diante. - Os caracteres ao redor das correspondências precisam ser de um tipo diferente (letras ou dígitos) dos caracteres adjacentes da palavra. Se o dicionário procurar
Abi
, ele corresponderá aos três primeiros caracteres deAbi904
, mas não deAbigail
. - As palavras do dicionário que contêm caracteres no plano multilíngue complementar do padrão Unicode podem gerar resultados inesperados. Exemplos de caracteres desse tipo são emojis, símbolos científicos e escritas históricas.
As letras, os dígitos e outros caracteres alfabéticos são definidos da seguinte maneira:
- Letras: caracteres com categorias gerais
Lu
,Ll
,Lt
,Lm
ouLo
na especificação Unicode - Dígitos: caracteres com a categoria geral
Nd
na especificação Unicode - Outros caracteres alfabéticos: caracteres com a categoria geral
Nl
na especificação Unicode ou com a propriedade contributivaOther_Alphabetic
, conforme definido pelo padrão Unicode
Exemplos
Lista de palavras simples
Suponha que você tenha dados que incluam em qual quarto de hospital um paciente foi tratado. Esses locais podem ser considerados confidenciais em um determinado conjunto de dados, mas não são dados que seriam selecionados pelos detectores integrados da Proteção de dados sensíveis.
Os quartos foram listados como:
- "RM-laranja"
- "RM-amarelo"
- "RM-verde"
C#
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
No exemplo a seguir, o JSON define um dicionário personalizado que você pode usar para desidentificar números de quartos 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"
]
}
}
}
]
}
}
Saída JSON:
Quando executamos o comando POST na entrada JSON para content:deidentify
, ele retorna a seguinte resposta 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"
}
]
}
}
A Proteção de dados sensíveis identificou corretamente os números de quarto
especificados na mensagem
WordList
do dicionário personalizado. Os itens são correspondidos mesmo quando não há letras maiúsculas e hífen (-
), como no segundo exemplo, "rm verde".
Lista de exceções
Suponha que você tenha dados de registro com identificadores de clientes, como endereços de e-mail, e você queira editar essas informações. No entanto, esses registros também incluem os endereços de e-mail de desenvolvedores internos e você não quer editá-los.
C#
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
O seguinte exemplo JSON cria um dicionário personalizado que lista um subconjunto de endereços de e-mail na mensagem WordList
(jack@example.org e jill@example.org) e atribui a eles o nome infoType personalizado DEVELOPER_EMAIL
. Esse JSON instrui a
Proteção de dados sensíveis a ignorar os endereços de e-mail especificados, substituindo outros endereços de e-mail detectados por uma string correspondente
ao infoType (neste 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"
}
}
]
}
]
}
}
Saída JSON:
Quando executamos o comando POST nesse JSON para content:deidentify
, ele retorna a seguinte resposta 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"
}
]
}
}
A saída identificou corretamente user1@example.com como correspondência pelo detector de infoType EMAIL_ADDRESS
e jack@example.org como correspondência pelo detector de infoType DEVELOPER_EMAIL
personalizado. Como escolhemos transformar apenas EMAIL_ADDRESS
, jack@example.org permaneceu intacto.
Aumentar um detector de infoType integrado
Imagine um cenário em que um detector de infoType integrado não retorna os
valores corretos. Por exemplo, você quer retornar correspondências em nomes de pessoas, mas o detector PERSON_NAME
integrado da Proteção de dados sensíveis não está retornando correspondências em alguns nomes de pessoas que são comuns no seu conjunto de dados.
A Proteção de dados sensíveis permite aumentar os detectores de infoType integrados
incluindo um detector integrado na declaração de um detector de infoType
personalizado, conforme mostrado no exemplo a seguir. Este snippet ilustra como
configurar a Proteção de dados sensíveis para que o detector de infoType
integrado PERSON_NAME
também corresponda ao nome "Quasimodo":
C#
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente para a Proteção de dados sensíveis, consulte Bibliotecas de cliente para a Proteção de dados sensíveis.
Para autenticar na Proteção de dados sensíveis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
REST
... "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"PERSON_NAME" }, "dictionary":{ "wordList":{ "words":[ "quasimodo" ] } } } ] } ...
A seguir
Saiba mais sobre dicionários personalizados grandes.