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 chave do Cloud KMS.
- Descriptografar texto cifrado que foi criptografado com uma chave do Cloud KMS.
Se você quiser usar uma chave assimétrica para criptografia, consulte Como criptografar 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 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=", }
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 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...", }
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.