arrow_back

Empieza a usar Cloud KMS

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Empieza a usar Cloud KMS

Lab 45 minutos universal_currency_alt 1 crédito show_chart Introductorio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP079

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, aprenderás a usar algunas funciones avanzadas de las API de seguridad y privacidad de Google Cloud, como las siguientes:

  • Configuración de un bucket seguro de Cloud Storage
  • Administración de claves y datos encriptados con el servicio de administración de claves
  • Visualización de registros de auditoría en Cloud Storage

Usarás datos resumidos de Enron Corpus, que luego encriptarás y cargarás en Cloud Storage.

Qué aprenderás

  • Cómo encriptar datos y administrar claves de encriptación con Key Management Service (KMS)

Qué necesitarás

  • Cloud Storage
  • El SDK de Cloud

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1: Crea un bucket de Cloud Storage

Para almacenar los datos de este lab, deberás crear tu propio bucket en Cloud Storage.

  1. Elige un nombre para el bucket de Cloud Storage, como -enron_corpus. Si quieres obtener más información sobre cómo otorgar nombres a buckets, lee los lineamientos para otorgar nombres a los buckets de Cloud Storage. Ejecuta el comando siguiente en Cloud Shell con el objetivo de configurar una variable para el nombre del bucket:
BUCKET_NAME="{{{ project_0.project_id }}}-enron_corpus"
  1. Ahora, ejecuta el comando siguiente para crear el bucket:
gsutil mb gs://${BUCKET_NAME}

La ejecución de este comando también sirve para verificar si configuraste de forma correcta el cliente de línea de comandos gsutil, si la autenticación está funcionando y si tienes acceso de escritura al proyecto de la nube que estás usando.

  1. Una vez que hayas creado el bucket, avanza al paso siguiente para descargar el Enron Corpus.

Haz clic en Revisar mi progreso para verificar el objetivo.

Crea un bucket de Cloud Storage.

Tarea 2. Verifica los datos

Enron Corpus es una gran base de datos que cuenta con más de 600,000 correos electrónicos provenientes de 158 empleados de Enron Corporation. Estos datos se copiaron en el bucket de Cloud Storage gs://enron_emails/.

  1. Ejecuta el comando siguiente para descargar uno de los archivos fuente a nivel local y ver cómo es:
gsutil cp gs://enron_emails/allen-p/inbox/1. .
  1. Ahora, ejecuta el comando tail en el archivo descargado para verificar que el texto del correo electrónico esté allí:
tail 1.

Deberías recibir el resultado siguiente:

Attached is the Delta position for 1/18, 1/31, 6/20, 7/16, 9/24 << File: west_delta_pos.xls >> Let me know if you have any questions.

Este comando debería mostrar el contenido de un archivo de correo en texto simple. Existen dos tipos de archivos que deberás buscar: archivos de correo de texto simple y archivos de imagen. Si te interesa saber qué contienen los demás archivos, usa este mismo mecanismo.

Tarea 3: Habilita Cloud KMS

Cloud KMS es un servicio de administración de claves criptográficas de Google Cloud. Antes de usarlo, debes habilitarlo en tu proyecto. En este lab, te aprovisionarán KMS si ya lo habilitaste. Para asegurarte de ello, usa uno de los comandos de la CLI de gcloud.

  • Ejecuta el comando siguiente en tu sesión de Cloud Shell:
gcloud services enable cloudkms.googleapis.com Nota: KMS y otros servicios también se pueden habilitar en tu proyecto a través de la IU de la consola de Cloud.

No deberías haber recibido ningún resultado. Cloud KMS ya está habilitado en tu proyecto.

Tarea 4. Crea un llavero de claves y un CryptoKey

Para encriptar los datos, debes crear un llavero de claves y una clave criptográfica. Los llaveros de claves son útiles para agrupar claves. Esto se puede hacer por entorno (como test, staging y prod) o cualquier otro concepto de agrupación. En este lab, tu llavero de claves se llamará test y tu CryptoKey, qwiklab.

  1. En Cloud Shell, ejecuta el comando siguiente para configurar las variables de entorno:
KEYRING_NAME=test CRYPTOKEY_NAME=qwiklab
  1. Ejecuta el comando de gcloud para crear el llavero de claves. En este lab, usarás una ubicación global, pero también se podría configurar para una región específica.
gcloud kms keyrings create $KEYRING_NAME --location global
  1. A continuación, con el llavero de claves nuevo, crea un CryptoKey llamado qwiklab:
gcloud kms keys create $CRYPTOKEY_NAME --location global \ --keyring $KEYRING_NAME \ --purpose encryption Nota: Los CryptoKeys y los llaveros de claves no se pueden borrar en Cloud KMS.

