1. Descripción general
Cloud KMS es un servicio de administración de claves alojado en la nube que te permite administrar las claves criptográficas de tus servicios de nube de la misma manera que lo haces en tus instalaciones. Incluye compatibilidad con la encriptación, desencriptación, firma y verificación con una variedad de tipos de claves y fuentes, incluido Cloud HSM para claves guardadas en hardware. En este instructivo, aprenderás a encriptar y desencriptar datos con claves asimétricas de Cloud KMS.
Aprenderás
- Cómo habilitar la API de Cloud KMS
- Cómo crear un llavero de claves
- Cómo crear una clave criptográfica para encriptación o desencriptación asimétrica
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. (Si todavía no tienes una cuenta de Gmail o de G Suite, debes crear una).
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.
Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza” en la que se aconseja cómo cerrar recursos para no incurrir en facturación más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Inicia Cloud Shell
En este codelab, usarás Cloud Shell, un entorno virtualizado gratuito que se ejecuta en Google Cloud. En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. A menos que se indique lo contrario, ejecuta todos los comandos de esta shell.
3. Habilita el servicio de Cloud KMS
Antes de poder usar Cloud KMS, debes habilitar el servicio en tu proyecto. Esto solo se debe hacer una vez por proyecto. Para habilitar el servicio de Cloud KMS, ejecuta el siguiente comando:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
La habilitación puede tardar hasta un minuto. El comando informará que la operación se realizó correctamente cuando finalice.
4. Crear clave de KMS
Crea un llavero de claves de Cloud KMS. En Cloud KMS, un llavero de claves es una colección lógica de claves criptográficas. El llavero de claves contiene metadatos sobre las claves, como su ubicación. Crea un llavero de claves con el nombre my-keyring
en la región global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Ahora, crea una clave criptográfica llamada my-asymmetric-encryption-key
con el propósito asymmetric-encryption
dentro del llavero de claves que acabas de crear.
$ gcloud kms keys create "my-asymmetric-encryption-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. Encriptar datos
Con las claves asimétricas, Cloud KMS no realiza la encriptación. En cambio, proporciona acceso a una clave pública, y tú encriptas los datos con esa clave pública a través de criptografía de clave pública. Con las claves asimétricas, la encriptación se puede realizar completamente sin conexión y no requiere acceso a Cloud KMS ni a ninguna otra API de Google Cloud. La encriptación se realiza con una herramienta criptográfica, como openssl
, o con un lenguaje de programación o biblioteca que admite criptografía de claves públicas.
Descarga la clave pública desde Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --output-file ./key.pub
Crea un archivo con datos para encriptar y usa la herramienta de línea de comandos de openssl
para encriptar los datos del archivo:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \ -in ./data.txt \ -inkey ./key.pub \ -pkeyopt "rsa_padding_mode:oaep" \ -pkeyopt "rsa_oaep_md:sha512" \ -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
Los datos encriptados (también conocidos como “texto cifrado”) se guardarán en data.txt.enc
en el disco. Si abres el archivo data.txt.enc
, notarás que tiene caracteres extraños que no se pueden imprimir. Esto se debe a que los datos resultantes están en formato binario.
Cuando almacenes el texto cifrado en una base de datos o lo transmitas como parte de una solicitud HTTP, es posible que debas codificar los datos. El mecanismo de codificación más común para texto cifrado es base64.
Cloud KMS no almacena nada del texto simple que proporcionas. Debes guardar este texto cifrado en una ubicación segura, ya que será necesario para recuperar el valor de texto sin formato.
6. Desencriptar datos
A diferencia de la encriptación, desencriptar datos que se encriptaron con una clave asimétrica de Cloud KMS requiere acceso en línea al servicio de Cloud KMS. Desencripta el texto cifrado del archivo con la herramienta de línea de comandos de gcloud
:
$ gcloud kms asymmetric-decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --version "1" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
La herramienta de línea de comandos de gcloud
lee el texto cifrado del archivo y lo desencripta con Cloud KMS. Observa que este ejemplo especifica el argumento --plaintext-file
como -
. Esto le indica a gcloud
que imprima el resultado en la terminal.
La consola imprimirá my-contents
, que es el mismo valor de texto sin formato del archivo anterior.
7. ¡Felicitaciones!
Habilitaste la API de Cloud KMS, creaste una clave de encriptación asimétrica y encriptaste y desencriptaste datos. Cloud KMS es un producto potente, y la encriptación/desencriptación es solo una parte de sus capacidades.
Realiza una limpieza
Si terminaste de explorar, considera borrar tu proyecto.
- Ve a la consola de Google Cloud.
- Selecciona el proyecto que deseas cerrar y haz clic en “Borrar”. en la parte superior. Esto programa la eliminación del proyecto.
Más información
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.