En esta página, se muestra cómo usar Cloud Key Management Service (Cloud KMS) para realizar las siguientes operaciones con claves simétricas:
- Encriptar texto o contenido binario (texto sin formato) con una clave de Cloud KMS
- Desencriptar cifrado que se encriptó con una clave de Cloud KMS
Si quieres usar una clave asimétrica para la encriptación, consulta Encripta y desencripta datos con una clave asimétrica. Para obtener información sobre la encriptación simétrica sin procesar, consulta encriptación simétrica sin procesar.
Antes de comenzar
Asegúrate de que el usuario que llama a los métodos de encriptación y desencriptación tenga los permisos
cloudkms.cryptoKeyVersions.useToEncrypt
ycloudkms.cryptoKeyVersions.useToDecrypt
sobre la clave.Una forma de permitirle a un usuario que encripte o desencripte es agregar el usuario a las funciones de IAM
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
para esa clave. El rolroles/cloudkms.admin
no proporciona estos dos permisos. Para obtener más información, consulta el artículo sobre permisos y funciones.
Encriptar
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.FILE_TO_ENCRYPT
: Es la ruta de acceso al archivo que deseas encriptar.ENCRYPTED_OUTPUT
: Es la ruta de acceso en la que deseas guardar el resultado encriptado.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
PHP
Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Cuando usas JSON y la API de REST, debes codificar el contenido en Base64 antes de que pueda encriptarlo Cloud KMS.
Para encriptar datos, realiza una solicitud POST
, proporciona la información del proyecto y la clave que corresponda, y especifica el texto codificado en Base64 que se encriptará en el campo plaintext
del cuerpo de la solicitud.
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\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero y la clave que deseas usar para la encriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar para la encriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.PLAINTEXT_TO_ENCRYPT
: Son los datos de texto simple que deseas encriptar. El texto simple debe estar codificado en Base64 antes de llamar al métodoencrypt
.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Decrypt
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.FILE_TO_DECRYPT
: Es la ruta de acceso al archivo que deseas desencriptar.DECRYPTED_OUTPUT
: La ruta de acceso en la que deseas guardar el resultado desencriptado.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
C#
Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
Node.js
Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.
PHP
Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
El texto desencriptado que se muestra en el archivo JSON de Cloud KMS está codificado en base64.
Para desencriptar datos encriptados, haz una solicitud POST
y proporciona la información del proyecto y de la clave correspondientes, y especifica el texto encriptado (también conocido como texto cifrado) que se desencriptará en el campo ciphertext
del cuerpo de la solicitud.
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\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero y la clave que deseas usar para la desencriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar para la desencriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.ENCRYPTED_DATA
: Son los datos encriptados que deseas desencriptar.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
¿Qué sigue?
- Obtén más información sobre la encriptación simétrica sin procesar.
- Lee más sobre la encriptación de sobre.
- Prueba los datos de encriptación y desencriptación con Codelab de Cloud KMS.