Crie uma chave protegida

Esta página descreve como usar o Cloud Key Management Service (Cloud KMS) para criar uma chave envolvida que pode usar para enviar pedidos deidentify e reidentify para a API Cloud Data Loss Prevention da Proteção de dados confidenciais.

O processo de utilização de uma chave criptográfica para desidentificar e voltar a identificar conteúdo chama-se pseudonimização (ou tokenização). Para informações conceptuais acerca deste processo, consulte Pseudonimização.

Para ver um exemplo que mostra como criar uma chave envolvida, tokenizar conteúdo e reidentificar conteúdo tokenizado, consulte o artigo Desidentificar e reidentificar texto sensível.

Pode concluir os passos neste documento em 5 a 10 minutos, excluindo 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 role (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. 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.

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

  8. 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
  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 role (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. 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.

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

  15. 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
  16. Funções necessárias

    Para receber as autorizações de que precisa para criar uma chave AES envolvida, peça ao seu administrador que lhe conceda as seguintes funções da 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.

    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: 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: ENABLED
      

      Neste 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 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=
      

    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.

    O que se segue?