Google Key Management (GCP KMS): Guía de inicio

Asegurar datos es una prioridad principal para cualquier organización, y el cifrado es una de las formas más efectivas de proteger los datos. Pero, ¿cómo exactamente? Google Cloud Platform (GCP) ofrece un servicio de gestión de claves llamado Google Key Management Service (KMS), que te permite crear y gestionar rápidamente claves de cifrado.

En este tutorial, aprenderás cómo crear y utilizar una clave en GCP KMS. También repasarás algunos conceptos importantes relacionados con la gestión de claves, como claves, anillos de claves y versiones de claves.

¿Listo? ¡Continúa leyendo y lleva la seguridad de tus datos al siguiente nivel!

Requisitos previos

Este tutorial será una demostración práctica. Para seguirlo, asegúrate de tener una cuenta de GCP con facturación activa, aunque una prueba gratuita sería suficiente.

A Google Cloud Project is a collection of resources you create and manage in GCP. Note that you should create separate projects for each of your applications. Doing so lets you efficiently manage the resources for each application. In the end, you can delete all the resources associated with a project, which is helpful for clean-up.

Para crear un nuevo proyecto en Google Cloud:

1. Abre tu navegador web favorito e inicia sesión en la Consola de GCP. Al igual que la consola de AWS, la consola de GCP es una interfaz basada en web para administrar tus recursos en Google Cloud.

2. En tu consola de GCP, navega hasta la página de Administrar recursos, donde puedes ver y gestionar todos tus proyectos existentes.

3. A continuación, haz clic en el botón CREAR PROYECTO para crear un nuevo proyecto.

Creating a new Google Cloud project

Por último, configura los siguientes ajustes para tu nuevo proyecto y haz clic en CREAR para crearlo.

  • Nombre del proyecto – Ingresa un nombre para tu proyecto, que no necesita ser único y puede cambiarse más tarde. La elección de este tutorial para el nombre del proyecto es gcp-kms-demo.

  • Ubicación – Selecciona la organización principal o la carpeta donde deseas que se cree este proyecto. Tu proyecto recién creado será el principal. Pero puedes omitir este campo si no tienes una organización.

Es posible que el campo de Ubicación no aparezca si utilizas una cuenta de prueba.

Configuring a new Google Cloud project

Si tienes éxito, verás tu proyecto de Google Cloud recién creado en la lista, como se muestra a continuación.

Viewing the newly-created Google Cloud project

Habilitar la API de Cloud KMS para el proyecto de Google Cloud

Acabas de crear tu primer proyecto en la nube de Google, y normalmente no puedes dejarlo sin protección. ¡No te preocupes! La API de Cloud KMS es un conjunto de APIs de cifrado proporcionadas por Google que puedes utilizar para proteger tus datos.

Para utilizar la API de Cloud KMS, necesitas habilitarla para tu proyecto:

1. Ve a la página de selector de proyectos de Google y selecciona tu proyecto de Google Cloud (gcp-kms-demo).

Selecting a project

2. A continuación, ve a la página Habilitar acceso a la API y haz clic en SIGUIENTE para confirmar la habilitación de la API para el proyecto seleccionado.

Confirming the selected Google Cloud project

3. Ahora, haz clic en HABILITAR para habilitar la API de Cloud KMS.

Enabling the Cloud KMS API

En este punto, la API de Cloud KMS está habilitada para tu proyecto. Ahora puedes empezar a usar la API de Cloud KSM para crear y gestionar claves de encriptación.

Verifying the Cloud KMS API is enabled

Comenzando con Cloud Shell para Crear Claves y Anillos de Clave

Al habilitar la API de Cloud KMS, te preparas para crear claves y anillos de clave para encriptar y desencriptar tus datos. Las claves y los anillos de clave son conceptos fundamentales en Cloud KMS.

Key A key is an encryption key stored in a keyring that you can use to encrypt and decrypt your data. Each key has a name, and the name must be unique within the keyring. You can use IAM ( Identity and Access Management) policies to control who has access to keys.
Keyring A keyring is a container in Cloud KMS that holds a set of keys. You can think of the keyring as a folder on your computer that contains many files. But in essence, a keyring holds a set of keys in a specific Cloud KMS location.

Pero antes de crear claves y anillos de clave, primero debes iniciar el Cloud Shell. El Cloud Shell es una interfaz de línea de comandos gratuita e interactiva que puedes utilizar para ejecutar comandos en la Plataforma de Google Cloud sin instalar ninguna herramienta en tu máquina.

1. En la Consola de GCP, haz clic en el botón Activar Cloud Shell (arriba a la derecha), como se muestra a continuación, para iniciar el Cloud Shell.

Starting the Cloud Shell

A Cloud Shell session initializes, as shown below (at the bottom of the page), where you can run commands.

Viewing the Cloud Shell prompt

2. A continuación, ejecuta el siguiente comando gcloud en el Cloud Shell para crear un nuevo anillo de clave (keyring) llamado kms-demo-keyring en la ubicación global.

gcloud kms keyrings create "kms-demo-keyring" \
--location "global"

–location “global”

Cuando se solicite, haz clic en AUTORIZAR para continuar ejecutando el comando.

Authorizing access to the KSM API

Esta ventana aparece la primera vez que ejecutas el comando gcloud en Cloud Shell, solicitándote autorizar la herramienta gcloud para acceder a la API de KSM.

Creating a new keyring

Como se muestra a continuación, no hay mensajes de salida cuando la llavero se crea correctamente.

Relacionado:Utiliza las Claves de Encriptación como un Experto con AWS Key Management

gcloud kms keys create "kms-demo-key01" \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --purpose "encryption"

Ten en cuenta que la ubicación (global) debe ser la misma que configuraste para el llavero.

