En esta página se muestra cómo usar Cloud Key Management Service (Cloud KMS) para realizar las siguientes operaciones con claves simétricas:
- Encripta texto o contenido binario (texto sin formato) con una clave de Cloud KMS.
- Descifra el texto cifrado que se ha cifrado con una clave de Cloud KMS.
Si quieres usar una clave asimétrica para el cifrado, consulta Encriptar y desencriptar datos con una clave asimétrica. Para obtener información sobre el cifrado simétrico sin formato, consulta Cifrado simétrico sin formato.
Antes de empezar
Asegúrate de que el usuario que llama a los métodos de cifrado y descifrado tenga los permisos
cloudkms.cryptoKeyVersions.useToEncrypt
ycloudkms.cryptoKeyVersions.useToDecrypt
en la clave.Una forma de permitir que un usuario cifre o descifre es añadirlo a los roles de gestión de identidades y accesos
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
oroles/cloudkms.cryptoKeyEncrypterDecrypter
de esa clave. El rolroles/cloudkms.admin
no proporciona estos dos permisos. Para obtener más información, consulta Permisos y roles.
Cifrar
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave que quieras usar para el cifrado.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.FILE_TO_ENCRYPT
: la ruta al archivo que quieres cifrar.ENCRYPTED_OUTPUT
: la ruta en la que quieres guardar el resultado cifrado.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Cuando se usa JSON y la API REST, el contenido debe codificarse en base64 para que Cloud KMS pueda encriptarlo.
Para cifrar datos, haz una solicitud POST
y proporciona la información del proyecto y de la clave correspondientes. Además, especifica el texto codificado en base64 que quieras cifrar 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\"}"
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves y la clave que quieres usar para el cifrado.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.KEY_RING
: el conjunto de claves que contiene la clave que quieres usar para el cifrado.KEY_NAME
: el nombre de la clave que quieras usar para el cifrado.PLAINTEXT_TO_ENCRYPT
: los datos de texto sin formato que quieras cifrar. El texto sin formato debe estar codificado en Base64 antes de llamar al métodoencrypt
.
A continuación, se muestra un ejemplo de carga útil con datos codificados en base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Descifrar
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave que quieras usar para el descifrado.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.FILE_TO_DECRYPT
: la ruta al archivo que quieres descifrar.DECRYPTED_OUTPUT
: la ruta en la que quieres guardar el resultado descifrado.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
El texto descifrado que devuelve Cloud KMS en el JSON está codificado en base64.
Para descifrar datos cifrados, haz una solicitud POST
y proporciona el proyecto y la información de la clave adecuados, así como el texto cifrado (también conocido como texto cifrado) que quieras descifrar 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\"}"
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves y la clave que quieres usar para el descifrado.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.KEY_RING
: el conjunto de claves que contiene la clave que quieres usar para el descifrado.KEY_NAME
: el nombre de la clave que quieras usar para el descifrado.ENCRYPTED_DATA
: los datos cifrados que quieres descifrar.
A continuación, se muestra un ejemplo de carga útil con datos codificados en base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Siguientes pasos
- Consulta más información sobre el cifrado simétrico sin formato.
- Consulta más información sobre el cifrado envolvente.
- Prueba el codelab sobre cómo encriptar y desencriptar datos con Cloud KMS.