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 criptografador/descriptografador de CryptoKey do Cloud KMS podem trabalhar juntos para girar 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 Trusted Cloud 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,30d
para 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-time
para 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 Trusted Cloud 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,30d
para 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 Trusted Cloud .
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,30d
para 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-time
para 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 Trusted Cloud 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,30d
para 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 Trusted Cloud .
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 Trusted Cloud 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 sua nova versão de chave como principal, consulte Como configurar uma versão atual como a chave primária 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 Trusted Cloud .
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 Trusted Cloud 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 Trusted Cloud .
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 Trusted Cloud 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 Trusted Cloud , 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.