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 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.
Nesta seção, descrevemos como criar um detector de dicionário personalizado regular com base em 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
Likelihoodopcional. Se você omitir esse campo, as correspondências com os itens do dicionário vão retornar uma probabilidade padrão deVERY_LIKELY. - Objetos
DetectionRuleou 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
SensitivityScoreopcional. Se você omitir esse campo, as correspondências com os itens do dicionário vão retornar um nível de sensibilidade padrão deHIGH.As pontuações de sensibilidade são usadas em perfis de dados. Ao criar o perfil dos dados, a Proteção de Dados Sensíveis usa as pontuações de confidencialidade dos infoTypes para calcular o nível de confidencialidade.
Um
Dictionary, como umWordListcontendo uma lista de palavras a serem verificadas ou umCloudStoragePathpara 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 ver 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
Veja a seguir orientações sobre como a Proteção de Dados Sensíveis faz a correspondência de palavras e frases do dicionário. Estes pontos se aplicam a dicionários personalizados normais e grandes:
- As palavras do dicionário não diferenciam maiúsculas de minúsculas. Se o dicionário incluir
Abby, ele corresponderá aabby,ABBY,Abbye assim por diante. - Todos os caracteres (em dicionários ou no conteúdo a ser verificado), exceto
letras, dígitos e outros caracteres alfabéticos contidos no
Plano Multilíngue Básico
do Unicode, são considerados espaços em branco ao verificar 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. - Palavras do dicionário que contêm caracteres no Plano Multilíngue Suplementar do padrão Unicode podem gerar descobertas inesperadas. Exemplos desses caracteres são emojis, símbolos científicos e scripts históricos.
Letras, dígitos e outros caracteres alfabéticos são definidos da seguinte maneira:
- Letras: caracteres com categorias gerais
Lu,Ll,Lt,LmouLona especificação Unicode - Dígitos: caracteres com a categoria geral
Ndna especificação Unicode - Outros caracteres alfabéticos: caracteres com categoria geral
Nlna especificação Unicode ou com 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 sensíveis em um determinado conjunto de dados, mas não são algo que seria detectado 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 e
substituir todos os outros endereços de e-mail detectados por uma string que corresponda
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 que user1@example.com corresponde ao detector de infoType EMAIL_ADDRESS e jack@example.org corresponde ao detector de infoType personalizado DEVELOPER_EMAIL. Como escolhemos transformar apenas EMAIL_ADDRESS, jack@example.org permaneceu intacto.
Aumentar um detector de infoType integrado
Considere um cenário em que um detector de infoType integrado não está retornando os
valores corretos. Por exemplo, você quer retornar correspondências de nomes de pessoas, mas
o detector PERSON_NAME integrado da Proteção de Dados Sensíveis não está
retornando correspondências de alguns nomes de pessoas 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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 da Proteção de Dados Sensíveis, consulte Bibliotecas de cliente da 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.