Nesta página, mostramos como fazer a rotação de uma chave de maneira automática ou manual. Para mais informações sobre a rotação de chaves em geral, consulte Rotação de chaves.
Funções exigidas
Para receber as permissões necessárias para fazer a rotação de chaves, peça ao administrador para conceder a você os seguintes papéis do IAM na sua chave:
-
Administrador do Cloud KMS (
roles/cloudkms.admin) -
Recriptografar dados:
Criptografador/descriptografador de CryptoKey do Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para fazer a rotação de chaves. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para fazer a rotação de chaves:
-
Mudar a versão da chave primária:
cloudkms.cryptoKeys.update -
Mudar ou desativar o giro automático:
cloudkms.cryptoKeys.update -
Crie uma nova versão da chave:
cloudkms.cryptoKeyVersions.create -
Desative as versões antigas da chave:
cloudkms.cryptoKeyVersions.update -
Recriptografar dados:
-
cloudkms.cryptoKeyVersions.useToDecrypt -
cloudkms.cryptoKeyVersions.useToEncrypt
-
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Um único usuário com uma função personalizada que contenha todas essas permissões pode fazer a rotação de chaves e a recriptografia de dados por conta própria. Os usuários com as funções de administrador do Cloud KMS e de criptografador/descriptografador de CryptoKey do Cloud KMS podem trabalhar juntos para fazer a rotação de chaves e criptografar novamente os dados. Siga o princípio do menor privilégio ao atribuir papéis. Para mais detalhes, consulte Permissões e papéis.
Quando você faz a rotação de uma chave, os dados que foram criptografados com versões anteriores não são recriptografados automaticamente. Para saber mais, consulte descriptografar e recriptografar. Fazer a rotação de uma chave não desativa ou destrói automaticamente nenhuma versão de chave atual. Destruir versões de chave que não são mais necessárias ajuda a reduzir custos.
Configurar a rotação automática
Para configurar a rotação automática ao criar uma nova chave:
Console
Quando você usa o console Cloud de Confiance para criar uma chave, o Cloud KMS define o período de rotação e o próximo tempo de rotação automaticamente. Você pode usar os valores padrão ou especificar outros.
Para especificar um período de rotação e um horário de início diferentes, siga as etapas abaixo quando estiver criando a chave, antes de clicar no botão Criar:
Em Período de rotação de chaves, selecione uma opção.
Em A partir de, selecione a data em que você quer que a primeira rotação automática aconteça. Você pode deixar A partir de no valor padrão para iniciar a primeira rotação automática um período de rotação de chaves depois da criação da chave.
gcloud
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--rotation-period ROTATION_PERIOD \
--next-rotation-time NEXT_ROTATION_TIME
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.ROTATION_PERIOD: o intervalo para alternar a chave. Por exemplo,30dpara alternar a chave a cada 30 dias. O período de rotação precisa ser de pelo menos um dia e no máximo 100 anos. Para mais informações, consulte CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: o carimbo de data/hora em que a primeira rotação será concluída, por exemplo,2023-01-01T01:02:03. Você pode omitir--next-rotation-timepara programar a primeira rotação por um período a partir do momento em que você executar o comando. Para ver mais informações, consulteCryptoKey.nextRotationTime.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Cloud de Confiance e instale o SDK do Cloud KMS para PHP.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Para criar uma chave, use o
método
CryptoKey.create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "PURPOSE", "rotationPeriod": "ROTATION_PERIOD", "nextRotationTime": "NEXT_ROTATION_TIME"}'
Substitua:
PURPOSE: a finalidade da chave.ROTATION_PERIOD: o intervalo para alternar a chave. Por exemplo,30dpara alternar a chave a cada 30 dias. O período de rotação precisa ser de pelo menos um dia e no máximo 100 anos. Para mais informações, consulte CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: o carimbo de data/hora em que a primeira rotação será concluída, por exemplo,2023-01-01T01:02:03. Veja mais informações emCryptoKey.nextRotationTime.
Para configurar a rotação automática em uma chave atual:
Console
Acesse a página Gerenciamento de chaves no console do Cloud de Confiance .
Clique no nome do keyring que contém a chave para a qual você quer adicionar uma programação de rotação.
Clique na chave a que você quer adicionar uma programação de rotação.
No cabeçalho, clique em Editar período de rotação.
No prompt, escolha novos valores para os campos Período de rotação e A partir de.
No prompt, clique em Salvar.
gcloud
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.
gcloud kms keys update KEY_NAME \
--location LOCATION \
--keyring KEY_RING \
--rotation-period ROTATION_PERIOD \
--next-rotation-time NEXT_ROTATION_TIME
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.ROTATION_PERIOD: o intervalo para alternar a chave. Por exemplo,30dpara alternar a chave a cada 30 dias. O período de rotação precisa ser de pelo menos um dia e no máximo 100 anos. Para mais informações, consulte CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: o carimbo de data/hora em que a próxima rotação será concluída, por exemplo,2023-01-01T01:02:03. Você pode omitir--next-rotation-timepara programar a próxima rotação para um período de rotação a partir do momento em que você executa o comando. Para ver mais informações, consulteCryptoKey.nextRotationTime.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Cloud de Confiance e instale o SDK do Cloud KMS para PHP.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Para atualizar uma chave, use o método
CryptoKey.patch:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME?updateMask=rotationPeriod,nextRotationTime" \
--request "PATCH" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"rotationPeriod": "ROTATION_PERIOD", "nextRotationTime": "NEXT_ROTATION_TIME"}'
Substitua:
ROTATION_PERIOD: o intervalo para alternar a chave. Por exemplo,30dpara alternar a chave a cada 30 dias. O período de rotação precisa ser de pelo menos um dia e no máximo 100 anos. Para mais informações, consulte CryptoKey.rotationPeriod.NEXT_ROTATION_TIME: o carimbo de data/hora em que a próxima rotação será concluída, por exemplo,2023-01-01T01:02:03. Veja mais informações emCryptoKey.nextRotationTime.
Fazer a rotação manual de uma chave
Primeiro, crie uma nova versão da chave:
Console
Acesse a página Gerenciamento de chaves no console do Cloud de Confiance .
Clique no nome do keyring que contém a chave para a qual você criará uma nova versão da chave.
Clique na chave para a qual você criará uma nova versão da chave.
No cabeçalho, clique em Girar.
Na solicitação, clique em Girar para confirmar.
gcloud
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.
gcloud kms keys versions create \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.
As versões de chave são numeradas sequencialmente.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Cloud de Confiance e instale o SDK do Cloud KMS para PHP.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Para alternar uma chave manualmente, primeiro crie uma nova versão de chave chamando o método CryptoKeyVersions.create.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions" \
--request "POST" \
--header "authorization: Bearer TOKEN"
Esse comando cria uma nova versão de chave, mas não a define como a principal.
Para definir a nova versão da chave como principal, consulte Como configurar uma versão atual como principal.
Se necessário, recriptografe os dados que foram criptografados usando a versão anterior da chave.
Definir uma versão atual como chave primária
Para definir uma versão de chave diferente como a versão principal de uma chave, atualize a chave com as informações da nova versão principal. Uma versão de chave precisa estar ativada para que você possa configurá-la como a versão principal.
Console
Acesse a página Gerenciamento de chaves no console do Cloud de Confiance .
Clique no nome do keyring que contém a chave cuja versão principal você quer atualizar.
Clique na chave cuja versão principal você quer atualizar.
Na linha correspondente à versão da chave que você quer tornar principal, clique em Ver mais .
Clique em Tornar versão principal no menu.
No prompt de confirmação, clique em Tornar principal.
gcloud
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.
gcloud kms keys update KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--primary-version KEY_VERSION
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.- KEY_VERSION: o número da versão da nova chave primária.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Cloud de Confiance e instale o SDK do Cloud KMS para PHP.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Mude a versão da chave primária chamando o método CryptoKey.updatePrimaryVersion.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:updatePrimaryVersion" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"cryptoKeyVersionId": "KEY_VERSION"}'
Substitua:
PROJECT_ID: o ID do projeto que contém o keyring.LOCATION: o local do Cloud KMS do keyring.KEY_RING: o nome do keyring que contém a chave.KEY_NAME: o nome da chave;- KEY_VERSION: o número da versão da nova chave primária.
Quando você muda a versão da chave primária, a alteração geralmente se torna consistente em um minuto. No entanto, em casos excepcionais, essa mudança pode levar até 3 horas para ser propagada. Durante esse período, a versão principal anterior pode ser usada para criptografar dados. Para saber mais, consulte Consistência de recursos do Cloud KMS.
Desativar rotação automática
Para fazer isso, limpe a programação de rotação da chave:
Console
Acesse a página Gerenciamento de chaves no console do Cloud de Confiance .
Clique no nome do keyring que contém a chave da qual você quer remover a programação de rotação.
Clique na chave de que você quer remover a programação de rotação.
No cabeçalho, clique em Editar período de rotação.
Na solicitação, clique no campo Período de rotação e selecione Nunca (rotação manual).
No prompt, clique em Salvar.
gcloud
Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.
gcloud kms keys update KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--remove-rotation-schedule
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
C#
Para executar esse código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK do Cloud KMS para C#.
Go
Para executar esse código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK do Cloud KMS para Go.
Java
Para executar esse código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK do Cloud KMS para Java.
Node.js
Para executar esse código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Cloud KMS para Node.js.
PHP
Para executar esse código, primeiro saiba como usar o PHP no Cloud de Confiance e instale o SDK do Cloud KMS para PHP.
Ruby
Para executar esse código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK do Cloud KMS para Ruby.
Python
Para executar esse código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK do Cloud KMS para Python.
API
Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.
Para atualizar uma chave, use o método
CryptoKey.patch:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME?updateMask=rotationPeriod,nextRotationTime" \
--request "PATCH" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"rotationPeriod": null, "nextRotationTime": null}'
Para mais detalhes sobre rotationPeriod e nextRotationTime, consulte
keyRings.cryptoKeys.
Girar uma chave externa
É possível configurar a rotação automática para chaves externas simétricas coordenadas. Também é possível criar manualmente uma nova versão de chave para chaves externas simétricas ou assimétricas coordenadas.
A rotação ou criação de uma nova versão da chave faz com que todos os dados recém-criados protegidos com essa chave sejam criptografados com a nova versão. Os dados protegidos com uma versão anterior da chave não são recriptografados. Como resultado, seu gerenciador de chaves externas precisa continuar disponibilizando o material da chave da versão anterior para uso.
Para criar uma versão de chave para uma chave externa coordenada, siga estas etapas:
Console
No console Cloud de Confiance , acesse a página Gerenciamento de chaves.
Selecione o keyring e a chave.
Clique em Criar versão. Uma mensagem indica que a nova versão da chave será gerada no Cloud KMS e no EKM. Se você encontrar um campo Caminho da chave ou URI da chave, a chave selecionada não será uma chave externa coordenada.
Para confirmar que você quer criar uma nova versão da chave, clique em Criar versão.
A nova versão da chave aparece no estado Geração pendente. Para chaves simétricas, as versões de chave criadas manualmente não são definidas automaticamente como a versão da chave primária. Você pode definir sua nova versão de chave como primária.
CLI da gcloud
Para criar uma versão de chave simétrica e defini-la como a principal, use o comando kms keys versions create com a flag --primary:
gcloud kms keys versions create \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --primary
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.
Para criar uma versão de chave assimétrica ou simétrica que não seja a chave primária, use o comando kms keys versions
create:
gcloud kms keys versions create \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Substitua:
KEY_NAME: o nome da chave;KEY_RING: o nome do keyring que contém a chave.LOCATION: o local do Cloud KMS do keyring.
A seguir
- Depois de girar uma chave, é possível recriptografar dados que foram criptografados com ela.
- Depois de recriptografar os dados, verifique se a versão da chave está em uso.
- Depois de confirmar que uma versão de chave não está mais em uso, você pode destruir uma versão de chave.