Esta página mostra como usar o Cloud Key Management Service (Cloud KMS) para realizar as seguintes operações de chave simétrica:
- Criptografar texto ou conteúdo binário (texto simples) usando uma instância do Cloud KMS de dados.
- Descriptografar texto cifrado que foi criptografado com uma chave do Cloud KMS.
Se você quiser usar uma chave assimétrica para criptografia, consulte Criptografia e descriptografar dados com uma chave assimétrica. Para saber mais sobre a criptografia simétrica bruta, consulte Criptografia simétrica bruta.
Antes de começar
Verifique se o usuário que está chamando os métodos de criptografia e descriptografia tem as permissões
cloudkms.cryptoKeyVersions.useToEncrypt
ecloudkms.cryptoKeyVersions.useToDecrypt
na chave.Uma maneira de permitir que um usuário criptografe ou descriptografe é adicionar o usuário aos papéis de IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
ouroles/cloudkms.cryptoKeyEncrypterDecrypter
dessa chave. O papelroles/cloudkms.admin
não concede essas duas permissões. Para mais informações, consulte Permissões e papéis.
Encrypt
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 a chave. anelFILE_TO_ENCRYPT
: o caminho para o arquivo que você quer e criptografia.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 JSON e a API REST, o conteúdo precisa ser codificado em base64 antes de poder criptografados pelo Cloud KMS.
Para criptografar os dados, faça uma solicitação POST
e forneça o projeto e o
informações importantes e especificam o texto codificado em base64 a ser criptografado no
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 chaveiro e a chave que você quer usar para criptografia.LOCATION
: o local do Cloud KMS que contém a chave. anelKEY_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=", }
Decrypt
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 do Cloud KMS no JSON é codificada em base64.
Para descriptografar dados, faça uma solicitação POST
e forneça o
informações importantes do projeto e especificar o texto criptografado (também conhecido como
ciphertext) sejam descriptografados 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 que você quer usar para descriptografia.LOCATION
: o local do Cloud KMS que contém a chave. anelKEY_RING
: o keyring que contém a chave que você quer usar para descriptografia.KEY_NAME
: o nome da chave que você quer usar para descriptografia.ENCRYPTED_DATA
: os dados criptografados que você quer para descriptografar.
Veja um exemplo de payload com dados codificados em base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
A seguir
- Leia mais sobre a criptografia simétrica bruta.
- Leia mais sobre criptografia de envelope.
- Confira o codelab Criptografar e descriptografar dados com o Cloud KMS.