Desidentifique e reidentifique dados confidenciais

Este início rápido mostra como usar a Proteção de dados confidenciais para remover a identificação e voltar a identificar dados confidenciais em conteúdo de texto. No processo, explica-lhe como usar o Cloud Key Management Service para criar uma chave envolvida. Precisa desta chave nos seus pedidos de anonimização e reidentificação.

O processo descrito neste início rápido chama-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 que usou durante a desidentificaçã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 entre todos os métodos criptográficos reversíveis que a proteção de dados confidenciais suporta, porque oferece o nível de segurança mais elevado.

Pode concluir os passos neste tópico em 10 a 20 minutos, sem incluir os passos da secção Antes de começar.

Antes de começar

  1. 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.
  2. Install the Google Cloud CLI.

  3. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  8. 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 the following:

    • PROJECT_ID: Your project ID.
    • USER_IDENTIFIER: The identifier for your user account. For example, myemail@example.com.
    • ROLE: The IAM role that you grant to your user account.
  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. 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 (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • 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.

  13. Verify that billing is enabled for your Google Cloud project.

  14. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  15. 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 the following:

    • PROJECT_ID: Your project ID.
    • USER_IDENTIFIER: The identifier for your user account. For example, myemail@example.com.
    • ROLE: The IAM role that you grant to your user account.
  16. Passo 1: 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 da proteção de dados confidenciais. Tome nota do 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.

    1. Crie um conjunto de chaves:

      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 conjunto de chaves e a chave:

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

      Recebe o seguinte resultado:

      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
      

      Neste resultado, PROJECT_ID é o ID do seu projeto.

      O caminho em NAME é o nome completo do recurso da sua chave do Cloud KMS. Tome nota do mesmo, uma vez que os pedidos de desidentificação e reidentificação o exigem.

    Passo 2: 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.

    1. Crie uma chave AES de 128, 192 ou 256 bits. O comando seguinte usa openssl para criar uma chave de 256 bits no diretório atual:

      openssl rand -out "./aes_key.bin" 32
      

      O ficheiro aes_key.bin é adicionado ao seu diretório atual.

    2. Codifique a chave AES como uma string base64:

      base64 -i ./aes_key.bin
      

      Recebe um resultado semelhante ao seguinte:

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

    Passo 3: envolva a chave AES com a chave do Cloud KMS

    Esta secção descreve como usar a chave do Cloud KMS que criou no Passo 1 para encapsular a chave AES codificada em base64 que criou no Passo 2.

    Para encapsular a chave AES, use curl para enviar o seguinte pedido à 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 o seguinte:

    A resposta que 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"
    }
    

    Neste resultado, PROJECT_ID é o ID do seu projeto.

    Tome nota do valor de ciphertext na resposta que recebe. Essa é a sua chave envolvida.

    Passo 4: 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:

    • O nome completo do recurso da chave do Cloud KMS que criou no passo 1.
    • A chave envolvida que criou no Passo 3.

    Esta secção requer que guarde o pedido de exemplo num ficheiro JSON. Se estiver a usar o Cloud Shell, pode usar o editor do Cloud Shell para criar o ficheiro. Para iniciar o editor, clique em Abrir editor na barra de ferramentas da janela do Cloud Shell.

    Para remover a identificação de dados confidenciais em conteúdo de texto, siga estes passos:

    1. Crie um ficheiro de pedido JSON com 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 no passo 3.

      Certifique-se de que o valor resultante de cryptoKeyName forma o nome completo do recurso da sua chave do Cloud KMS.

      Para mais informações sobre os componentes deste pedido JSON, consulte projects.locations.content.deidentify. Depois de concluir este guia de início rápido, experimente diferentes entradas para este pedido. Pode usar o curl conforme descrito aqui. Em alternativa, pode usar o Explorador de APIs nessa página de referência da API em Experimentar esta API.

    2. Guarde o ficheiro como deidentify-request.json.

    3. Use curl para fazer um pedido 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 transmitir um nome de ficheiro para curl, use a opção -d (para dados) e preceda o nome do ficheiro com um sinal @. Este ficheiro tem de estar no mesmo diretório onde executa o comando curl.

      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/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 email é substituído por um token como EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. Para reidentificar este conteúdo, tem de transmitir o token completo no pedido de reidentificação.

    Passo 5: envie um pedido de reidentificação para a API DLP

    Esta secção descreve como voltar a identificar dados tokenizados em conteúdo de texto.

    Para concluir esta tarefa, precisa do seguinte:

    • O nome completo do recurso da chave do Cloud KMS que criou no passo 1.
    • A chave envolvida que criou no Passo 3.
    • O token que recebeu no passo 4.

    Para voltar a identificar conteúdo tokenizado, siga estes passos:

    1. Crie um ficheiro de pedido JSON com 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 no passo 3.
      • TOKEN: o token que recebeu no Passo 4, por exemplo, EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.

      Certifique-se de que o valor resultante de cryptoKeyName forma o nome completo do recurso da sua chave do Cloud KMS.

      Para mais informações sobre os componentes deste pedido JSON, consulte projects.locations.content.reidentify. Depois de concluir este guia de início rápido, experimente diferentes entradas para este pedido. Pode usar o curl conforme descrito aqui. Em alternativa, pode usar o Explorador de APIs nessa página de referência da API em Experimentar esta API.

    2. Guarde o ficheiro como reidentify-request.json.

    3. Use curl para fazer um pedido 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 transmitir um nome de ficheiro para curl, use a opção -d (para dados) e preceda o nome do ficheiro com um sinal @. Este ficheiro tem de estar no mesmo diretório onde executa o comando curl.

      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/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 email é substituído pelo endereço de email real do texto original.

      Acabou de remover a identificação e voltar a identificar dados confidenciais em conteúdo de texto através da encriptação determinística.

    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 neste início rápido, 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 ser destruída.

    Elimine o projeto

    Se criou um novo projeto para este início rápido, 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

    O que se segue?