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.useToEncryptecloudkms.cryptoKeyVersions.useToDecryptna chave.Uma forma de permitir que um utilizador encripta ou desencripta é adicioná-lo às funções de IAM
roles/cloudkms.cryptoKeyEncrypter,roles/cloudkms.cryptoKeyDecrypterouroles/cloudkms.cryptoKeyEncrypterDecrypterpara essa chave. A funçãoroles/cloudkms.adminnã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.