Este tópico mostra como voltar a encriptar dados com uma chave simétrica do Cloud Key Management Service. Pode adaptar estes exemplos para chaves assimétricas. Se suspeitar de uma utilização não autorizada de uma chave, deve voltar a encriptar os dados protegidos por essa chave e, em seguida, desativar ou agendar a destruição da versão anterior da chave.
Antes de começar
Este cenário requer as seguintes condições.
Já encriptou dados com o Cloud KMS.
A versão da chave usada para a encriptação não está desativada, agendada para destruição nem destruída. Usa esta versão da chave para desencriptar os dados encriptados.
Já alterou as chaves. Uma rotação de chaves cria uma nova versão da chave principal. Usa a nova versão da chave principal para voltar a encriptar os dados.
Voltar a encriptar dados com chaves assimétricas
Os exemplos neste tópico mostram como voltar a encriptar dados com uma chave simétrica. Quando usa uma chave simétrica, o Cloud KMS infere automaticamente a versão da chave a usar para a desencriptação. Quando usa uma chave assimétrica, tem de especificar a versão da chave.
- Quando seguir as instruções para usar a Google Cloud CLI, inclua sempre a flag
--version
. - Quando seguir as instruções para usar a API, use
CryptoKeyVersions
em vez deCryptoKeys
. Pode ler mais sobre a encriptação e desencriptação de dados com uma chave assimétrica.
O fluxo de trabalho para volver a encriptar dados com chaves assimétricas é semelhante ao descrito neste tópico.
Fluxo de trabalho de reencriptação de dados
Siga estes passos para voltar a encriptar os dados e desativar ou agendar a destruição da versão da chave usada para a encriptação original.
Desencripte os dados com a versão da chave anterior
O Cloud KMS usa automaticamente a versão correta da chave para desencriptar os dados, desde que a versão da chave não esteja desativada, agendada para destruição ou destruída. Os exemplos seguintes mostram como desencriptar os dados. Este é o mesmo código de desencriptação usado em Encriptar e desencriptar.
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Substitua o seguinte:
KEY_NAME
: o nome da chave que quer usar para a desencriptação.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.FILE_TO_DECRYPT
: o caminho para o ficheiro que quer descifrar.DECRYPTED_OUTPUT
: o caminho onde quer guardar o resultado descifrado.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Trusted Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
O texto descifrado devolvido no JSON do Cloud KMS está codificado em base64.
Para desencriptar dados encriptados, faça um pedido POST
e faculte as informações do projeto e da chave adequadas, bem como especifique o texto encriptado (também conhecido como texto cifrado) a desencriptar no campo ciphertext
do corpo do pedido.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém o conjunto de chaves e a chave que quer usar para a desencriptação.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.KEY_RING
: o conjunto de chaves que contém a chave que quer usar para a desencriptação.KEY_NAME
: o nome da chave que quer usar para a desencriptação.ENCRYPTED_DATA
: os dados encriptados que quer desencriptar.
Segue-se um exemplo de payload com dados codificados em base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Volte a encriptar os dados com a nova versão da chave principal
O Cloud KMS usa automaticamente a nova versão da chave principal para encriptar dados. Os exemplos seguintes mostram como encriptar os dados. Este é o mesmo código de encriptação usado em Encriptar e desencriptar.
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Substitua o seguinte:
KEY_NAME
: o nome da chave que quer usar para a encriptação.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.FILE_TO_ENCRYPT
: o caminho para o ficheiro que quer encriptar.ENCRYPTED_OUTPUT
: o caminho onde quer guardar o resultado encriptado.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Trusted Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Quando usa JSON e a API REST, o conteúdo tem de ser codificado em base64 antes de poder ser encriptado pelo Cloud KMS.
Para encriptar dados, faça um pedido POST
e faculte as informações do projeto e da chave adequadas, bem como especifique o texto codificado em base64 a encriptar no campo plaintext
do corpo do pedido.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Substitua o seguinte:
PROJECT_ID
: o ID do projeto que contém o conjunto de chaves e a chave que quer usar para a encriptação.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.KEY_RING
: o conjunto de chaves que contém a chave que quer usar para encriptação.KEY_NAME
: o nome da chave que quer usar para a encriptação.PLAINTEXT_TO_ENCRYPT
: os dados de texto simples que quer encriptar. O texto simples tem de estar codificado em Base64 antes de chamar o métodoencrypt
.
Segue-se um exemplo de payload com dados codificados em base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Desative ou agende a destruição da versão da chave anterior
Se rodou a chave em resposta a um incidente suspeito, depois de voltar a encriptar os dados, desative ou agende a destruição da versão da chave anterior.
Desative uma versão da chave ativada
Só é possível desativar uma versão da chave que esteja ativada. Isto é feito com o método UpdateCryptoKeyVersion
.
Consola
Aceda à página Gestão de chaves na Trusted Cloud consola.
Clique no nome do conjunto de chaves que contém a chave cuja versão vai desativar.
Clique na chave cuja versão quer desativar.
Selecione a caixa junto às versões principais que quer desativar.
Clique em Desativar no cabeçalho.
Na mensagem de confirmação, clique em Desativar.
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Substitua key-version pela versão da chave a desativar. Substitua key pelo nome da chave. Substitua key-ring pelo nome do conjunto de chaves onde a chave está localizada. Substitua location pela localização do Cloud KMS do conjunto de chaves.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Trusted Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
Agende uma versão da chave para destruição
Só é possível agendar a destruição de versões de chaves que estejam ativadas ou desativadas. Isto é feito com o método DestroyCryptoKeyVersion
.
Consola
Na Trusted Cloud consola, aceda à página Gestão de chaves.
Selecione a caixa junto à versão da chave que quer agendar para destruição.
Clique em Destruir no cabeçalho.
No comando de confirmação, introduza o nome da chave e, de seguida, clique em Agendar destruição.
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Substitua o seguinte:
KEY_VERSION
: o número da versão da versão principal que quer destruir.KEY_NAME
: o nome da chave para a qual quer destruir uma versão da chave.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS do conjunto de chaves.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Trusted Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Destrua uma versão de chave chamando o método CryptoKeyVersions.destroy.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"