Crie chaves de encriptação com o Cloud KMS

Este início rápido mostra como criar e usar chaves de encriptação com o Cloud Key Management Service num projeto que lhe pertence. Estas instruções usam a consola para criar conjuntos de chaves, chaves e versões de chaves no Cloud KMS.Google Cloud Para instruções que usam outros métodos, consulte a vista geral da chave automática, crie um conjunto de chaves e crie uma chave.

Este guia de início rápido usa a linha de comandos para enviar pedidos para a API Cloud KMS. Para ver exemplos de programação que usam as bibliotecas cliente para enviar pedidos para a API Cloud KMS, consulte Encriptar e desencriptar.

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. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud KMS API:

    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 cloudkms.googleapis.com
  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter, roles/servicemanagement.serviceConsumer

    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 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. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Cloud KMS API:

    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 cloudkms.googleapis.com
  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter, roles/servicemanagement.serviceConsumer

    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. Conjuntos de chaves e chaves

    Para encriptar e desencriptar conteúdo, precisa de uma chave do Cloud KMS, que faz parte de um conjunto de chaves.

    Crie um conjunto de chaves com o nome test e uma chave com o nome quickstart. Consulte a vista geral da hierarquia de objetos para mais informações sobre estes objetos e a forma como se relacionam.

    gcloud kms keyrings create "test" \
        --location "global"
    gcloud kms keys create "quickstart" \
        --location "global" \
        --keyring "test" \
        --purpose "encryption"

    Pode usar a opção list para ver o nome e os metadados da chave que acabou de criar.

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

    Deve ver:

    NAME                                                                      PURPOSE          PRIMARY_STATE
    projects/PROJECT_ID/locations/global/keyRings/test/cryptoKeys/quickstart  ENCRYPT_DECRYPT  ENABLED
    

    Encripte dados

    Agora que tem uma chave, pode usá-la para encriptar texto ou conteúdo binário.

    Armazene algum texto a ser encriptado num ficheiro denominado "mysecret.txt".

    echo -n "Some text to be encrypted" > mysecret.txt

    Para encriptar os dados com gcloud kms encrypt, forneça as informações da chave, especifique o nome do ficheiro de texto simples a encriptar e especifique o nome do ficheiro que vai conter o conteúdo encriptado:

    gcloud kms encrypt \
        --location "global" \
        --keyring "test" \
        --key "quickstart" \
        --plaintext-file ./mysecret.txt \
        --ciphertext-file ./mysecret.txt.encrypted

    O método encrypt guarda o seu conteúdo encriptado no ficheiro especificado pela flag --ciphertext-file.

    Desencripte texto encriptado

    Para desencriptar os dados com gcloud kms decrypt, indique as informações da chave, especifique o nome do ficheiro encriptado (ficheiro de texto cifrado) a desencriptar e especifique o nome do ficheiro que vai conter o conteúdo desencriptado:

    gcloud kms decrypt \
        --location "global" \
        --keyring "test" \
        --key "quickstart" \
        --ciphertext-file ./mysecret.txt.encrypted \
        --plaintext-file ./mysecret.txt.decrypted

    O método decrypt guarda o conteúdo descifrado no ficheiro especificado pela flag --plaintext-file.

    Para desencriptar conteúdo encriptado, tem de usar a mesma chave que foi usada para encriptar o conteúdo.

    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.

    Liste as versões disponíveis para a sua chave:

    gcloud kms keys versions list \
        --location "global" \
        --keyring "test" \
        --key "quickstart"

    Para destruir uma versão, execute o seguinte comando, em que 1 é o número da versão da chave que quer destruir:

    gcloud kms keys versions destroy 1 \
        --location "global" \
        --keyring "test" \
        --key "quickstart"
    

    O que se segue?