Neste tópico, você terá uma visão geral do Cloud HSM e verá como criar e usar chaves de criptografia protegidas por HSM no Cloud Key Management Service.
O que é Cloud HSM?
O Cloud HSM é um serviço de módulo de segurança de hardware (HSM, na sigla em inglês) hospedado na nuvem que permite hospedar chaves de criptografia e executar operações criptográficas em um cluster de HSMs com certificação FIPS 140-2 nível 3 (link em inglês). O cluster do HSM é gerenciado pelo Google, e você não precisa se preocupar com o clustering, o escalonamento ou a aplicação de patches. Como o Cloud HSM usa o Cloud KMS como front-end, é possível aproveitar todas as conveniências e recursos que o Cloud KMS oferece.
Criar um keyring
Ao criar uma chave, você a adiciona a um keyring em um determinado local do Google Cloud. Você pode criar um novo keyring ou usar um atual. Neste tópico, você cria um novo keyring e adiciona uma nova chave a ele.
Crie um keyring em um local do Google Cloud compatível com o Cloud HSM.
Console
Acesse a página Gerenciamento de chaves no console do Google Cloud.
Clique em Criar keyring.
Em Nome do keyring, digite um nome para ele.
Em Local do keyring, selecione um local como
"us-east1"
.Clique em Criar.
gcloud
-
No Console do Google Cloud, ative o Cloud Shell.
-
No seu ambiente, execute o comando
gcloud kms keyrings create
:gcloud kms keyrings create KEY_RING \ --location LOCATION
Substitua:
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 Google Cloud e instalar 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.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
Substitua:
PROJECT_ID
: o ID do projeto que contém o keyring.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS do keyring.
Consulte a documentação da API KeyRing.create
para mais informações.
Crie uma chave
Siga estas etapas para criar uma chave do Cloud HSM no keyring e no local de keying especificados.
Console
Acesse a página Gerenciamento de chaves no console do Google Cloud.
Clique no nome do keyring em que a chave será criada.
Clique em Criar chave.
Em Que tipo de chave você quer criar?, escolha Chave gerada.
No campo Nome da chave, insira o nome da sua chave.
Clique na lista suspensa Nível de proteção e selecione HSM.
Clique no menu suspenso Finalidade e selecione Criptografar/descriptografar simétrico.
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.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Substitua key por um nome para a nova chave. Substitua key-ring pelo nome do keyring atual em que a chave estará localizada. Substitua location pelo local do Cloud KMS para o 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 Google Cloud e instalar 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.
Criptografar dados
Agora que você tem uma chave, basta usá-la para criptografar um texto ou conteúdo binário.
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 encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Substitua key pelo nome da chave a ser usada para criptografia. Substitua key-ring pelo nome do keyring em que a chave está localizada. Substitua location pelo local do Cloud KMS do keyring. Substitua file-with-data-to-encrypt e file-to-store-encrypted-data pelos caminhos de arquivo local para ler os dados de texto simples e salvar a saída criptografada.
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 Google Cloud e instalar 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.
Ao usar o JSON e a API REST, o conteúdo precisa ser codificado em Base64 antes de ser criptografado pelo Cloud KMS.
Para criptografar dados, faça uma solicitação POST
e forneça as informações apropriadas do projeto e da chave. Além disso, especifique o texto codificado em base64 a ser criptografado no campo plaintext
do corpo da solicitação.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Veja um exemplo de payload com dados codificados em base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Descriptografar texto
Para fazer isso, use a mesma chave com que o conteúdo foi criptografado.
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 decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Substitua key pelo nome da chave a ser usada para descriptografia. Substitua key-ring pelo nome do keyring em que a chave estará localizada. Substitua location pelo local do Cloud KMS para o keyring. Substitua file-path-with-encrypted-data e file-path-to-store-plaintext pelos caminhos de arquivo locais para ler os dados criptografados e salvar a saída descriptografada.
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 Google Cloud e instalar 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.
O texto descriptografado retornado no JSON do Cloud KMS é codificado em base64.
Para descriptografar dados criptografados, crie uma solicitação POST
e forneça as informações apropriadas do projeto e da chave. Além disso, especifique o texto criptografado a ser descriptografado no campo ciphertext
do corpo da solicitação.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Veja um exemplo de payload com dados codificados em base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Próximas etapas
O exemplo de criptografia neste tópico usou uma chave simétrica com o nível de proteção do HSM. Para criptografar usando uma chave assimétrica com o nível de proteção do HSM, siga as etapas em Como criptografar e descriptografar dados com uma chave assimétrica com estas alterações:
- Crie o keyring em uma das regiões compatíveis com o Cloud HSM.
- Crie a chave com o nível de proteção do HSM.
Para usar uma chave assimétrica com o nível de proteção do HSM para assinatura de curva elíptica ou assinatura RSA, siga as etapas em Criar e validar assinaturas com estas alterações:
- Crie o keyring em uma das regiões compatíveis com o Cloud HSM.
- Crie a chave com o nível de proteção do HSM.
Comece a usar a API.
Dê uma olhada na Referência da API do Cloud KMS.
Leia os Guias de instruções para começar a criar, fazer rotação e definir permissões nas chaves.
Leia a seção Conceitos para entender melhor a hierarquia de objetos, os estados e a rotação de chaves.
Saiba mais sobre a geração de registros no Cloud KMS. A geração de registros é baseada em operações e se aplica a chaves com níveis de proteção de HSM e software.
Saiba como o Cloud HSM protege seus dados no artigo sobre a arquitetura do Cloud HSM.
Limitações conhecidas
O tamanho da mensagem é limitado a 8 KiB (em vez de 64 KiB para chaves de software do Cloud KMS) para texto simples e texto criptografado fornecido pelo usuário, incluindo os dados autenticados adicionais.
O Cloud HSM pode não estar disponível em determinadas regiões ou duas regiões. Para mais detalhes, consulte as regiões compatíveis com o Cloud HSM.
Se você usa chaves do Cloud HSM com integrações de chave de criptografia gerenciada pelo cliente (CMEK) em outros serviços do Google Cloud, os locais usados para os serviços precisam corresponder exatamente aos locais das suas chaves do Cloud HSM. Isso se aplica a locais regionais, birregionais e multirregionais.
Para mais informações sobre integrações do CMEK, consulte a seção relevante de Criptografia em repouso.
Atualmente, as operações de chave para chaves assimétricas armazenadas no Cloud HSM podem gerar uma latência visivelmente maior em comparação com o uso de chaves de software do Cloud KMS.
HSM com Rack Bare Metal
O Google Cloud oferece mais opções de HSM, como locatário único. O Bare Metal Rack HSM está disponível para que os clientes hospedem os próprios HSMs no espaço fornecido pelo Google. Peça mais informações ao representante da sua conta.