Esta página mostra como usar o Cloud Key Management Service (Cloud KMS) para fazer as seguintes operações de chaves simétricas:
- Encriptar texto ou conteúdo binário (texto simples) através de uma chave do Cloud KMS.
- Desencriptar texto encriptado que foi encriptado com uma chave do Cloud KMS.
Se quiser usar uma chave assimétrica para encriptação, consulte o artigo Encriptar e desencriptar dados com uma chave assimétrica. Para saber mais sobre a encriptação simétrica não processada, consulte o artigo Encriptação simétrica não processada.
Antes de começar
Certifique-se de que o utilizador que está a chamar os métodos de encriptação e desencriptação tem as autorizações
cloudkms.cryptoKeyVersions.useToEncrypt
ecloudkms.cryptoKeyVersions.useToDecrypt
na chave.Uma forma de permitir que um utilizador encripta ou desencripta é adicioná-lo às funções de IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
ouroles/cloudkms.cryptoKeyEncrypterDecrypter
para essa chave. A funçãoroles/cloudkms.admin
não concede estas duas autorizações. Para mais informações, consulte o artigo Autorizações e funções.
Encriptar
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Substitua o seguinte:
KEY_NAME
: o nome da chave que quer usar para a encriptação.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.FILE_TO_ENCRYPT
: o caminho para o ficheiro que quer encriptar.ENCRYPTED_OUTPUT
: o caminho onde quer guardar o resultado encriptado.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Google Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
Quando usa JSON e a API REST, o conteúdo tem de ser codificado em base64 antes de poder ser encriptado pelo Cloud KMS.
Para encriptar dados, faça um pedido POST
e faculte as informações do projeto e da chave adequadas, bem como especifique o texto codificado em base64 a encriptar no campo plaintext
do corpo do pedido.
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 o seguinte:
PROJECT_ID
: o ID do projeto que contém o conjunto de chaves e a chave que quer usar para a encriptação.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.KEY_RING
: o conjunto de chaves que contém a chave que quer usar para encriptação.KEY_NAME
: o nome da chave que quer usar para a encriptação.PLAINTEXT_TO_ENCRYPT
: os dados de texto simples que quer encriptar. O texto simples tem de estar codificado em Base64 antes de chamar o métodoencrypt
.
Segue-se um exemplo de payload com dados codificados em base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Desencriptar
gcloud
Para usar o Cloud KMS na linha de comandos, primeiro instale ou atualize para a versão mais recente da CLI do Google Cloud.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Substitua o seguinte:
KEY_NAME
: o nome da chave que quer usar para a desencriptação.KEY_RING
: o nome do conjunto de chaves que contém a chave.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.FILE_TO_DECRYPT
: o caminho para o ficheiro que quer descifrar.DECRYPTED_OUTPUT
: o caminho onde quer guardar o resultado descifrado.
Para ver informações sobre todas as flags e valores possíveis, execute o comando com a flag --help
.
C#
Para executar este código, primeiro configure um ambiente de desenvolvimento C# e instale o SDK C# do Cloud KMS.
Go
Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Cloud KMS.
Java
Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Cloud KMS.
Node.js
Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Cloud KMS.
PHP
Para executar este código, saiba primeiro como usar o PHP no Google Cloud e instale o SDK PHP do Cloud KMS.
Python
Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Cloud KMS.
Ruby
Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Cloud KMS.
API
Estes exemplos usam o curl como cliente HTTP para demonstrar a utilização da API. Para mais informações sobre o controlo de acesso, consulte o artigo Aceder à API Cloud KMS.
O texto descifrado devolvido no JSON do Cloud KMS está codificado em base64.
Para desencriptar dados encriptados, faça um pedido POST
e faculte as informações do projeto e da chave adequadas, bem como especifique o texto encriptado (também conhecido como texto cifrado) a desencriptar no campo ciphertext
do corpo do pedido.
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 o seguinte:
PROJECT_ID
: o ID do projeto que contém o conjunto de chaves e a chave que quer usar para a desencriptação.LOCATION
: a localização do Cloud KMS que contém o conjunto de chaves.KEY_RING
: o conjunto de chaves que contém a chave que quer usar para a desencriptação.KEY_NAME
: o nome da chave que quer usar para a desencriptação.ENCRYPTED_DATA
: os dados encriptados que quer desencriptar.
Segue-se um exemplo de payload com dados codificados em base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
O que se segue?
- Leia mais acerca da encriptação simétrica não processada.
- Leia mais acerca da encriptação de envelope.
- Experimente o Encrypt and decrypt data with Cloud KMS Codelab.