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 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, você define um objeto CustomInfoType
que contém 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 com os itens do dicionário retornarã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 com os itens do dicionário retornarão 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 sensibilidade dos infoTypes para calcular o nível de sensibilidade.
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 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
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 tanto grandes quanto 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 e dígitos 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 do plano multilíngue complementar do padrão Unicode podem gerar descobertas inesperadas. Alguns exemplos desses caracteres são chinês, japonês, coreano e emojis.
Examples
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 conjunto de dados específico, mas não são coletados 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 dos quartos 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 todos os 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 de 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 comuns no seu conjunto de dados.
A proteção de dados confidenciais 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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 proteção de dados sensíveis, consulte Bibliotecas de cliente de proteção de dados sensíveis.
Para usar a 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.