Com as regras de hotword, é possível estender ainda mais os detectores de infoType integrados e personalizados com regras de contexto avançadas. Uma regra de hotword instrui a proteção de dados sensíveis a ajustar a probabilidade de uma descoberta, dependendo se ela ocorre próximo a essa descoberta. Uma regra de hotword é um tipo de regra de inspeção, que é especificada em conjuntos de regras. Cada regra é aplicada a um conjunto de infoTypes integrados ou personalizados.
Anatomia da regra de hotword
O detector de InfoType pode ter zero ou mais regras de hotword. Na
configuração de inspeção, você
define cada objeto HotwordRule
na matriz rules
da seguinte maneira:
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"REGEX_PATTERN"
},
"proximity":{
"windowAfter":"NUM_CHARS_TO_CONSIDER_AFTER_FINDING",
"windowBefore":"NUM_CHARS_TO_CONSIDER_BEFORE_FINDING"
}
"likelihoodAdjustment":{
"fixedLikelihood":"LIKELIHOOD_VALUE"
-- OR --
"relativeLikelihood":"LIKELIHOOD_ADJUSTMENT"
},
}
},
...
]
Substitua:
- REGEX_PATTERN: uma expressão regular
(objeto
Regex
) que define o que é qualificado como hotword. - NUM_CHARS_TO_CONSIDER_AFTER_FINDING: um intervalo de caracteres após a descoberta. A proteção de dados sensíveis analisa esse intervalo para determinar se uma hotword ocorre perto da descoberta.
NUM_CHARS_TO_CONSIDER_BEFORE_FINDING: um intervalo de caracteres antes da descoberta. A proteção de dados sensíveis analisa esse intervalo para determinar se uma hotword ocorre perto da descoberta.
LIKELIHOOD_VALUE: um valor fixo
Likelihood
para a descoberta será definida.LIKELIHOOD_ADJUSTMENT: um número que indica quanto a proteção de dados sensíveis precisa aumentar ou diminuir a probabilidade da descoberta. Um número inteiro positivo aumenta o nível de probabilidade, e um número inteiro negativo o diminui. Por exemplo, se uma descoberta for
POSSIBLE
sem a regra de detecção erelativeLikelihood
for 1, a descoberta será atualizada paraLIKELY
. SerelativeLikelihood
for -1, será feito downgrade paraUNLIKELY
. A probabilidade nunca pode ficar abaixo deVERY_UNLIKELY
ou excederVERY_LIKELY
. Nesses casos, o nível de probabilidade permanece o mesmo. Por exemplo, se a probabilidade base éVERY_LIKELY
erelativeLikelihood
é 1, a probabilidade final permanece comoVERY_LIKELY
.
Exemplo de hotword: correspondência com números de registros médicos
Suponha que você queira detectar um infoType personalizado, como um número de registro médico (MRN, na sigla em inglês) no formato "###-#-#####". Além disso, você quer que a proteção de dados sensíveis aumente a probabilidade de correspondência de cada descoberta que segue a hotword "MRN".
Valores de exemplo:
- 123-4-56789 corresponderia a
POSSIBLE
; - MRN 123-4-56789 corresponderia a
VERY_LIKELY
.
O exemplo de JSON e os snippets de código a seguir mostram como configurar a regra de hotword. Este exemplo usa um detector de expressão regular personalizado.
Neste exemplo, observe o seguinte:
- A solicitação define o infoType personalizado
C_MRN
, que é um detector de qualquer string que corresponda à expressão regular[0-9]{3}-[0-9]{1}-[0-9]{5}
. - A expressão regular
(?i)(mrn|medical)(?-i)
define a hotword. A proteção de dados sensíveis procura essa hotword no intervalo de caracteres definido no campoproximity
. - Para cada descoberta de
C_MRN
que tem uma hotword no conjuntoproximity
, a proteção de dados sensíveis define o nível de probabilidade comoVERY_LIKELY
.
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
Consulte o Início rápido do JSON para ver mais informações sobre o uso da API DLP com o JSON.
Método HTTP e URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
Substitua PROJECT_ID
pelo ID do projeto.
Entrada JSON:
{
"item":{
"value":"Patient's MRN 444-5-22222 and just a number 333-2-33333"
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"C_MRN"
},
"regex":{
"pattern":"[0-9]{3}-[0-9]{1}-[0-9]{5}"
},
"likelihood":"POSSIBLE",
}
],
"ruleSet":[
{
"infoTypes": [{"name" : "C_MRN"}],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"(?i)(mrn|medical)(?-i)"
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
},
"proximity":{
"windowBefore":10
}
}
}
]
}
]
}
}
Saída JSON (abreviada):
{ "result": { "findings": [ { "infoType": { "name": "C_MRN" }, "likelihood": "VERY_LIKELY", "location": { "byteRange": { "start": "14", "end": "25" }, "codepointRange": { ... } } }, { "infoType": { "name": "C_MRN" }, "likelihood": "POSSIBLE", "byteRange": { "start": "44", "end": "55" }, "codepointRange": { ... } } } ] } }
A saída mostra que a proteção de dados sensíveis identificou corretamente o número do registro médico usando o detector de infoType personalizado C_MRN
.
Além disso, devido à correspondência de contexto
na regra de hotword, a proteção de dados sensíveis atribuiu o primeiro resultado, que
tinha um MRN no conjunto proximity
, uma probabilidade de VERY_LIKELY
, conforme configurado. A segunda descoberta não tinha o contexto, então o likelihood
permaneceu em POSSIBLE
.
Exemplo de hotword: definir a probabilidade de correspondência de uma coluna da tabela
Neste exemplo, demonstramos como definir a probabilidade de correspondência de uma coluna inteira de dados. Essa abordagem é útil, por exemplo, se você quiser excluir uma coluna de dados dos resultados da inspeção.
Pense na tabela a seguir: Uma coluna contém marcadores de posição de números de CPF, e outra contém CPFs reais.
Número de CPF falso | Número de CPF verdadeiro |
---|---|
111-11-1111 | 222-22-2222 |
Para minimizar o ruído nos resultados da inspeção, é possível excluir descobertas na coluna Fake Social Security Number
. Atribua um nível de probabilidade baixo a essa coluna. Em seguida, configure a solicitação de modo que as correspondências com esse nível de probabilidade sejam excluídas dos resultados.
Neste exemplo, observe o seguinte:
- A regra de hotword é aplicada ao infoType
US_SOCIAL_SECURITY_NUMBER
. - A expressão regular
(Fake Social Security Number)
da hotword contém o nome da coluna que tem os valores do marcador. - A propriedade
windowBefore
é definida como 1, o que significa que a hotword está no cabeçalho de uma coluna e as descobertas precisam estar na coluna. - Para cada descoberta de
US_SOCIAL_SECURITY_NUMBER
nesta coluna, a proteção de dados sensíveis define o nível de probabilidade comoVERY_UNLIKELY
. - A propriedade
minLikelihood
é definida comoPOSSIBLE
, o que significa que descobertas com um nível de probabilidade menor quePOSSIBLE
serão excluída dos resultados da inspeção.
Consulte o Início rápido do JSON para ver mais informações sobre o uso da API DLP com o JSON.
Método HTTP e URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
Substitua PROJECT_ID
pelo ID do projeto.
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
Entrada JSON:{
"item": {
"table": {
"headers": [
{
"name": "Fake Social Security Number"
},
{
"name": "Real Social Security Number"
}
],
"rows": [
{
"values": [
{
"stringValue": "111-11-1111"
},
{
"stringValue": "222-22-2222"
}
]
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"includeQuote": true,
"ruleSet": [
{
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"rules": [
{
"hotwordRule": {
"hotwordRegex": {
"pattern": "(Fake Social Security Number)"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_UNLIKELY"
},
"proximity": {
"windowBefore": 1
}
}
}
]
}
],
"minLikelihood": "POSSIBLE"
}
}
Saída JSON:
{ "result": { "findings": [ { "quote": "222-22-2222", "infoType": { "name": "US_SOCIAL_SECURITY_NUMBER" }, "likelihood": "VERY_LIKELY", "location": { "byteRange": { "end": "11" }, "codepointRange": { "end": "11" }, "contentLocations": [ { "recordLocation": { "fieldId": { "name": "Real Social Security Number" }, "tableLocation": {} } } ] }, "createTime": "TIMESTAMP", "findingId": "TIMESTAMP" } ] } }
O valor 111-11-1111, que está na coluna Fake Social Security Number
, corresponde à regra de hotword. Portanto, a proteção de dados sensíveis atribui a ele o nível de probabilidade VERY_UNLIKELY
. Esse nível é menor que a probabilidade mínima definida na configuração de inspeção (POSSIBLE
). Portanto, essa descoberta é excluída do resultado da inspeção.
Teste esse exemplo removendo o conjunto de regras. Observe que a proteção de dados sensíveis inclui 111-11-1111 nos resultados.