Guia de início rápido: como desidentificar e reidentificar textos confidenciais

Neste guia de início rápido, mostramos como usar o Cloud Data Loss Prevention (DLP) para desidentificar e reidentificar dados confidenciais no conteúdo de texto. No processo, leva você pelo uso do Cloud Key Management Service para criar uma chave encapsulada. Essa chave é necessária nas solicitações de desidentificação e reidentificação.

O processo descrito neste guia de início rápido é chamado de pseudonimização (ou tokenização). Nesse processo, o Cloud DLP 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.

O Cloud DLP aceita 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 inicialização sintética). Recomendamos isso entre todos os métodos criptográficos reversíveis compatíveis com o Cloud DLP, porque ele oferece o mais alto nível de segurança.

É possível concluir as etapas deste tópico em 10 a 20 minutos, sem incluir as etapas Antes de começar.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative as APIs Cloud DLP and Cloud KMS.

    Ative as APIs

  5. Crie uma conta de serviço:

    1. No Console do Cloud, acesse a página Criar conta de serviço.

      Acesse Criar conta de serviço
    2. Selecione um projeto.
    3. No campo Nome da conta de serviço, insira um nome. O Console do Cloud preenche o campo ID da conta de serviço com base nesse nome.

      No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

    4. Clique em Criar.
    5. Clique no campo Selecionar um papel.

      Em Acesso rápido, clique em Básico e em Proprietário.

    6. Clique em Continuar.
    7. Clique em Concluído para terminar a criação da conta de serviço.

      Não feche a janela do navegador. Você vai usá-lo na próxima etapa.

  6. Crie uma chave de conta de serviço:

    1. No Console do Cloud, clique no endereço de e-mail da conta de serviço que você criou.
    2. Clique em Chaves.
    3. Clique em Adicionar chave e em Criar nova chave.
    4. Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
    5. Clique em Fechar.
  7. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém a chave da conta de serviço. Essa variável só se aplica à sessão de shell atual. Dessa maneira, se você abrir uma nova sessão, defina a variável novamente.

  8. Instale e inicialize o SDK do Cloud..

Etapa 1: criar um keyring e uma chave

Antes de iniciar este procedimento, decida onde você quer que o Cloud DLP processe suas solicitações de desidentificação e reidentificação. Quando uma chave do Cloud KMS é criada, é necessário armazená-la em global ou na mesma região das solicitações do Cloud DLP. Caso contrário, as solicitações do Cloud DLP não funcionarão.

Para ver uma lista de locais compatíveis, consulte Locais do Cloud DLP. Anote o nome da região escolhida (por exemplo, us-west1).

Neste procedimento, global é usado como o local para todas as solicitações de API. Se você quiser usar uma região diferente, substitua global pelo nome da região.

  1. Crie um keyring:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. Crie uma chave

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. Liste o keyring e a chave:

    gcloud kms keys list \
        --location "global" \
        --keyring "dlp-keyring"
    

    Você recebe a seguinte saída:

    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-a 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 AES (padrão de criptografia avançada) e codificá-la no formato base64.

  1. 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.

  2. Codifique a chave AES como uma string base64:

    base64 -i ./aes_key.bin
    

    Você verá um resultado semelhante a este:

    uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
    

Etapa 3: encapsular a chave AES usando o 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 que você criou na Etapa 2. ,

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 recebida do Cloud KMS é semelhante à 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 Cloud DLP

Nesta seção, descrevemos como desidentificar dados confidenciais 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.

Para desidentificar dados confidenciais no conteúdo de texto, siga estas etapas:

  1. 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 usar curl conforme descrito aqui. Se preferir, use a API Explorer nessa página de referência da API em Testar esta API.

  2. Salve o arquivo como deidentify-request.json.

  3. Use curl para fazer uma solicitação projects.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 passar um nome de arquivo para curl, use a opção -d (para dados) e coloque o sinal @ na frente desse nome. Esse arquivo precisa estar no mesmo diretório em que você executa o comando curl.

    A resposta recebida do Cloud DLP é semelhante à 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, como EMAIL_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 para a API Cloud 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 reidentificar conteúdo tokenizado, siga estas etapas:

  1. 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 usar curl conforme descrito aqui. Se preferir, use a API Explorer nessa página de referência da API em Testar esta API.

  2. Salve o arquivo como reidentify-request.json.

  3. Use curl para fazer uma solicitação projects.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 passar um nome de arquivo para curl, use a opção -d (para dados) e coloque o sinal @ na frente desse nome. Esse arquivo precisa estar no mesmo diretório em que você executa o comando curl.

    A resposta recebida do Cloud DLP é semelhante à 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.

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste guia de início rápido, siga estas etapas:

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.

Exclua o projeto

O jeito mais fácil de evitar cobranças é excluir o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir