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, caso a hotword ocorra perto da 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
Likelihoodpara a descoberta será definida.LIKELIHOOD_ADJUSTMENT: um número que indica o quanto a Proteção de dados sensíveis precisa aumentar ou diminuir a probabilidade de 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
POSSIBLEsem a regra de detecção erelativeLikelihoodfor 1, a descoberta será atualizada paraLIKELY. SerelativeLikelihoodfor -1, será feito downgrade paraUNLIKELY. A probabilidade nunca pode ficar abaixo deVERY_UNLIKELYou excederVERY_LIKELY. Nesses casos, o nível de probabilidade permanece o mesmo. Por exemplo, se a probabilidade base éVERY_LIKELYerelativeLikelihoodé 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) no formato "###-#-#####". Além disso, você quer que a Proteção de dados sensíveis aumente a probabilidade de correspondência de cada descoberta após 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 pesquisa essa hotword no intervalo de caracteres definido no campoproximity. - Para cada descoberta de 
C_MRNque tenha 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 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
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 confidenciais 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 ao primeiro resultado, que tinha um MRN no conjunto de 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á em um cabeçalho de coluna e as descobertas precisam estar na coluna. - Para cada descoberta 
US_SOCIAL_SECURITY_NUMBERnessa coluna, a Proteção de dados confidenciais 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 quePOSSIBLEserã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 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
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, correspondeu à regra de hotword, de modo que a Proteção de dados sensíveis atribuiu 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.