–location “global” \

–keyring “kms-demo-keyring” \

Creating a key for encryption

–purpose “encryption”

gcloud kms keys list --location "global" --keyring "kms-demo-keyring"

Cada vez que creas o rotas una clave, Cloud KMS crea una nueva versión de la clave. Esta función te permite retroceder fácilmente a una versión anterior si es necesario.

PURPOSE ENCRYPT_DECRYPT Indicates the purpose of the key (encryption and decryption).
ALGORITHM GOOGLE_SYMMETRIC_ENCRYPTION Indicates the key uses Google Symmetric Encryption, the default algorithm for Cloud KMS keys.
PROTECTION_LEVEL SOFTWARE Indicates the key is software-protected.
LABELS You can add labels to keys to categorize them or to add additional information.
PRIMARY ID 1 Indicates the key is the primary key for the keyring, which is what Cloud KMS uses by default when you do not specify a key.

Note that you can have only one primary key per keyring.

PRIMARY STATE ENABLED Shows the current status of the key. The ENABLED state indicates the key can be used for its specified purpose.
Listing the keys in a keyring

Al igual que al crear un llavero, no hay mensajes de salida cuando la clave se crea correctamente.

Pero en este punto, ya tienes un llavero y una clave que puedes utilizar para encriptar y desencriptar tus datos.

4. Ahora, ejecuta el siguiente comando para listar las claves en un –keyring (kms-demo-keyring).

Verás una salida similar a la captura de pantalla a continuación con la siguiente información:

echo "This is some sensitive data that I want to encrypt." > gcp-kms-demo.txt

Cifrado y Descifrado de Datos con GCP KMS

El cifrado es una línea de defensa crucial para disuadir el acceso de partes malintencionadas a datos sensibles. Y ahora que tienes una clave de cifrado, puedes usarla para cifrar tus datos.
ls cat gcp-kms-demo.txt
Para cifrar datos con GCP KMS:
cat gcp-kms-demo.txt
Listing the text file and verifying the data

1. Ejecuta el siguiente comando, que no proporciona salida, pero crea un archivo de texto (gcp-kms-demo.txt) con algunos textos para cifrar.

2. Luego, ejecuta cada comando a continuación para listar (ls) el archivo de texto (gcp-kms-demo.txt) y ver (cat) su contenido para verificar los datos.

gcloud kms encrypt \
    --location "global" \
    --keyring "kms-demo-keyring" \
    --key "kms-demo-key01" \
    --plaintext-file ./gcp-kms-demo.txt \
    --ciphertext-file ./gcp-kms-demo.txt.encrypted
Encrypting data

# Lista el archivo de texto

cat gcp-kms-demo.txt.encrypted

# Ver el contenido del archivo de texto

3. Una vez verificado, ejecuta el siguiente comando para cifrar los datos en tu archivo (gcp-kms-demo.txt) usando tu clave (kms-demo-key01). Los datos cifrados luego se almacenarán en un nuevo archivo llamado gcp-kms-demo.txt.encrypted.

Verifying the file data is encrypted

–location “global” \

–keyring “kms-demo-keyring” \

gcloud kms decrypt \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01" \
  --ciphertext-file ./gcp-kms-demo.txt.encrypted \
  --plaintext-file ./gcp-kms-demo.txt.decrypted
Decrypting encrypted data

–key “kms-demo-key01” \

cat gcp-kms-demo.txt.decrypted

–plaintext-file ./gcp-kms-demo.txt \

Verifying the encrypted file has been decrypted

–ciphertext-file ./gcp-kms-demo.txt.encrypted

4. Ahora, ejecuta el siguiente comando para intentar ver los datos del archivo cifrado (gcp-kms-demo.txt.encrypted).

Verás símbolos rotos, extraños e ilegibles, como se muestra a continuación. Este resultado indica que el archivo fue cifrado correctamente.

gcloud kms keys versions list \
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01"

Debes almacenar este archivo cifrado en un lugar seguro. Por ejemplo, puedes almacenar varias copias en AWS S3, GCP Cloud Storage o Azure Blob Storage. Google Cloud no guarda la versión de texto sin formato de tus datos. Así que si pierdes el archivo cifrado, será imposible descifrar el archivo para recuperar los datos originales.

Listing all the key versions

Relacionado:Cómo Subir un Archivo a S3 con AWS CLI

5. Una vez cifrado, ejecuta el siguiente comando para descifrar tus datos (gcp-kms-demo.txt.encrypted) usando la misma clave (kms-demo-key01). Pero esta vez, los datos descifrados se almacenan en un nuevo archivo llamado gcp-kms-demo.txt.decrypted.

gcloud kms keys versions destroy 1\
  --location "global" \
  --keyring "kms-demo-keyring" \
  --key "kms-demo-key01"

Al igual que con el cifrado, este comando no proporciona una salida, pero verificarás el descifrado en el siguiente paso.

gcloud kms keys versions list

–location “global” \

–keyring “kms-demo-keyring” \

Verifying the key has been scheduled for destruction

–key “kms-demo-key01” \

Deleting the Google Cloud project

–ciphertext-file ./gcp-kms-demo.txt.encrypted \

–plaintext-file ./gcp-kms-demo.txt.decrypted

Confirming Google Cloud project deletion

6. Por último, ejecuta el siguiente comando para ver (cat) el archivo descifrado (gcp-kms-demo.txt.decrypted) y verificar que los datos se hayan descifrado correctamente.

A continuación, puedes ver los datos originales que guardaste en el archivo de texto. ¡Felicidades! Has logrado cifrar y descifrar datos exitosamente utilizando Google Cloud KMS.

Limpieza de Recursos de Google Cloud

Source:
https://adamtheautomator.com/gcp-kms/