A proteção de dados sensíveis pode desidentificar dados sensíveis em conteúdo de texto, incluindo texto armazenado em estruturas de contêiner, como tabelas. A desidentificação é o processo de remover informações de identificação dos dados. A API detecta dados sensíveis, como informações de identificação pessoal (PII), e usa uma transformação de desidentificação para mascarar, excluir ou ocultar os dados. Por exemplo, as técnicas de desidentificação podem incluir qualquer uma destas opções:
- Mascarar dados sensíveis substituindo parcial ou totalmente os caracteres por um símbolo, como asterisco (*) ou cerquilha (#).
- Substituir cada instância de dados sensíveis por uma string de token ou alternativa.
- Criptografar e substituir dados sensíveis por meio de uma chave gerada aleatoriamente ou pré-determinada.
É possível fornecer informações à API usando JSON por HTTPS, bem como a CLI e várias linguagens de programação usando as bibliotecas de cliente da Proteção de dados sensíveis. Para configurar a CLI, consulte o guia de início rápido. Para mais informações sobre o envio de informações no formato JSON, consulte o guia de início rápido do JSON.
Visão geral da API
Para desidentificar dados sensíveis, use o método content.deidentify da Proteção de Dados Sensíveis.
Uma chamada de API de desidentificação se divide em três partes:
- Os dados a serem inspecionados: uma string ou estrutura de tabela (objeto
ContentItem) para a API a ser inspecionada. O que inspecionar: informações de configuração de detecção (
InspectConfig) como os tipos de dados (ou infoTypes) a serem procurados, se é necessário filtrar as descobertas que estão acima de um determinado limite de probabilidade e se é necessário retornar no máximo um determinado número de resultados.No objeto
InspectConfig, inclua os infoTypes que você quer verificar. Caso contrário, a Proteção de Dados Sensíveis vai procurar um conjunto padrão de infoTypes (ALL_BASIC), alguns dos quais talvez não sejam necessários. A verificação de infoTypes desnecessários pode adicionar latência à sua solicitação.Um objeto
InspectConfigé obrigatório na sua solicitação, com uma exceção. Para mais informações, consulte Transformações de registros nesta página.O que fazer com as descobertas da inspeção:informações de configuração (
DeidentifyConfig) que definem como você quer que os dados sensíveis sejam desidentificados. Esse argumento é abordado mais detalhadamente na próxima seção.
A API retorna os mesmos itens que você forneceu a ela, no mesmo formato, exceto qualquer texto identificado como contendo informações sensíveis, de acordo com seus critérios, que foi desidentificado.
Como especificar critérios de detecção
Os detectores do tipo de informação (ou "infoType") são os mecanismos usados pela Proteção de Dados Sensíveis para encontrar dados confidenciais.
A Proteção de dados sensíveis inclui vários tipos de detectores de infoType, que estão resumidos aqui:
- Os detectores de infoType integrados fazem parte da Proteção de Dados Sensíveis. Eles incluem detectores para tipos de dados sensíveis específicos do país ou da região, bem como tipos de dados aplicáveis globalmente.
- Os detectores de infoType personalizados são aqueles que você mesmo cria. Há três tipos de detectores de InfoType personalizados:
- Os detectores de dicionários personalizados regulares são listas de palavras simples usadas como base para correspondências da Proteção de dados sensíveis. Use-os quando tiver uma lista de até dezenas de milhares de palavras ou frases. Dê preferência aos detectores de dicionários personalizados regulares se você não espera mudanças significativas na sua lista de palavras.
- Os detectores de dicionários personalizados armazenados são gerados pela proteção de dados sensíveis usando grandes listas de palavras ou frases armazenadas no Cloud Storage ou no BigQuery. Use-os quando tiver uma lista grande de até dezenas de milhões de palavras ou frases.
- Os detectores de expressões regulares (regex) permitem que a Proteção de dados sensíveis detecte correspondências com base em um padrão de expressão regular.
Para refinar os resultados da verificação, crie regras de inspeção.
As transformações de desidentificação podem:
Especifique uma ou mais transformações ao definir a configuração de desidentificação (DeidentifyConfig). Há duas categorias de transformações:
InfoTypeTransformations: transformações que são aplicadas somente a valores no texto enviado que são identificados como um infoType específico.RecordTransformations: transformações aplicadas somente a valores em dados de texto tabulares enviados que são identificados como um infoType específico ou em uma coluna inteira de dados tabulares.
Transformações de infoType
É possível especificar uma ou mais transformações de infoType por solicitação. Em cada objeto InfoTypeTransformation, você especifica os seguintes itens:
- Um ou mais infoTypes aos quais uma transformação precisa ser aplicada (o objeto de matriz
infoTypes[]). - Uma transformação primitiva (o objeto
PrimitiveTransformation).
Observe que especificar um infoType é opcional, mas não especificar pelo menos um infoType em um argumento InspectConfig faz com que a transformação seja aplicada a todos os infoTypes integrados que não têm uma transformação fornecida. Isso não é recomendado, porque pode reduzir o desempenho e aumentar os custos.
Transformações primárias
Especifique pelo menos uma transformação primária para aplicar à entrada, independentemente de aplicar apenas a determinados infoTypes ou à string inteira de texto. As seções a seguir descrevem exemplos de métodos de transformação que podem ser usados. Para conferir uma lista de todos os métodos de transformação que a Proteção de dados sensíveis oferece, consulte a Referência de transformação.
replaceConfig
Definir replaceConfig como um objeto ReplaceValueConfig substitui os valores de entrada correspondentes por um valor especificado por você.
Por exemplo, suponha que você tenha definido replaceConfig como "[email-address]"
para todos os infoTypes EMAIL_ADDRESS e a seguinte string seja enviada à
Proteção de Dados Sensíveis:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Esta será a string retornada:
My name is Alicia Abernathy, and my email address is [email-address].
O exemplo e o código JSON a seguir em várias linguagens mostram como formar a solicitação de API e o que a API DLP retorna:
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.
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.
REST
Consulte o Início rápido do JSON para ver mais informações sobre o uso da API DLP com o JSON.
Entrada JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Saída JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is [email-address]."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
redactConfig
Especificar redactConfig edita um determinado valor removendo-o completamente. A mensagem redactConfig não tem argumentos; especificá-los permite a transformação deles.
Por exemplo, suponha que você tenha especificado redactConfig para todos os infoTypes EMAIL_ADDRESS e a seguinte string seja enviada à Proteção de Dados Sensíveis:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Esta será a string retornada:
My name is Alicia Abernathy, and my email address is .
Os exemplos a seguir mostram como formar a solicitação de API e o que a API DLP retorna:
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:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Saída JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"redactConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
characterMaskConfig
Definir characterMaskConfig como um objeto CharacterMaskConfig mascara parcialmente uma string substituindo um determinado número de caracteres por um caractere fixo. O mascaramento pode iniciar pelo começo ou fim da string. Essa transformação também funciona com tipos de números, como inteiros longos.
O objeto CharacterMaskConfig tem vários argumentos próprios:
maskingCharacter: o caractere a ser usado para mascarar cada caractere de um valor confidencial. Por exemplo, especifique um asterisco (*) ou hash (#) para mascarar uma sequência numérica, como número de cartão de crédito.numberToMask: o número de caracteres a serem mascarados. Se você não definir esse valor, todos os caracteres correspondentes serão mascarados.reverseOrder: se os caracteres precisarem ser mascarados na ordem inversa. DefinirreverseOrdercomo verdadeiro faz com que os caracteres nos valores correspondentes sejam mascarados do final até o início do valor. Se for definido como falso, o mascaramento começará do início do valor.charactersToIgnore[]: um ou mais caracteres a serem ignorados ao mascarar valores. Por exemplo, especifique um hífen para manter os hifens inalterados ao mascarar um número de telefone. Também é possível especificar um grupo de caracteres comuns (CharsToIgnore) a serem ignorados no mascaramento.
Por exemplo, suponha que você tenha definido characterMaskConfig para mascarar com "#" os infoTypes EMAIL_ADDRESS, exceto os caracteres "." e "@". Se a string a seguir for enviada à Proteção de dados sensíveis:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Esta será a string retornada:
My name is Alicia Abernathy, and my email address is ##########@#######.###.
Confira a seguir exemplos de como usar a API DLP para desidentificar dados sensíveis com técnicas de mascaramento.
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.
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.
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.
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.
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.
REST
O exemplo JSON a seguir mostra como formar a solicitação da API e o que a API DLP apresentará:
Entrada JSON:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"reverseOrder":false,
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
Saída JSON:
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is ##########@#######.###."
},
"overview":{
"transformedBytes":"22",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"characterMaskConfig":{
"maskingCharacter":"#",
"charactersToIgnore":[
{
"charactersToSkip":".@"
}
]
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"22"
}
]
}
}
cryptoHashConfig
Definir cryptoHashConfig como um objeto CryptoHashConfig executa a pseudonimização em um valor de entrada, gerando um valor alternativo usando hash criptográfico.
Esse método substitui o valor de entrada por um "resumo" criptografado ou valor de hash.
O resumo é calculado usando o hash SHA-256 do valor de entrada.
A chave criptográfica usada para criar o hash é um objeto CryptoKey e precisa ter 32 ou 64 bytes de tamanho.
O método gera uma representação codificada em base64 da saída em hash. Atualmente, é possível gerar hash apenas de valores de string e inteiros.
Por exemplo, suponha que você tenha especificado cryptoHashConfig para todos os infoTypes EMAIL_ADDRESS e o objeto CryptoKey consista em uma chave gerada aleatoriamente (um TransientCryptoKey). Em seguida, a seguinte string é enviada à Proteção de Dados Sensíveis:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
Será retornada a seguinte string gerada criptograficamente:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Claro que a string hexadecimal será gerada criptograficamente e será diferente da mostrada aqui.
dateShiftConfig
Definir dateShiftConfig como um objeto DateShiftConfig executa mudança de data em um valor de entrada de data alterando as datas por um número aleatório de dias.
As técnicas de mudança de data alteram aleatoriamente um conjunto de datas, mas preservam a sequência e a duração de um período. Geralmente, a mudança de datas é feita no contexto para um indivíduo ou uma entidade. Ou seja, você muda todas as datas de um indivíduo específico com o mesmo diferencial de mudança, mas usa um diferencial de mudança separado para cada indivíduo.
Para mais informações sobre esse assunto, consulte o tópico sobre o conceito de mudança de data.
A seguir, há um exemplo de código em várias linguagens que demonstra como usar a API DLP para desidentificar datas usando mudança de data.
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.