Desidentificar e reidentificar dados confidenciais
O processo descrito neste guia de início rápido é chamado de pseudonimização (ou tokenização). Nesse processo, a proteção de dados sensíveis usa uma chave criptográfica para converter (desidentificar) o texto confidencial em um token. Para restaurar (reidentificar) esse texto, você precisa da chave criptográfica usada durante a desidentificação e do token.
A proteção de dados sensíveis é compatível com métodos criptográficos reversíveis e não reversíveis. Para reidentificar o conteúdo, você precisa escolher um método reversível.
O método criptográfico descrito aqui é chamado de criptografia determinística usando AES-SIV (padrão de criptografia avançada no modo de vetor de inicialização sintética). Recomendamos isso entre todos os métodos criptográficos reversíveis que são compatíveis com a proteção de dados sensíveis, porque fornece o nível mais alto de segurança.
Você pode concluir as etapas deste tópico em 10 a 20 minutos, sem incluir as etapas Antes de começar.
Antes de começar
- Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with 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_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For examples, see Represent workforce pool users in IAM policies. - Replace
ROLE
with each individual role.
- Replace
Etapa 1: criar um keyring e uma chave
Antes de iniciar esse procedimento, decida onde você quer que a proteção de dados sensíveis processe suas solicitações de desidentificação e reidentificação. Ao criar uma chave do Cloud KMS, armazene-a em global
ou na mesma região que será usada para as solicitações de proteção de dados confidenciais.
Caso contrário, as solicitações de proteção de dados sensíveis vão falhar.
Confira uma lista de locais compatíveis em
Locais de proteção de dados sensíveis. Anote o nome da região escolhida (por exemplo, us-west1
).
Neste procedimento, global
é usado como local para todas as solicitações de API. Se você quiser usar uma região diferente, substitua global
pelo nome da região.
Crie um keyring:
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 keyring e a chave:
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"
A saída a seguir é exibida:
NAME PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED
Nessa saída,
PROJECT_ID
é o ID do projeto.O caminho em
NAME
é o nome completo do recurso da chave do Cloud KMS. Anote-o, porque as solicitações de desidentificação e reidentificação exigem isso.
Etapa 2: criar uma chave AES codificada em base64
Esta seção descreve como criar uma chave do padrão de criptografia avançada (AES) e codificá-la no formato base64.
Crie uma chave AES de 128, 192 ou 256 bits. O comando a seguir usa
openssl
para criar uma chave de 256 bits no diretório atual:openssl rand -out "./aes_key.bin" 32
O arquivo
aes_key.bin
é adicionado ao diretório atual.Codifique a chave AES como uma string base64:
base64 -i ./aes_key.bin
Você verá um resultado parecido com este:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
Etapa 3: unir a chave AES usando a chave do Cloud KMS
Esta seção descreve como usar a chave do Cloud KMS que você criou na Etapa 1 para encapsular a chave AES codificada em base64 criada na Etapa 2. de dados.
Para encapsular a chave AES, use curl
para enviar a seguinte solicitação para a
API Cloud KMS
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:
PROJECT_ID
: ID do projeto.BASE64_ENCODED_AES_KEY
: a string codificada em base64 retornada na Etapa 2.
A resposta que você recebe do Cloud KMS é semelhante ao seguinte JSON:
{ "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1", "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "ciphertextCrc32c": "901327763", "protectionLevel": "SOFTWARE" }
Nessa saída, PROJECT_ID
é o ID do projeto.
Anote o valor de ciphertext
na resposta recebida.
Essa é sua chave encapsulada.
Etapa 4: enviar uma solicitação de desidentificação para a API DLP
Esta seção descreve como desidentificar dados confidenciais em conteúdo de texto.
Para concluir esta tarefa, você precisa do seguinte:
- O nome completo do recurso da chave do Cloud KMS que você criou na Etapa 1.
- A chave encapsulada que você criou na Etapa 3.
Nesta seção, é necessário salvar o exemplo de solicitação em um arquivo JSON. Se você estiver usando o Cloud Shell, poderá usar o editor do Cloud Shell para criar o arquivo. Para iniciar o editor, clique em
Abrir editor na barra de ferramentas da janela do Cloud Shell.Para desidentificar dados confidenciais em conteúdo de texto, siga estas etapas:
Crie um arquivo de solicitação JSON com o texto a seguir.
{ "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:
PROJECT_ID
: ID do projeto.WRAPPED_KEY
: a chave encapsulada que você criou na Etapa 3.
Verifique se o valor resultante de
cryptoKeyName
forma o nome completo do recurso da chave do Cloud KMS.Para mais informações sobre os componentes dessa solicitação JSON, consulte
projects.locations.content.deidentify
. Depois de concluir este guia de início rápido, tente fazer experimentos com entradas diferentes para essa solicitação. Você pode usarcurl
conforme descrito aqui. Também é possível usar o API Explorer nessa página de referência em Testar esta API.Salve o arquivo como
deidentify-request.json
.Use
curl
para fazer uma solicitaçãoprojects.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.json
Substitua
PROJECT_ID
pelo ID do seu projeto.Para transmitir um nome de arquivo para
curl
, use a opção-d
(para dados) e use um sinal@
antes do nome do arquivo. Esse arquivo precisa estar no mesmo diretório em que você executa o comandocurl
.A resposta recebida da proteção de dados sensíveis é 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/PROJECT_ID/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 e-mail é substituído por um token, comoEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
. Para reidentificar esse conteúdo, você precisa transmitir o token inteiro na solicitação de reidentificação.
Etapa 5: enviar uma solicitação de reidentificação à API DLP
Esta seção descreve como reidentificar dados tokenizados no conteúdo de texto.
Para concluir esta tarefa, você precisa do seguinte:
- O nome completo do recurso da chave do Cloud KMS que você criou na Etapa 1.
- A chave encapsulada que você criou na Etapa 3.
- O token que você recebeu na Etapa 4.
Para identificar o conteúdo tokenizado novamente, siga estas etapas:
Crie um arquivo de solicitação JSON com o texto a seguir.
{ "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:
PROJECT_ID
: ID do projeto.WRAPPED_KEY
: a chave encapsulada que você criou na Etapa 3.TOKEN
: o token que você recebeu na Etapa 4, por exemplo,EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q
.
Verifique se o valor resultante de
cryptoKeyName
forma o nome completo do recurso da chave do Cloud KMS.Para mais informações sobre os componentes dessa solicitação JSON, consulte
projects.locations.content.reidentify
. Depois de concluir este guia de início rápido, tente fazer experimentos com entradas diferentes para essa solicitação. Você pode usarcurl
conforme descrito aqui. Também é possível usar o API Explorer nessa página de referência em Testar esta API.Salve o arquivo como
reidentify-request.json
.Use
curl
para fazer uma solicitaçãoprojects.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.json
Substitua
PROJECT_ID
pelo ID do seu projeto.Para transmitir um nome de arquivo para
curl
, use a opção-d
(para dados) e use um sinal@
antes do nome do arquivo. Esse arquivo precisa estar no mesmo diretório em que você executa o comandocurl
.A resposta recebida da proteção de dados sensíveis é 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/PROJECT_ID/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 e-mail é substituído pelo endereço de e-mail real do texto original.Você acabou de desidentificar e reidentificar dados confidenciais em conteúdo de texto usando criptografia determinística.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.
Destruir a versão da chave
Se você não quiser mais usar a chave criada neste guia de início rápido, destrua a versão dela.
Liste as versões disponíveis para 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 ser
destruída.
Excluir o projeto
Se você criou um novo projeto para este guia de início rápido, a maneira mais fácil de evitar cobranças adicionais é excluí-lo.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Revogar credenciais
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
A seguir
- Para informações mais detalhadas sobre como desidentificar conteúdo confidencial, consulte Como desidentificar dados confidenciais.
- Para informações sobre como um fluxo de trabalho de desidentificação se encaixa em implantações na vida real, consulte Desidentificação e reidentificação de PII em conjuntos de dados de grande escala usando a proteção de dados confidenciais.
- Para informações conceituais sobre tokenização de dados por meio de uma chave criptográfica, consulte Pseudonimização.