Desidentifique e reidentifique dados confidenciais
O processo descrito neste documento denomina-se pseudonimização (ou tokenização). Neste processo, a proteção de dados confidenciais usa uma chave criptográfica para converter (desidentificar) texto confidencial num token. Para restaurar (reidentificar) esse texto, precisa da chave criptográfica usada durante a anulação da identificação e do token.
A proteção de dados confidenciais suporta métodos criptográficos reversíveis e não reversíveis. Para voltar a identificar o conteúdo, tem de escolher um método reversível.
O método criptográfico descrito aqui é denominado encriptação determinística com AES-SIV (norma de encriptação avançada no modo de vetor de inicialização sintético). Recomendamos este método, uma vez que oferece o nível de segurança mais elevado entre todos os métodos criptográficos reversíveis que a proteção de dados confidenciais suporta.
Pode concluir os passos neste documento em 10 a 20 minutos, excluindo os passos da secção Antes de começar.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_IDwith your Google Cloud project name.
-
Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Administrador do Cloud KMS (
roles/cloudkms.admin) -
Encriptador de CryptoKey do Cloud KMS (
roles/cloudkms.cryptoKeyEncrypter) -
Utilizador de DLP (
roles/dlp.user) Crie um conjunto de chaves:
gcloud kms keyrings create "dlp-keyring" \ --location "global"Crie uma chave:
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"Liste o conjunto de chaves e a chave:
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"Recebe o seguinte resultado:
NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLEDNeste resultado,
PROJECT_IDé o ID do seu projeto.O valor de
NAMEé o nome completo do recurso da sua chave do Cloud KMS. Tenha em atenção este valor, uma vez que os pedidos de desidentificação e reidentificação o requerem.Crie uma chave AES de 128, 192 ou 256 bits. O comando seguinte usa
opensslpara criar uma chave de 256 bits no diretório atual:openssl rand -out "./aes_key.bin" 32O ficheiro
aes_key.biné adicionado ao seu diretório atual.Codifique a chave AES como uma string base64:
base64 -i ./aes_key.binRecebe um resultado semelhante ao seguinte:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=PROJECT_ID: o ID do seu projeto.BASE64_ENCODED_AES_KEY: a string codificada em base64 devolvida em Crie uma chave AES codificada em base64.- O nome completo do recurso da chave do Cloud KMS que criou em Crie um conjunto de chaves e uma chave.
- A chave envolvida que criou em Envolva a chave AES com a chave do Cloud KMS.
Crie um ficheiro de pedido JSON denominado
deidentify-request.jsoncom o seguinte texto.{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }Substitua o seguinte:
PROJECT_ID: o ID do seu projeto.WRAPPED_KEY: a chave envolvida que criou em Envolva a chave AES com a chave do Cloud KMS.
Certifique-se de que o valor resultante de
cryptoKeyNameforma o nome completo do recurso da sua chave do Cloud KMS.Para mais informações sobre os componentes desta solicitação JSON, consulte o artigo
projects.locations.content.deidentify. Depois de concluir esta tarefa, experimente diferentes entradas para este pedido. Pode usarcurlconforme descrito aqui. Em alternativa, use o Explorador de APIs nessa página de referência da API em Experimentar este método.Use
curlpara fazer um pedidoprojects.locations.content.deidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:deidentify \ -d @deidentify-request.jsonSubstitua
PROJECT_IDpelo ID do seu projeto.Para transmitir um nome de ficheiro a
curl, use a opção-d(para dados) e preceda o nome de ficheiro com um sinal@. Este ficheiro tem de estar no mesmo diretório onde executa o comandocurl.A resposta que recebe da proteção de dados confidenciais é semelhante ao seguinte JSON:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q." }, "overview": { "transformedBytes": "22", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "22" } ] } }No campo
item, o endereço de email é substituído por um token comoEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Tenha em atenção o valor do token na resposta. Para voltar a identificar o conteúdo anonimizado, transmite o token completo no pedido de reidentificação.- O nome completo do recurso da chave do Cloud KMS que criou em Crie um conjunto de chaves e uma chave.
- A chave envolvida que criou em Envolva a chave AES com a chave do Cloud KMS.
- O token que recebeu em Enviar um pedido de desidentificação para a API DLP.
Crie um ficheiro de pedido JSON denominado
reidentify-request.jsoncom o seguinte texto.{ "reidentifyConfig":{ "infoTypeTransformations":{ "transformations":[ { "infoTypes":[ { "name":"EMAIL_ADDRESS_TOKEN" } ], "primitiveTransformation":{ "cryptoDeterministicConfig":{ "cryptoKey":{ "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType":{ "name":"EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"EMAIL_ADDRESS_TOKEN" }, "surrogateType":{ } } ] }, "item":{ "value": "My name is Alicia Abernathy, and my email address is TOKEN." } }Substitua o seguinte:
PROJECT_ID: o ID do seu projeto.WRAPPED_KEY: a chave envolvida que criou em Envolva a chave AES com a chave do Cloud KMS.TOKEN: o token que recebeu em Enviar um pedido de desidentificação para a API DLP, por exemplo,EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.
Certifique-se de que o valor resultante de
cryptoKeyNameforma o nome completo do recurso da sua chave do Cloud KMS.Para mais informações sobre os componentes desta solicitação JSON, consulte o artigo
projects.locations.content.reidentify. Depois de concluir esta tarefa, experimente diferentes entradas para este pedido. Pode usar ocurlconforme descrito aqui. Em alternativa, use o Explorador de APIs nessa página de referência da API em Experimentar este método.Use
curlpara fazer um pedidoprojects.locations.content.reidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:reidentify \ -d @reidentify-request.jsonSubstitua
PROJECT_IDpelo ID do seu projeto.Para transmitir um nome de ficheiro a
curl, use a opção-d(para dados) e preceda o nome de ficheiro com um sinal@. Este ficheiro tem de estar no mesmo diretório onde executa o comandocurl.A resposta que recebe da Proteção de dados confidenciais é semelhante ao seguinte JSON:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "overview": { "transformedBytes": "70", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "70" } ] } }No campo
item, o token de endereço de email é substituído pelo endereço de email real do texto original.Já desidentificou e reidentificou dados confidenciais em conteúdo de texto através da encriptação determinística.
- Para mais informações sobre a desidentificação de conteúdo sensível, consulte o artigo Desidentificação de dados confidenciais.
- Para informações sobre como um fluxo de trabalho de desidentificação se enquadra em implementações reais, consulte o artigo Desidentificação e reidentificação de PII em conjuntos de dados de grande escala com a proteção de dados sensíveis.
- Para informações conceptuais sobre a tokenização de dados com uma chave criptográfica, consulte o artigo Pseudonimização.
Funções necessárias
Para receber as autorizações de que precisa para criar uma chave AES envolvida, desidentificar dados confidenciais e voltar a identificá-los, peça ao seu administrador que lhe conceda as seguintes funções de IAM no projeto:
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie um conjunto de chaves e uma chave
Antes de iniciar este procedimento, decida onde quer que a proteção de dados confidenciais processe os seus pedidos de desidentificação e reidentificação. Quando
cria uma chave do Cloud KMS, tem de a armazenar em global ou na
mesma região que vai usar para os seus pedidos de proteção de dados confidenciais.
Caso contrário, os pedidos de proteção de dados confidenciais falham.
Pode encontrar uma lista de localizações suportadas nas localizações de proteção de dados confidenciais. Tenha em atenção o nome da região escolhida (por exemplo, us-west1).
Este procedimento usa global como a localização para todos os pedidos de API. Se quiser usar uma região diferente, substitua global pelo nome da região.
Crie uma chave AES codificada em base64
Esta secção descreve como criar uma chave da norma Advanced Encryption Standard (AES) e codificá-la no formato base64.
Encapsule a chave AES com a chave do Cloud KMS
Esta secção descreve como usar a chave do Cloud KMS que criou em Crie um conjunto de chaves e uma chave para encapsular a chave AES codificada em base64 que criou em Crie uma chave AES codificada em base64.
Para encapsular a chave AES, use curl para enviar o seguinte pedido ao método
Cloud KMS API
projects.locations.keyRings.cryptoKeys.encrypt:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
Substitua o seguinte:
A resposta que recebe do Cloud KMS é semelhante ao seguinte JSON:
{
"name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
"ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
"ciphertextCrc32c": "901327763",
"protectionLevel": "SOFTWARE"
}
Neste resultado, PROJECT_ID é o ID do seu projeto.
Tenha em atenção o valor de ciphertext na resposta.
Essa é a sua chave envolvida.
Envie um pedido de desidentificação para a API DLP
Esta secção descreve como remover a identificação de dados sensíveis em conteúdo de texto.
Para concluir esta tarefa, precisa do seguinte:
Tem de guardar o pedido de amostra num ficheiro JSON. Se usar o Cloud Shell, use o editor do Cloud Shell para criar o ficheiro. Para iniciar o editor, clique em Abrir editor na barra de ferramentas do Cloud Shell.
Para remover a identificação de dados confidenciais em conteúdo de texto, siga estes passos:
Envie um pedido de reidentificação à API DLP
Esta secção descreve como voltar a identificar dados tokenizados em conteúdo de texto.
Para concluir esta tarefa, precisa do seguinte:
Para voltar a identificar conteúdo tokenizado, siga estes passos:
Limpar
Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.
Destrua a versão da chave
Se já não quiser usar a chave que criou nesta tarefa, destrua a respetiva versão.
Liste as versões disponíveis para a sua chave:
gcloud kms keys versions list \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Para destruir uma versão, execute o seguinte comando:
gcloud kms keys versions destroy KEY_VERSION \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
Substitua KEY_VERSION pelo número da versão a destruir, por exemplo, 1.
Elimine o projeto
Se criou um novo projeto para esta tarefa, a forma mais fácil de evitar custos adicionais é eliminar o projeto.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Revogue as suas credenciais
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke