Criptografar e descriptografar dados com o Cloud KMS

1. Visão geral

O Cloud KMS é um serviço de gerenciamento de chaves hospedado na nuvem que permite gerenciar as chaves criptográficas dos seus serviços na nuvem da mesma forma que você faria localmente. Ele inclui suporte para criptografia, descriptografia, assinatura e verificação usando uma variedade de tipos de chave e origens, incluindo o Cloud HSM para chaves protegidas por hardware. Neste tutorial, você aprende a criptografar e descriptografar dados usando chaves simétricas do Cloud KMS.

Você aprenderá

  • Como ativar a API Cloud KMS
  • Como criar um keyring do Cloud KMS
  • Como criar uma chave criptográfica do Cloud KMS para criptografia/descriptografia simétrica
  • Como fazer a rotação de uma chave criptográfica simétrica do Cloud KMS

2. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma se você ainda não tiver uma conta do Gmail ou do G Suite.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.

  1. Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.

A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de avaliação gratuita de US$ 300.

Inicie o Cloud Shell

Neste codelab, você usará o Cloud Shell, um ambiente virtualizado sem custo financeiro em execução no Google Cloud. No Console do GCP, clique no ícone do Cloud Shell na barra de ferramentas localizada no canto superior direito:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal permanente de 5 GB, além de ser executada no Google Cloud, o que aprimora o desempenho e a autenticação da rede. A menos que seja instruído de outra forma, execute todos os comandos deste shell.

3. Ativar o serviço do Cloud KMS

Antes de usar o Cloud KMS, ative o serviço no seu projeto. Isso só precisa ser feito uma vez por projeto. Para ativar o serviço do Cloud KMS, execute o seguinte comando:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

A ativação pode levar até um minuto. O comando vai informar que foi bem-sucedido quando for concluído.

4. Criar chave KMS

Criar um keyring do Cloud KMS. No Cloud KMS, um keyring é uma coleção lógica de chaves criptográficas. O keyring contém metadados sobre as chaves, como a localização delas. Crie um keyring chamado my-keyring na região global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Agora crie uma chave criptográfica chamada my-symmetric-key com a finalidade encryption dentro do keyring que você acabou de criar.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5. Criptografar dados

Crie um arquivo com dados para criptografar e use a ferramenta de linha de comando gcloud para criptografar os dados no arquivo:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

Os dados criptografados (também conhecidos como "texto criptografado") são salvos em data.txt.enc no disco. Se você abrir o arquivo data.txt.enc, vai perceber que ele tem caracteres estranhos e que não podem ser impressos. Isso ocorre porque os dados resultantes estão em formato binário.

Ao armazenar o texto criptografado em um banco de dados ou transmiti-lo como parte de uma solicitação HTTP, pode ser necessário codificar os dados. Um mecanismo de codificação comum é o base64.

O Cloud KMS não armazena os textos simples fornecidos. Salve esse texto criptografado em um local seguro porque ele será necessário para recuperar o valor do texto simples.

6. Descriptografar dados

Descriptografe o texto do arquivo usando a ferramenta de linha de comando gcloud:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

A ferramenta de linha de comando gcloud lê o texto criptografado do arquivo e o descriptografa usando o Cloud KMS. Observe que este exemplo especifica o argumento --plaintext-file como -. Isso instrui o gcloud a mostrar o resultado no terminal.

O console vai exibir my-contents, que é o mesmo valor de texto simples do arquivo acima.

7. Girar chaves

No Cloud KMS, uma chave criptográfica é, na verdade, um conjunto de versões de chaves criptográficas. É possível criar novas versões de chaves criptográficas para fazer a rotação de chaves. O Cloud KMS também pode alternar as chaves automaticamente de acordo com uma programação.

Para alternar uma chave manualmente, crie uma nova versão de chave criptográfica e defina-a como a versão principal:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

Todas as solicitações futuras para criptografar dados usarão essa nova chave. As chaves mais antigas ainda estão disponíveis para descriptografar dados anteriormente criptografados com elas. O Cloud KMS determina automaticamente a chave de descriptografia adequada com base no texto criptografado fornecido. Não é necessário especificar qual versão da chave criptográfica usar para descriptografia.

Para evitar que valores de texto criptografado que foram criptografados com uma versão de chave criptográfica mais antiga sejam descriptografados com o Cloud KMS, desative ou destrua essa versão. A desativação é uma operação reversível, enquanto a destruição é permanente. Para desativar uma versão:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

8. Parabéns!

Você ativou a API Cloud KMS, criou uma chave de criptografia simétrica e criptografou e descriptografa dados. O Cloud KMS é um produto avançado, e a criptografia/descriptografia é apenas um pouco de seus recursos.

Limpeza

Quando terminar de explorar, considere excluir seu projeto.

  • Acesse o console do Cloud Platform.
  • Selecione o projeto que você quer encerrar e clique em "Excluir" na parte superior. Isso programa a exclusão do projeto.

Saiba mais

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.