Nesta página, mostramos como criar uma chave no Cloud KMS. Uma chave pode ser de criptografia simétrica ou assimétrica, de assinatura assimétrica ou de assinatura MAC.
Ao criar uma chave, você a adiciona a um keyring em um local do Cloud KMS específico. Você pode criar um novo keyring ou usar um já existente. Nesta página, você gera uma nova chave do Cloud KMS ou do Cloud HSM e a adiciona a um keyring atual. Para criar uma chave do Cloud EKM, consulte Criar uma chave externa. Para importar uma chave do Cloud KMS ou do Cloud HSM, consulte Importar uma chave.
Antes de começar
Antes de concluir as tarefas nesta página, você precisa do seguinte:
- Um recurso de projeto Google Cloud para conter seus recursos do Cloud KMS. Recomendamos usar um projeto separado para os recursos do Cloud KMS que não contenha outros recursos do Google Cloud .
- O nome e o local do keyring em que você quer criar a chave. Escolha um keyring em um local próximo aos seus outros recursos e que seja compatível com o nível de proteção escolhido. Para conferir os locais disponíveis e os níveis de proteção que eles oferecem, consulte Locais do Cloud KMS. Para criar um keyring, consulte Criar um keyring.
- Opcional: para usar a CLI gcloud, prepare seu ambiente.
No console do Google Cloud , ative o Cloud Shell.
Funções exigidas
Para receber as permissões necessárias para criar chaves, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto ou em um recurso principal:
- Administrador do Cloud KMS (
roles/cloudkms.admin) -
Para criar chaves de HSM de locatário único:
Criador de chaves de HSM de locatário único do Cloud KMS (
roles/cloudkms.hsmSingleTenantKeyCreator)
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 criar chaves. Para acessar 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 criar chaves:
-
cloudkms.cryptoKeys.create -
cloudkms.cryptoKeys.get -
cloudkms.cryptoKeys.list -
cloudkms.cryptoKeyVersions.create -
cloudkms.cryptoKeyVersions.get -
cloudkms.cryptoKeyVersions.list -
cloudkms.keyRings.get -
cloudkms.keyRings.list -
cloudkms.locations.get -
cloudkms.locations.list -
resourcemanager.projects.get -
Para recuperar uma chave pública:
cloudkms.cryptoKeyVersions.viewPublicKey -
Para criar chaves de HSM de locatário único:
-
cloudkms.singleTenantHsmInstances.get -
cloudkms.singleTenantHsmInstances.use
-
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Criar uma chave de criptografia simétrica
Console
No console do Google Cloud , acesse a página Gerenciamento de chaves.
Clique no nome do keyring em que a chave será criada.
Clique em Criar chave.
Em Nome da chave, insira um nome para a chave.
Em Nível de proteção, selecione Software, HSM ou HSM de locatário único.
Se você selecionou HSM de locatário único, escolha a instância de HSM de locatário único em que quer criar a chave.
Em Material da chave, selecione Chave gerada.
Em Finalidade, selecione Criptografia/descriptografia simétrica.
Aceite os valores padrão para Período de rotação e A partir de.
Clique em Criar.
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.
Para criar uma chave de software ou do Cloud HSM multitenant, use o comando kms keys create:
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "PROTECTION_LEVEL"
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.PROTECTION_LEVEL: o nível de proteção a ser usado para a chave, por exemplo,softwareouhsm. É possível omitir a flag--protection-levelpara chavessoftware.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
--crypto-key-backend ao comando kms keys create:
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "hsm-single-tenant" \
--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Substitua:
INSTANCE_PROJECT: o identificador do projeto em que sua instância do Cloud HSM de locatário único existe.INSTANCE_NAME: o nome da instância do Cloud HSM de locatário único em que você quer criar a chave. Para mais informações sobre instâncias de HSM de locatário único do Cloud, consulte Criar e gerenciar uma instância de HSM de locatário único do Cloud.
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 em Google 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 de software ou do Cloud HSM multitenant, 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": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }}'
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.PROTECTION_LEVEL: o nível de proteção da chave, por exemplo,SOFTWAREouHSM.ALGORITHM: o algoritmo de assinatura HMAC. Por exemplo,HMAC_SHA256. Para conferir todos os algoritmos HMAC compatíveis, consulte Algoritmos de assinatura HMAC.
PROTECTION_LEVEL como
HSM_SINGLE_TENANT e adicione a flag --crypto-key-backend ao comando
kms keys 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": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM_SINGLE_TENANT",
"algorithm": "ALGORITHM",
"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME" }}'
Substitua:
INSTANCE_PROJECT: o identificador do projeto em que sua instância do Cloud HSM de locatário único existe.INSTANCE_NAME: o nome da instância do Cloud HSM de locatário único em que você quer criar a chave. Para mais informações sobre instâncias de HSM de locatário único do Cloud, consulte Criar e gerenciar uma instância de HSM de locatário único do Cloud.
Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.
Criar uma chave de criptografia simétrica com rotação automática personalizada
Ao criar uma chave, é possível especificar o período de rotação, que é o tempo entre a criação automática de novas versões de chave. Também é possível especificar de forma independente o próximo tempo de rotação para que ele ocorra antes ou depois de um período de rotação a partir de agora.
Console
Quando você usa o console Google Cloud para criar uma chave, o Cloud KMS define automaticamente o período de rotação e o próximo tempo de rotação. 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.