A Proteção de dados confidenciais pode desidentificar dados confidenciais em conteúdo de texto, incluindo texto armazenado em estruturas de contentores, como tabelas. A desidentificação é o processo de remover informações de identificação dos dados. A API deteta dados confidenciais, como informações de identificação pessoal (IIP), e, em seguida, usa uma transformação de desidentificação para ocultar, eliminar ou obscurecer os dados de outra forma. Por exemplo, as técnicas de desidentificação podem incluir qualquer uma das seguintes opções:
- Ocultar dados confidenciais substituindo parcial ou totalmente os carateres por um símbolo, como um asterisco (*) ou um cardinal (#).
- Substituir cada instância de dados confidenciais por um token ou uma string substituta.
- Encriptar e substituir dados confidenciais através de uma chave gerada aleatoriamente ou predeterminada.
Pode introduzir informações na API através de JSON por HTTPS, bem como da CLI e de várias linguagens de programação através das bibliotecas do cliente do Sensitive Data Protection. Para configurar a CLI, consulte o início rápido. Para mais informações sobre o envio de informações no formato JSON, consulte o início rápido do JSON.
Vista geral da API
Para desidentificar dados confidenciais, use o método content.deidentify
da proteção de dados confidenciais.
Uma chamada API de desidentificação tem três partes:
- Os dados a inspecionar: uma string ou uma estrutura de tabela
(
ContentItem
objeto) para a API inspecionar. O que inspecionar: informações de configuração da deteção (
InspectConfig
) como que tipos de dados (ou infoTypes) procurar, se deve filtrar as descobertas que estão acima de um determinado limite de probabilidade e se deve devolver não mais do que um determinado número de resultados.No objeto
InspectConfig
, certifique-se de que inclui os infoTypes que quer procurar. Caso contrário, a proteção de dados confidenciais procura um conjunto predefinido de infoTypes (ALL_BASIC
), alguns dos quais podem não ser necessários. A procura de infoTypes de que não precisa pode adicionar desnecessariamente latência ao seu pedido.É necessário um objeto
InspectConfig
no seu pedido, com uma exceção. Para mais informações, consulte a secção Registe transformações nesta página.O que fazer com as conclusões da inspeção: informações de configuração (
DeidentifyConfig
) que definem como quer que os dados confidenciais sejam anonimizados. Este argumento é abordado mais detalhadamente na secção seguinte.
A API devolve os mesmos itens que lhe foram fornecidos, no mesmo formato, mas qualquer texto identificado como contendo informações confidenciais de acordo com os seus critérios foi desidentificado.
Especificar critérios de deteção
Os detetores de tipo de informações (ou "infoType") são os mecanismos que a proteção de dados confidenciais usa para encontrar dados confidenciais.
A proteção de dados confidenciais inclui vários tipos de detetores infoType, todos resumidos aqui:
- Os detetores de infoType integrados estão integrados na proteção de dados confidenciais. Incluem detetores para tipos de dados confidenciais específicos de um país ou uma região, bem como tipos de dados aplicáveis a nível global.
- Os detetores infoType personalizados são detetores que cria
por si. Existem três tipos de detetores de infoTypes personalizados:
- Os detetores de dicionários personalizados normais são listas de palavras simples com as quais a proteção de dados confidenciais estabelece correspondência. Use detetores de dicionários personalizados normais quando tiver uma lista de até várias dezenas de milhares de palavras ou expressões. Os detetores de dicionários personalizados normais são preferíveis se não previr alterações significativas na sua lista de palavras.
- Os detetores de dicionários personalizados armazenados são gerados pela proteção de dados confidenciais através de grandes listas de palavras ou expressões armazenadas no Cloud Storage ou no BigQuery. Use detetores de dicionários personalizados armazenados quando tiver uma grande lista de palavras ou expressões, até dezenas de milhões.
- Os detetores de expressões regulares (regex) permitem que a proteção de dados confidenciais detete correspondências com base num padrão de expressão regular.
Além disso, a Proteção de dados confidenciais inclui o conceito de regras de inspeção, que lhe permitem otimizar os resultados da análise através do seguinte:
- As regras de exclusão permitem-lhe diminuir o número de resultados devolvidos adicionando regras a um detetor de infoType incorporado ou personalizado.
- As regras de palavras-chave permitem aumentar a quantidade ou alterar o valor de probabilidade dos resultados devolvidos adicionando regras a um detetor de infoType integrado ou personalizado.
Transformações de desidentificação
Tem de especificar uma ou mais transformações quando define a configuração de anonimização (DeidentifyConfig
).
Existem duas categorias de transformações:
InfoTypeTransformations
: Transformações que só são aplicadas a valores no texto enviado que são identificados como um infoType específico.RecordTransformations
: Transformações que só são aplicadas a valores em dados de texto tabular enviados que são identificados como um infoType específico ou numa coluna inteira de dados tabulares.
Transformações de InfoType
Pode especificar uma ou mais transformações infoType por pedido. Em cada objeto InfoTypeTransformation
, especifica o seguinte:
- Um ou mais infoTypes aos quais deve ser aplicada uma transformação (o objeto de matriz
infoTypes[]
). - Uma transformação primitiva (o objeto
PrimitiveTransformation
).
Tenha em atenção que a especificação de um infoType é opcional, mas a não especificação de, pelo menos, um
infoType num argumento
InspectConfig
faz com que a transformação se aplique a todos os infoTypes incorporados que não tenham uma transformação fornecida. Esta ação não é recomendada, uma vez que pode
provocar uma diminuição do desempenho e um aumento do custo.
Transformações primitivas
Tem de especificar, pelo menos, uma transformação primitiva a aplicar à entrada, independentemente de a estar a aplicar apenas a determinados infoTypes ou a toda a string de texto. As secções seguintes descrevem exemplos de métodos de transformação que pode usar. Para ver uma lista de todos os métodos de transformação que a proteção de dados confidenciais oferece, consulte a referência de transformação.
replaceConfig
Definir replaceConfig
como um objeto ReplaceValueConfig
substitui os valores de entrada correspondentes por um valor que especificar.
Por exemplo, suponhamos que definiu replaceConfig
como "[email-address]
"
para todos os infoTypes e que a seguinte string é enviada para
a Proteção de dados confidenciais:EMAIL_ADDRESS
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
A string devolvida é a seguinte:
My name is Alicia Abernathy, and my email address is [email-address].
O exemplo JSON e o código seguintes em vários idiomas mostram como formar o pedido da API e o que a API DLP devolve:
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
REST
Consulte o início rápido de JSON para mais informações sobre a utilização da API DLP com 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
A especificação de
redactConfig
oculta um determinado valor removendo-o completamente. A mensagem redactConfig
não tem argumentos. Se a especificar, ativa a respetiva transformação.
Por exemplo, suponhamos que especificou redactConfig
para todos os EMAIL_ADDRESS
infoTypes e que a seguinte string é enviada para a Proteção de dados confidenciais:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
A string devolvida é a seguinte:
My name is Alicia Abernathy, and my email address is .
Os exemplos seguintes mostram como formar o pedido da API e o que a API DLP devolve:
C#
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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
A definição de characterMaskConfig
para um objeto CharacterMaskConfig
máscara parcialmente uma string substituindo um determinado número de carateres
por um caráter fixo. A ocultação pode começar no início ou no fim da string. Esta transformação também funciona com tipos de números, como números inteiros longos.
O objeto CharacterMaskConfig
tem vários argumentos próprios:
maskingCharacter
: o caráter a usar para ocultar cada caráter de um valor sensível. Por exemplo, pode especificar um asterisco (*) ou um cardinal (#) para ocultar uma série de números, como os de um número de cartão de crédito.numberToMask
: o número de carateres a ocultar. Se não definir este valor, todos os carateres correspondentes são ocultados.reverseOrder
: se os carateres devem ser ocultados na ordem inversa. Se definirreverseOrder
como verdadeiro, os carateres nos valores correspondentes são ocultados do final para o início do valor. Se o definir como falso, a ocultação começa no início do valor.charactersToIgnore[]
: um ou mais carateres a ignorar ao ocultar valores. Por exemplo, especifique um hífen aqui para deixar os hífens no lugar quando mascarar um número de telefone. Também pode especificar um grupo de carateres comuns (CharsToIgnore
) a ignorar ao aplicar a ocultação.
Por exemplo, suponha que definiu characterMaskConfig
para ocultar com "#" para os tipos de informações EMAIL_ADDRESS
, exceto para os carateres "." e "@". Se a string seguinte for enviada para a proteção de dados confidenciais:
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
A string devolvida é a seguinte:
My name is Alicia Abernathy, and my email address is ##########@#######.###.
Seguem-se exemplos que demonstram como usar a API DLP para desidentificar dados sensíveis através de técnicas de ocultação.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
C#
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
REST
O exemplo JSON seguinte mostra como formar o pedido da API e o que a API DLP devolve:
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 num valor de entrada gerando um valor substituto através da aplicação de hash criptográfico.
Este método substitui o valor de entrada por um "resumo" encriptado ou um valor hash.
O resumo é calculado através do hash SHA-256 do valor de entrada.
A chave criptográfica usada para criar o hash é um objeto CryptoKey
e tem de ter um tamanho de 32 ou 64 bytes.
O método produz uma representação codificada em base64 do resultado com hash. Atualmente, só é possível aplicar hash a valores de string e números inteiros.
Por exemplo, suponhamos que especificou cryptoHashConfig
para todos os infoTypes e que o objeto CryptoKey
consiste numa chave gerada aleatoriamente (um TransientCryptoKey
). Em seguida, a seguinte string é enviada para a Proteção de dados confidenciais:EMAIL_ADDRESS
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
A string devolvida gerada criptograficamente tem o seguinte aspeto:
My name is Alicia Abernathy, and my email address is 41D1567F7F99F1DC2A5FAB886DEE5BEE.
Claro que a string hexadecimal é gerada criptograficamente e é diferente da apresentada aqui.
dateShiftConfig
A definição de dateShiftConfig
para um objeto DateShiftConfig
executa a mudança de data num valor de entrada de data, mudando as datas por um número aleatório de dias.
As técnicas de alteração de datas alteram aleatoriamente um conjunto de datas, mas preservam a sequência e a duração de um período. A alteração de datas é normalmente feita no contexto de um indivíduo ou uma entidade. Ou seja, quer alterar todas as datas de uma pessoa específica usando a mesma diferença de alteração, mas usar uma diferença de alteração separada para cada outra pessoa.
Para mais informações sobre a alteração de datas, consulte o tópico do conceito de alteração de datas.
Segue-se um exemplo de código em vários idiomas que demonstra como usar a API DLP para desidentificar datas através da mudança de datas.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
C#
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
cryptoReplaceFfxFpeConfig
Definir cryptoReplaceFfxFpeConfig
para um objeto CryptoReplaceFfxFpeConfig
executa a pseudonimização num valor de entrada substituindo um valor de entrada por um token. Este token:
- O valor de entrada encriptado.
- O mesmo comprimento que o valor de entrada.
- Calculado através da encriptação de preservação do formato no modo FFX ("FPE-FFX") com base na chave criptográfica especificada por
cryptoKey
. - Composto pelos carateres especificados por
alphabet
. Opções válidas:NUMERIC
HEXADECIMAL
UPPER_CASE_ALPHA_NUMERIC
ALPHA_NUMERIC
O valor de entrada:
- Tem de ter, pelo menos, dois carateres (ou a string vazia).
- Tem de ser composto pelos carateres especificados por um
alphabet
. Oalphabet
pode ter entre 2 e 95 carateres. (Umalphabet
com 95 carateres inclui todos os carateres imprimíveis no conjunto de carateres US-ASCII.)
A proteção de dados confidenciais calcula o token de substituição através de uma chave criptográfica. Pode fornecer esta chave de uma das três formas seguintes:
- Incorporando-o sem encriptação no pedido da API. Contudo, não recomendamos que o faça.
- Pedindo ao Sensitive Data Protection para o gerar.
- Incorporando-o encriptado no pedido da API.
Se optar por incorporar a chave no pedido da API, tem de criar uma chave e envolvê-la (encriptá-la) com uma chave do Cloud Key Management Service (Cloud KMS). O valor devolvido é uma string codificada em base64 por predefinição. Para definir este valor na proteção de dados confidenciais, tem de descodificá-lo numa string de bytes. Os seguintes fragmentos de código realçam como fazê-lo em vários idiomas. Seguem-se exemplos completos destes fragmentos.
Java
KmsWrappedCryptoKey.newBuilder()
.setWrappedKey(ByteString.copyFrom(BaseEncoding.base64().decode(wrappedKey)))
Python
# The wrapped key is base64-encoded, but the library expects a binary
# string, so decode it here.
import base64
wrapped_key = base64.b64decode(wrapped_key)
PHP
// Create the wrapped crypto key configuration object
$kmsWrappedCryptoKey = (new KmsWrappedCryptoKey())
->setWrappedKey(base64_decode($wrappedKey))
->setCryptoKeyName($keyName);
C#
WrappedKey = ByteString.FromBase64(wrappedKey)
Para mais informações sobre a encriptação e a desencriptação de dados através do Cloud KMS, consulte o artigo Encriptar e desencriptar dados.
Por predefinição, o FPE-FFX preserva o comprimento e o conjunto de carateres do texto de entrada. Isto significa que não tem autenticação nem um vetor de inicialização, o que provoca uma expansão do comprimento no token de saída. Outros métodos, como o AES-SIV, oferecem estas garantias de segurança mais fortes e são recomendados para exemplos de utilização da tokenização, a menos que a preservação do comprimento e do conjunto de carateres seja um requisito rigoroso, por exemplo, para retrocompatibilidade com um sistema de dados antigo.
Segue-se um exemplo de código em vários idiomas que demonstra como usar a Proteção de dados confidenciais para desidentificar dados confidenciais substituindo um valor de entrada por um token.
Java
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
C#
Para saber como instalar e usar a biblioteca cliente para a Proteção de dados confidenciais, consulte o artigo Bibliotecas cliente da Proteção de dados confidenciais.
Para se autenticar na Proteção de dados confidenciais, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Para ver exemplos de código que demonstram como usar a Proteção de dados confidenciais para reidentificar dados confidenciais que foram desidentificados através do método de transformação CryptoReplaceFfxFpeConfig
, consulte o artigo Encriptação que preserva o formato: exemplos de reidentificação.
fixedSizeBucketingConfig
As transformações de agrupamento em contentores, esta e a
bucketingConfig
, servem para ocultar dados numéricos agrupando-os em intervalos. O intervalo de números resultante é uma string com hífen
composta por um limite inferior, um hífen e um limite superior.
A definição de fixedSizeBucketingConfig
para um objeto FixedSizeBucketingConfig
agrupa os valores de entrada com base em intervalos de tamanhos fixos. O objeto FixedSizeBucketingConfig
é composto pelo seguinte:
lowerBound
: o valor do limite inferior de todos os intervalos. Os valores inferiores a este são agrupados num único grupo.upperBound
: o valor do limite superior de todos os grupos. Os valores superiores a este são agrupados num único grupo.bucketSize
: o tamanho de cada contentor, exceto os contentores mínimo e máximo.
Por exemplo, se lowerBound
estiver definido como 10, upperBound
estiver definido como 89 e bucketSize
estiver definido como 10, são usados os seguintes intervalos: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+.
Para mais informações sobre o conceito de agrupamento, consulte o artigo Generalização e agrupamento.
bucketingConfig
A transformação bucketingConfig
oferece mais flexibilidade do que a outra transformação de agrupamento, fixedSizeBucketingConfig
.
Em vez de especificar limites superiores e inferiores e um valor de intervalo com o qual criar grupos de tamanho igual, especifica os valores máximos e mínimos para cada grupo que quer criar. Cada par de valores máximo e mínimo tem de ter o mesmo tipo.
A definição de bucketingConfig
para um objeto BucketingConfig
especifica grupos personalizados. O objeto BucketingConfig
consiste numa matriz buckets[]
de objetos Bucket
. Cada objeto Bucket
consiste no seguinte:
min
: o limite inferior do intervalo do grupo. Omita este valor para criar um intervalo que não tenha um limite inferior.max
: o limite superior do intervalo do grupo. Omita este valor para criar um intervalo que não tenha limite superior.replacementValue
: o valor com o qual substituir os valores que se enquadram nos limites inferior e superior. Se não facultar umreplacementValue
, é usado um intervalomin-max
com hífen.
Se um valor estiver fora dos intervalos definidos, o TransformationSummary
devolvido contém uma mensagem de erro.
Por exemplo, considere a seguinte configuração para a transformação bucketingConfig
:
"bucketingConfig":{
"buckets":[
{
"min":{
"integerValue":"1"
},
"max":{
"integerValue":"30"
},
"replacementValue":{
"stringValue":"LOW"
}
},
{
"min":{
"integerValue":"31"
},
"max":{
"integerValue":"65"
},
"replacementValue":{
"stringValue":"MEDIUM"
}
},
{
"min":{
"integerValue":"66"
},
"max":{
"integerValue":"100"
},
"replacementValue":{
"stringValue":"HIGH"
}
}
]
}
Isto define o seguinte comportamento:
- Os valores de números inteiros compreendidos entre 1 e 30 são ocultados e substituídos por
LOW
. - Os valores de números inteiros entre 31 e 65 são ocultados e substituídos por
MEDIUM
. - Os valores de números inteiros entre 66 e 100 são ocultados e substituídos por
HIGH
.
Para mais informações sobre o conceito de agrupamento, consulte o artigo Generalização e agrupamento.
replaceWithInfoTypeConfig
A especificação de
replaceWithInfoTypeConfig
substitui cada valor correspondente pelo nome do infoType. A mensagem replaceWithInfoTypeConfig
não tem argumentos. Se a especificar, ativa a respetiva transformação.
Por exemplo, suponhamos que especificou replaceWithInfoTypeConfig
para todos os infoTypes e que a seguinte string é enviada para a proteção de dados confidenciais:EMAIL_ADDRESS
My name is Alicia Abernathy, and my email address is aabernathy@example.com.
A string devolvida é a seguinte:
My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS.
timePartConfig
A definição de timePartConfig
para um objeto TimePartConfig
preserva uma parte de um valor correspondente que inclui os valores Date
, Timestamp
e TimeOfDay
. O objeto TimePartConfig
consiste num argumento partToExtract
, que pode ser definido para qualquer um dos valores enumerados TimePart
, incluindo o ano, o mês, o dia do mês, etc.
Por exemplo, suponhamos que configurou uma transformação timePartConfig
definindo partToExtract
como YEAR
. Depois de enviar os dados na primeira coluna abaixo para a Proteção de dados confidenciais, os valores transformados são apresentados na segunda coluna:
Valores originais | Valores transformados |
---|---|
9/21/1976 |
1976 |
6/7/1945 |
1945 |
1/20/2009 |
2009 |
7/4/1776 |
1776 |
8/1/1984 |
1984 |
4/21/1982 |
1982 |
Registe transformações
As transformações de registos (o objeto
RecordTransformations
) só são aplicadas a valores em dados tabulares que são identificados como
um infoType específico. Dentro da RecordTransformations
, existem mais duas subcategorias de transformações:
fieldTransformations[]
: Transformações que aplicam várias transformações de campos.recordSuppressions[]
: Regras que definem os registos que são suprimidos completamente. Os registos que correspondem a qualquer regra de supressão emrecordSuppressions[]
são omitidos do resultado.
Transformações de campos
Cada objeto
FieldTransformation
inclui três argumentos:
fields
: um ou mais campos de entrada (objetosFieldID
) aos quais aplicar a transformação.condition
: uma condição (umRecordCondition
objeto) que tem de ser avaliada como verdadeira para que a transformação seja aplicada. Por exemplo, aplique uma transformação de agrupamento a uma coluna de idade de um registo apenas se a coluna do código postal do mesmo registo estiver dentro de um intervalo específico. Em alternativa, oculte um campo apenas se o campo de data de nascimento indicar que a pessoa tem 85 anos ou mais.Um dos seguintes dois argumentos do tipo de transformação. A especificação de um é obrigatória:
infoTypeTransformations
: Trate o conteúdo do campo como texto livre e aplique umPrimitiveTransformation
apenas ao conteúdo que corresponda a umInfoType
. Estas transformações foram abordadas anteriormente neste tópico.primitiveTransformation
: aplica a transformação primitiva especificada (PrimitiveTransformation
object) a todo o campo. Estas transformações foram abordadas anteriormente neste tópico.Se o seu objeto
RecordTransformations
contiver apenas umprimitiveTransformation
e nenhuminfoTypeTransformations
, não precisa de incluir um objetoInspectConfig
no seu pedido. Se o fizer, a proteção de dados confidenciais ignora-o.
Exemplo de transformações de campos
O exemplo seguinte envia um pedido
projects.content.deidentify
com duas transformações de campos:
A primeira transformação de campo aplica-se às duas primeiras colunas (
column1
ecolumn2
). Uma vez que o respetivo tipo de transformação é umprimitiveTransformation
(especificamente, umCryptoDeterministicConfig
), a proteção de dados confidenciais transforma todo o campo.A segunda transformação de campo aplica-se à terceira coluna (
column3
). Uma vez que o respetivo tipo de transformação é um objetoinfoTypeTransformations
, a proteção de dados confidenciais aplica a transformação primitiva (especificamente, umReplaceWithInfoTypeConfig
) apenas ao conteúdo que corresponde ao infoType definido na configuração de inspeção.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
-
PROJECT_ID
: o ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, comomy-project
.
Método HTTP e URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:deidentify
Corpo JSON do pedido:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 2" }, { "stringValue": "My email address is dani@example.org" } ] }, { "values": [ { "stringValue": "Example string 1" }, { "stringValue": "Example string 3" }, { "stringValue": "My email address is cruz@example.org" } ] } ] } }, "deidentifyConfig": { "recordTransformations": { "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } }, { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "item": { "table": { "headers": [ { "name": "column1" }, { "name": "column2" }, { "name": "column3" } ], "rows": [ { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AUBTE+sQB6eKZ5iD3Y0Ss682zANXbijuFl9KL9ExVOTF" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] }, { "values": [ { "stringValue": "AWttmGlln6Z2MFOMqcOzDdNJS52XFxOOZsg0ckDeZzfc" }, { "stringValue": "AU+oD2pnqUDTLNItE8RplY3E0fTHeO4rZkX4GeFHN2CI" }, { "stringValue": "My email address is [EMAIL_ADDRESS]" } ] } ] } }, "overview": { "transformedBytes": "96", "transformationSummaries": [ { "field": { "name": "column1" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "field": { "name": "column2" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column1" }, { "name": "column2" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "unwrapped": { "key": "YWJjZGVmZ2hpamtsbW5vcA==" } } } } } ], "transformedBytes": "32" }, { "infoType": { "name": "EMAIL_ADDRESS", "sensitivityScore": { "score": "SENSITIVITY_MODERATE" } }, "field": { "name": "column3" }, "results": [ { "count": "2", "code": "SUCCESS" } ], "fieldTransformations": [ { "fields": [ { "name": "column3" } ], "infoTypeTransformations": { "transformations": [ { "primitiveTransformation": { "replaceWithInfoTypeConfig": {} } } ] } } ], "transformedBytes": "32" } ] } }
Registe supressões
Além de aplicar transformações aos dados de campos, também pode instruir a Proteção de dados confidenciais a desidentificar dados simplesmente suprimindo registos quando determinadas condições de supressão são avaliadas como verdadeiras. Pode aplicar transformações de campos e supressões de registos no mesmo pedido.
Defina a mensagem recordSuppressions
do objeto RecordTransformations
para uma matriz de um ou mais objetos RecordSuppression
.
Cada objeto
RecordSuppression
contém um único objeto
RecordCondition
, que, por sua vez, contém um único objeto
Expressions
.
Um objeto Expressions
contém:
logicalOperator
: um dos tipos enumeradosLogicalOperator
.conditions
: um objeto AConditions
que contém uma matriz de um ou mais objetosCondition
. UmaCondition
é uma comparação de um valor de campo e outro valor, ambos do tipostring
,boolean
,integer
,double
,Timestamp
ouTimeofDay
.
Se a comparação for avaliada como verdadeira, o registo é suprimido e vice-versa. Se os valores comparados não forem do mesmo tipo, é apresentado um aviso e a condição é avaliada como falsa.
Transformações reversíveis
Quando desidentifica dados através das transformações de infoType
CryptoReplaceFfxFpeConfig
ou
CryptoDeterministicConfig
, pode voltar a identificar esses dados, desde que tenha o
CryptoKey
usado para desidentificar originalmente os dados.
Para mais informações, consulte as transformações de tokenização baseadas em criptografia.
Limite no número de conclusões
Se o seu pedido tiver mais de 3000 resultados, a proteção de dados confidenciais devolve a seguinte mensagem:
Too many findings to de-identify. Retry with a smaller request.
A lista de resultados devolvida pela proteção de dados confidenciais é um subconjunto arbitrário de todos os resultados no pedido. Para receber todas as conclusões, divida o seu pedido em lotes mais pequenos.
O que se segue?
Saiba mais sobre como um fluxo de trabalho de desidentificação se enquadra em implementações reais.
Trabalhe no codelab Ocultar dados confidenciais com a proteção de dados confidenciais.
Trabalhe num exemplo que demonstre como criar uma chave com encapsulamento, tokenizar conteúdo e voltar a identificar conteúdo tokenizado.
Saiba como criar uma cópia anónima dos dados no armazenamento.