No debería aparecer ningún resultado. Así de fácil, ya creaste un llavero de claves y un CriptoKey.

  1. Abre la Administración de claves a través de la consola; para ello, dirígete al menú de navegación > Seguridad > Administración de claves.

La IU web de la administración de claves permite visualizar y administrar los llaveros de claves y los CryptoKeys. Utilizarás la IU más adelante, cuando administres los permisos.

Haz clic en Revisar mi progreso para verificar el objetivo.

Crea un llavero de claves y un CryptoKey.

Tarea 5. Encripta tus datos

A continuación, intenta encriptar algunos datos.

  1. Toma el contenido del correo electrónico que leíste y codifícalo en base64 con el comando siguiente:
PLAINTEXT=$(cat 1. | base64 -w0) Nota: La codificación de Base64 permite enviar los datos binarios a la API como texto simple. Este comando funciona para imágenes, videos o cualquier otro tipo de datos binarios.

Con el extremo de la encriptación, puedes enviar el texto codificado en base64 que desees encriptar a la clave especificada.

  1. Ejecuta lo siguiente:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type: application/json" Nota: La acción encrypt mostrará un resultado distinto cada vez, incluso cuando uses el mismo texto y la misma clave.

La respuesta será una carga útil de JSON que contendrá el texto encriptado en el atributo ciphertext.

  1. Ahora que encriptaste tus datos, puedes guardarlos en un archivo y subirlos a tu bucket de Cloud Storage. Si deseas tomar el texto encriptado de la respuesta de JSON y guardarlo en un archivo, usa la utilidad de línea de comandos jq. La respuesta de la llamada anterior se puede canalizar a jq, que puede analizar la propiedad ciphertext en el archivo 1.encrypted. Ejecuta lo siguiente:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .ciphertext -r > 1.encrypted
  1. Para verificar si los datos encriptados se pueden desencriptar, llama al extremo decrypt y comprueba que el texto desencriptado coincida con el correo electrónico original. Los datos encriptados tienen información sobre la versión de la clave criptográfica que se usó para encriptarlos, por lo que la versión específica nunca se proporciona al extremo desencriptado. Ejecuta lo siguiente:
curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:decrypt" \ -d "{\"ciphertext\":\"$(cat 1.encrypted)\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)"\ -H "Content-Type:application/json" \ | jq .plaintext -r | base64 -d Nota: En general, la desencriptación se lleva a cabo en la capa de aplicación. Para ver una explicación sobre cómo encriptar y desencriptar datos en varios lenguajes de programación, lee la Guía de inicio rápido de Cloud KMS.
  1. Ahora que comprobaste que el texto se encriptó con éxito, sube el archivo encriptado al bucket de Cloud Storage.
gsutil cp 1.encrypted gs://${BUCKET_NAME}

Haz clic en Revisar mi progreso para verificar el objetivo.

Encripta tus datos con la clave de Cloud KMS y súbelos al bucket de almacenamiento.

Tarea 6. Configura los permisos de IAM

En KMS, existen dos permisos principales en los que debes enfocarte. Uno le permite a un usuario o a una cuenta de servicio administrar los recursos de KMS, mientras que el otro les permite usar claves para encriptar o desencriptar datos.

El permiso para administrar las claves es cloudkms.admin y permite que cualquier persona que lo tenga cree un llavero de claves y, además, cree, modifique, inhabilite o destruya claves criptográficas. El permiso para encriptar y desencriptar es cloudkms.cryptoKeyEncrypterDecrypter y se utiliza a fin de llamar a los extremos de la API de encriptación y desencriptación.

En este ejercicio, utilizarás el usuario actual autorizado para asignar permisos de IAM.

  1. Para obtener el usuario autorizado actual, ejecuta el comando siguiente:
USER_EMAIL=$(gcloud auth list --limit=1 2>/dev/null | grep '@' | awk '{print $2}')
  1. Luego, asigna al usuario la capacidad de administrar recursos de KMS. Ejecuta el comando siguiente de gcloud con el objetivo de asignar el permiso de IAM para administrar el llavero de claves que acabas de crear:
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.admin

Debido a que los CryptoKeys pertenecen a los llaveros de claves, y los llaveros de claves pertenecen a los proyectos, un usuario con un rol o permiso específico en un nivel superior de la jerarquía recibe los mismos permisos en los recursos secundarios. Por ejemplo, un usuario que tiene la función de propietario del proyecto también es propietario de todos los llaveros de claves y las claves criptográficas del proyecto. De manera similar, si un usuario recibe la función de cloudkms.admin en un llavero de claves, tiene los permisos asociados para las claves criptográficas del llavero de claves.

Sin el permiso cloudkms.cryptoKeyEncrypterDecrypter, el usuario autorizado no podrá utilizar las claves para encriptar o desencriptar datos.

  1. Ejecuta el comando siguiente de gcloud con el objetivo de asignar el permiso de IAM y encriptar o desencriptar datos de cualquier CryptoKey en el llavero de claves que creaste:
gcloud kms keyrings add-iam-policy-binding $KEYRING_NAME \ --location global \ --member user:$USER_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Ahora puedes ver los permisos asignados en la sección Claves criptográficas de la Administración de claves.

  1. Marca la casilla junto al nombre del llavero de claves (test) y, luego, haz clic en Principales en el panel de información de la derecha.

De esta forma, se abrirá un menú en el que podrás ver las cuentas y los permisos del llavero de claves que acabas de agregar.

Tarea 7. Crea una copia de seguridad de los datos en la línea de comandos

Ahora que ya sabes cómo encriptar un solo archivo y tienes los permisos para hacerlo, puedes ejecutar una secuencia de comandos con el objetivo de crear una copia de seguridad de todos los archivos de un directorio. En este caso, copia todos los correos electrónicos para allen-p, encríptalos y súbelos a un bucket de Cloud Storage.

  1. Primero, copia todos los correos electrónicos para allen-p en tu directorio de trabajo actual:
gsutil -m cp -r gs://enron_emails/allen-p .
  1. Luego, copia y pega lo siguiente en Cloud Shell para crear una copia de seguridad y encriptar todos los archivos del directorio allen-p en el bucket de Cloud Storage:
MYDIR=allen-p FILES=$(find $MYDIR -type f -not -name "*.encrypted") for file in $FILES; do PLAINTEXT=$(cat $file | base64 -w0) curl -v "https://cloudkms.googleapis.com/v1/projects/$DEVSHELL_PROJECT_ID/locations/global/keyRings/$KEYRING_NAME/cryptoKeys/$CRYPTOKEY_NAME:encrypt" \ -d "{\"plaintext\":\"$PLAINTEXT\"}" \ -H "Authorization:Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type:application/json" \ | jq .ciphertext -r > $file.encrypted done gsutil -m cp allen-p/inbox/*.encrypted gs://${BUCKET_NAME}/allen-p/inbox

Esta secuencia de comandos aplica un bucle a todos los archivos de un directorio específico, los encripta con la API de KMS y los sube a Cloud Storage.

Haz clic en Revisar mi progreso para verificar el objetivo.

Encripta varios archivos con la API de KMS y súbelos a Cloud Storage.

Luego de que se complete la secuencia de comandos, podrás ver los archivos encriptados si haces clic en Almacenamiento, en el menú de la izquierda de la consola.

  1. Para encontrar los archivos, ve al menú de navegación > Cloud Storage > Buckets > YOUR_BUCKET > allen-p > inbox. Deberías ver algo como esto:

Contenido del bucket

Nota: Cloud Storage es compatible con la encriptación del servidor, que permite rotar las claves de tus datos, y es la opción recomendada para encriptar datos en Cloud Storage. El ejemplo anterior es solo de muestra.

Tarea 8. Visualiza los Registros de auditoría de Cloud

Google Cloud Audit Logging consiste en dos transmisiones de registros, Admin Activity y Data Access, que se generan a través de los servicios de Google Cloud para ayudarte a responder la pregunta “¿Quién hizo qué, dónde y cuándo?” en tus proyectos de Google Cloud.

  • Para ver la actividad de cualquier recurso en KMS, ve al menú de navegación > Descripción general de Cloud > pestaña Actividad. Esto te llevará a la IU de Cloud Activity. Luego, haz clic en View Log Explorer, selecciona Llavero de claves KMS de Cloud como el Tipo de recurso y deberías ver la creación del llavero de claves y todas sus modificaciones.

Encriptaste y subiste datos con KMS y Cloud Storage.

Temas abordados

  • Uso de IAM para administrar permisos de KMS
  • Uso de KMS para encriptar datos
  • Uso de Cloud Storage para almacenar datos encriptados
  • Uso de Cloud Audit Logging para ver toda la actividad de los CryptoKeys y los llaveros de claves

Tarea 9. Pon a prueba tus conocimientos

Completa este cuestionario para poner a prueba tus conocimientos sobre Cloud KMS.

¡Felicitaciones!

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest Security & Identity Fundamentals. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest o en cualquiera que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Completa el próximo lab

Continúa tu Quest con Setting up a Private Kubernetes Cluster o prueba alguno de los otros labs de Cloud Skills Boost:

Pasos siguientes y más información

Actualización más reciente del manual: 31 de agosto de 2023

Prueba más reciente del lab: 31 de agosto de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.