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 Hardware Security Module (HSM) hospedado na nuvem que permite hospedar chaves de criptografia e executar operações criptográficas em um cluster de HSMs certificados FIPS 140-2 de nível 3. O Google gerencia o cluster do HSM para você, e você não precisa se preocupar com o armazenamento em cluster, o escalonamento ou a aplicação de patches. Como o Cloud HSM usa o Cloud KMS como front-end, você aproveita todas as conveniências e recursos do Cloud KMS.
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 o nome do keyring.
Em Local do keyring, selecione um local como
"us-east1"
.Clique em Criar.
gcloud
-
In the Google Cloud console, activate 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_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Substitua:
KEY_NAME
: o nome da chave que você quer usar para criptografia.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS que contém o keyring.FILE_TO_ENCRYPT
: o caminho para o arquivo que você quer criptografar.ENCRYPTED_OUTPUT
: o caminho em que você quer 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/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Substitua:
PROJECT_ID
: o ID do projeto que contém o keyring e a chave que você quer usar para criptografia.LOCATION
: o local do Cloud KMS que contém o keyring.KEY_RING
: o keyring que contém a chave que você quer usar para criptografia.KEY_NAME
: o nome da chave que você quer usar para criptografia.PLAINTEXT_TO_ENCRYPT
: os dados de texto simples que você quer criptografar. O texto simples precisa ser codificado em base64 antes de chamar o métodoencrypt
.
Confira 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_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Substitua:
KEY_NAME
: o nome da chave que você quer usar para descriptografar.KEY_RING
: o nome do keyring que contém a chave.LOCATION
: o local do Cloud KMS que contém o keyring.FILE_TO_DECRYPT
: o caminho para o arquivo que você quer descriptografar.DECRYPTED_OUTPUT
: o caminho em que você quer 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 (também conhecido como
ciphertext) 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/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Substitua:
PROJECT_ID
: o ID do projeto que contém o keyring e a chave que você quer usar para descriptografar.LOCATION
: o local do Cloud KMS que contém o keyring.KEY_RING
: o keyring que contém a chave que você quer usar para descriptografar.KEY_NAME
: o nome da chave que você quer usar para descriptografar.ENCRYPTED_DATA
: os dados criptografados que você quer descriptografar.
Confira 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 Conceitos para entender melhor a hierarquia de objetos, estados e 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 mais sobre como o Cloud HSM protege seus dados no documento técnico sobre a arquitetura do Cloud HSM.
Limitações conhecidas
O tamanho da mensagem é limitado a 8 KiB (em comparação com os 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ê usar chaves do Cloud HSM com integrações de chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) em outros serviços do Google Cloud, os locais usados para os serviços precisarão corresponder exatamente aos locais das 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 principais para chaves assimétricas armazenadas no Cloud HSM podem resultar em uma latência perceptivelmente maior em comparação com o uso de chaves do software do Cloud KMS.
Rack Bare Metal HSM
O Google Cloud oferece mais opções de HSM, como locatário único. O HSM de rack bare metal está disponível para que os clientes hospedem os próprios HSMs em um espaço fornecido pelo Google. Entre em contato com seu representante de conta para mais informações.