Como Cloud Architect, sabes que el almacenamiento es uno de los recursos más importantes de toda organización. En tu empresa, cada día se generan, se modifican y se accede a miles de documentos nuevos. Debes establecer un plan de recuperación ante desastres exitoso para almacenar copias de seguridad y crear una arquitectura redundante que incluya los siguientes elementos:
- Almacenamiento a nivel del objeto seguro, escalable y con alta disponibilidad
- Control de acceso detallado
- Control de versiones
- Capacidades de administración del ciclo de vida
- Sincronización directa entre los directorios locales y en la nube
En Amazon Web Services (AWS), usas Simple Storage Service (S3) como tu solución de almacenamiento de objetos.
Para el control de acceso detallado, se usa una combinación de políticas de bucket, políticas de Identity and Access Management (IAM) y listas de control de acceso (LCA) para administrar quién tiene acceso a un bucket completo y a objetos individuales. Dentro de un bucket de S3, los objetos también se pueden encriptar con claves de encriptación administradas por AWS o por el cliente, lo que proporciona una capa adicional de seguridad.
El control de versiones se configura para evitar la eliminación accidental y la sustitución de archivos importantes. También puedes optimizar los costos configurando políticas de ciclo de vida que transfieran automáticamente objetos de una clase de almacenamiento a otra según los patrones de acceso. Para la sincronización de directorios, puedes duplicar las ubicaciones para garantizar que los cambios en las fuentes se reflejen en el destino, lo que te permite replicar tus datos.

Ahora, explorarás las diversas funciones de Cloud Storage que permiten almacenar datos de forma segura en Google Cloud usando la consola de Cloud y la herramienta gsutil.
Descripción general
Cloud Storage es un recurso fundamental de Google Cloud que ofrece una gran variedad de funciones avanzadas. En este lab, aplicarás muchas funciones de Cloud Storage que podrían ser útiles en tus diseños. Explorarás Cloud Storage con la consola y la herramienta gsutil.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
- Crear y usar depósitos
- Establecer listas de control de acceso para restringir el acceso
- Usar sus propias claves de encriptación
- Implementar controles de versiones
- Usar la sincronización de directorios
Configuración de Qwiklabs
En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu 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 Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda.
Tarea 1: Preparación
En la tarea, crearás un bucket de Cloud Storage. Luego, descargarás un archivo de muestra que usarás en la siguiente tarea.
Crea un bucket de Cloud Storage
- En la consola de Google Cloud, en el menú de navegación (
), haz clic en Cloud Storage > Buckets.
Nota: Los nombres de los buckets deben ser únicos a nivel global. Puedes usar parte de tu PROJECT_ID_1
en el nombre para hacer que sea único. Por ejemplo, si el PROJECT_ID_1
es myproj-154920
, el nombre de tu bucket podría ser storecore154920
.
- Haz clic en Crear.
- Especifica lo siguiente y deja los parámetros de configuración restantes con sus valores predeterminados:
Propiedad |
Valor (escribe el valor o selecciona la opción como se especifica) |
Nombre |
Ingresa un nombre global único |
Tipo de ubicación |
Región |
Región |
|
Aplicar la prevención de acceso público a este bucket |
desmarcada |
Control de acceso |
Detallado (permisos a nivel de objeto, además de permisos a nivel del bucket) |
- Toma nota del nombre del bucket. Se usará más adelante en este lab y se lo llamará [BUCKET_NAME_1].
- Haz clic en Crear.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un bucket de Cloud Storage
Descarga un archivo de muestra mediante CURL y haz dos copias
- En la consola de Cloud, haz clic en Activar Cloud Shell (
).
- Si se te solicita, haz clic en Continuar.
- Almacena [BUCKET_NAME_1] en una variable de entorno:
export BUCKET_NAME_1=<enter bucket name 1 here>
- Verifícalo con echo:
echo $BUCKET_NAME_1
- Ejecuta el siguiente comando para descargar un archivo de muestra (es un archivo HTML de la documentación de Hadoop que está disponible públicamente):
curl \
https://hadoop.apache.org/docs/current/\
hadoop-project-dist/hadoop-common/\
ClusterSetup.html > setup.html
- Para hacer copias del archivo, ejecuta los siguientes comandos:
cp setup.html setup2.html
cp setup.html setup3.html
Tarea 2: Listas de control de acceso (ACL)
En esta tarea, configurarás listas de control de acceso para restringir el acceso al archivo que copies en el bucket de Cloud Storage.
Copia el archivo en el bucket y configura la lista de control de acceso
- Ejecuta el siguiente comando para copiar el primer archivo en el bucket:
gcloud storage cp setup.html gs://$BUCKET_NAME_1/
- Para obtener la lista de acceso predeterminada asignada a setup.html, ejecuta el siguiente comando:
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt
cat acl.txt
- Para establecer la lista de acceso como privada y verificar los resultados, ejecuta los siguientes comandos:
gsutil acl set private gs://$BUCKET_NAME_1/setup.html
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt
cat acl2.txt
- Para actualizar la lista de acceso y hacer que el archivo sea legible de forma pública, ejecuta los siguientes comandos:
gsutil acl ch -u AllUsers:R gs://$BUCKET_NAME_1/setup.html
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl3.txt
cat acl3.txt
Haz clic en Revisar mi progreso para verificar el objetivo.
Hacer que el archivo sea legible de forma pública
Examina el archivo en la consola de Cloud
- En la consola de Google Cloud, en el menú de navegación (
), haz clic en Cloud Storage > Buckets.
- Haz clic en [BUCKET_NAME_1].
- Verifica que, para el archivo setup.html, la opción Acceso público tenga un Vínculo público disponible.
Borra el archivo local y cópialo de nuevo desde Cloud Storage
- Regresa a Cloud Shell. Si es necesario, haz clic en Activar Cloud Shell (
).
- Ejecuta el siguiente comando para borrar el archivo de configuración:
rm setup.html
- Para verificar si se borró el archivo, ejecuta el siguiente comando:
ls
- Para copiar el archivo desde el bucket nuevamente, ejecuta el siguiente comando:
gcloud storage cp gs://$BUCKET_NAME_1/setup.html setup.html
Tarea 3. Claves de encriptación proporcionadas por el cliente (CSEK)
En esta tarea, generarás una CSEK para encriptar los archivos almacenados en el bucket de Cloud Storage.
Genera una CSEK
Para el siguiente paso, necesitas una clave AES-256 base64.
- Ejecuta el siguiente comando para crear una clave:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
Resultado de ejemplo:
b'tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=\n'
- Copia el valor de la clave generada (sin
b'
ni \n'
) del resultado del comando: La clave debe tener el siguiente formato tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
.
Modifica el archivo .boto
Los controles de encriptación están ubicados en un archivo de configuración de gsutil llamado .boto
.
- Para ver y abrir el archivo .boto, ejecuta los siguientes comandos:
ls -al
nano .boto
Nota: Si el archivo .boto
está vacío, cierra el editor nano con Ctrl + X y genera un archivo .boto
nuevo con el comando gsutil config -n
. Luego, vuelve a intentar abrir el archivo con los comandos mencionados.
Si el archivo .boto
sigue vacío, es posible que tengas que localizarlo con el comando gsutil version -l
.
- Busca la línea que contenga "
#encryption_key=
".
Nota: En la parte inferior del editor nano, encontrarás diferentes combinaciones de teclas para navegar rápidamente por los archivos. Usa aquella correspondiente a la función de búsqueda para encontrar al instante la línea que contiene #encryption_key=.
- Quita el carácter de comentario # de la línea y pega al final la clave que generaste anteriormente.
Ejemplo (este es un ejemplo):
Antes:
# encryption_key=
Después:
encryption_key=tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
- Presiona Ctrl + O > Intro para guardar el archivo .boto y, luego, Ctrl + X para salir de nano.
Sube los archivos de configuración restantes (encriptados) y verifícalos en la consola de Cloud
- Para subir los archivos setup.html restantes, ejecuta los siguientes comandos:
gsutil cp setup2.html gs://$BUCKET_NAME_1/
gsutil cp setup3.html gs://$BUCKET_NAME_1/
- Regresa a la consola de Cloud.
- Haz clic en [BUCKET_NAME_1]. Los archivos setup2.html y setup3.html muestran que están encriptados por el cliente.
Haz clic en Revisar mi progreso para verificar el objetivo.
Claves de encriptación proporcionadas por el cliente (CSEK)
Borra archivos locales, copia archivos nuevos y verifica la encriptación
- Para borrar tus archivos locales, ejecuta el siguiente comando en Cloud Shell:
rm setup*
- Para copiar los archivos desde el bucket nuevamente, ejecuta el siguiente comando:
gsutil cp gs://$BUCKET_NAME_1/setup* ./
- A fin de leer los archivos encriptados para confirmar si las operaciones se realizaron correctamente, ejecuta los siguientes comandos:
cat setup.html
cat setup2.html
cat setup3.html
Tarea 4: Rota las CSEK
En esta tarea, rotarás la CSEK que se usa para encriptar datos en Cloud Storage, lo que garantiza la seguridad de los datos de forma continua.
Mueve la CSEK actual para desencriptarla
- Ejecuta el siguiente comando para abrir el archivo
.boto
:
nano .boto
- Marca como comentario la línea encryption_key actual agregando el carácter # al principio de la línea.
Nota: En la parte inferior del editor nano, encontrarás diferentes combinaciones de teclas para navegar rápidamente por los archivos. Usa aquella correspondiente a la función de búsqueda para encontrar al instante la línea que contiene #encryption_key=.
- Quita el carácter de comentario # de decryption_key1 y copia la clave actual de la línea encryption_key en la línea decryption_key1.
Resultado de ejemplo:
Antes:
encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
# decryption_key1=
Después:
# encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
- Presiona Ctrl + O > Intro para guardar el archivo .boto y, luego, Ctrl + X para salir de nano.
Nota: En la práctica, borrarías la CSEK anterior de la línea encryption_key.
Genera otra CSEK y agrégala al archivo .boto
- Ejecuta el siguiente comando para generar una clave nueva:
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
- Copia el valor de la clave generada (sin
b'
ni \n'
) del resultado del comando: La clave debe tener el siguiente formato tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
.
- Para abrir el archivo .boto, ejecuta el siguiente comando:
nano .boto
- Quita el carácter de comentario de la encriptación y pega el valor de la nueva clave de
encryption_key=
.
Resultado de ejemplo:
Antes:
# encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
Después:
encryption_key=HbFK4I8CaStcvKKIx6aNpdTse0kTsfZNUjFpM+YUEjY=
- Presiona Ctrl + O > Intro para guardar el archivo .boto y, luego, Ctrl + X para salir de nano.
Reescribe la clave del archivo 1 y marca como comentario la clave de desencriptación anterior
Cuando un archivo está encriptado, si se reescribe, se desencripta a través de la clave decryption_key1 que configuraste previamente y se encripta con la nueva clave encryption_key.
Estás reescribiendo la clave para setup2.html, pero no para setup3.html, de modo que puedas ver lo que sucede si no rotas las claves correctamente.
- Ejecuta el siguiente comando:
gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
- Para abrir el archivo .boto, ejecuta el siguiente comando:
nano .boto
- Marca como comentario la línea decryption_key1 actual agregando nuevamente el carácter #.
Resultado de ejemplo:
Antes:
decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
Después:
# decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
- Presiona Ctrl + O > Intro para guardar el archivo .boto y, luego, Ctrl + X para salir de nano.
Nota: En la práctica, borrarías la CSEK anterior de la línea decryption_key1.
Descarga setup2 y setup3
- Para descargar setup2.html, ejecuta el siguiente comando:
gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
- Para descargar setup3.html, ejecuta el siguiente comando:
gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html
Nota: ¿Qué ocurrió? setup3.html no se reescribió con la clave nueva, por lo que ya no se puede desencriptar, y la copia fallará. Rotaste las CSEK correctamente.
Tarea 5: Habilita la administración del ciclo de vida
En esta tarea, habilitarás la administración del ciclo de vida de un bucket de Cloud Storage para automatizar la eliminación de objetos después de un período determinado.
Consulta la política actual del ciclo de vida del bucket
- Ejecuta el siguiente comando para consultar la política actual del ciclo de vida:
gsutil lifecycle get gs://$BUCKET_NAME_1
Nota: No hay configuración del ciclo de vida. Crearás una en los próximos pasos.
Crea un archivo de política del ciclo de vida JSON
- Para crear un archivo llamado life.json, ejecuta el siguiente comando:
nano life.json
- Pega el siguiente valor en el archivo life.json:
{
"rule":
[
{
"action": {"type": "Delete"},
"condition": {"age": 31}
}
]
}
Nota: Estas instrucciones le indican a Cloud Storage que borre el objeto después de 31 días.
- Presiona Ctrl + O, Intro para guardar el archivo y, luego, Ctrl + X para salir de nano.
Configura y verifica la política
- Para configurar la política, ejecuta el siguiente comando:
gsutil lifecycle set life.json gs://$BUCKET_NAME_1
- Para verificar la política, ejecuta el siguiente comando:
gsutil lifecycle get gs://$BUCKET_NAME_1
Haz clic en Revisar mi progreso para verificar el objetivo.
Habilitar la administración del ciclo de vida
Tarea 6: Habilita el control de versiones
En esta tarea, habilitarás el control de versiones para un bucket de Cloud Storage con el propósito de proteger los datos de la eliminación o modificación accidentales.
Consulta el estado del control de versiones del bucket y habilítalo
- Ejecuta el siguiente comando para ver el estado actual del control de versiones del bucket:
gsutil versioning get gs://$BUCKET_NAME_1
Nota: La política Suspendido significa que no está habilitado.
- Para habilitar el control de versiones, ejecuta el siguiente comando:
gsutil versioning set on gs://$BUCKET_NAME_1
- Para verificar que el control de versiones esté habilitado, ejecuta el siguiente comando:
gsutil versioning get gs://$BUCKET_NAME_1
Haz clic en Revisar mi progreso para verificar el objetivo.
Habilitar el control de versiones
Crea varias versiones del archivo de muestra en el bucket
- Verifica el tamaño del archivo de muestra:
ls -al setup.html
- Abre el archivo setup.html:
nano setup.html
- Borra 5 líneas de setup.html para cambiar el tamaño del archivo.
- Presiona Ctrl + O, Intro para guardar el archivo y, luego, Ctrl + X para salir de nano.
- Copia el archivo en el bucket con la opción de control de versiones -v:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
- Abre el archivo setup.html:
nano setup.html
- Borra otras 5 líneas de setup.html para cambiar el tamaño del archivo.
- Presiona Ctrl + O, Intro para guardar el archivo y, luego, Ctrl + X para salir de nano.
- Copia el archivo en el bucket con la opción de control de versiones -v:
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
Obtén una lista de todas las versiones del archivo
- Para obtener una lista de todas las versiones del archivo, ejecuta el siguiente comando:
gcloud storage ls -a gs://$BUCKET_NAME_1/setup.html
- Destaca y copia el nombre de la versión más antigua del archivo (la primera en la lista), que mencionamos como [VERSION_NAME] en el siguiente paso.
Nota: Asegúrate de copiar la ruta de acceso completa del archivo, que comienza con gs://.
- Almacena el valor de la versión en la variable de entorno [VERSION_NAME].
export VERSION_NAME=<Enter VERSION name here>
- Verifícalo con echo:
echo $VERSION_NAME
Resultado de ejemplo:
gs://BUCKET_NAME_1/setup.html#1584457872853517
Descarga la versión original más antigua del archivo y verifica la recuperación
- Descarga la versión original del archivo:
gcloud storage cp $VERSION_NAME recovered.txt
- Para verificar la recuperación, ejecuta los siguientes comandos:
ls -al setup.html
ls -al recovered.txt
Nota: Recuperaste el archivo original de la versión de copia de seguridad. Notarás que el original es más grande que la versión actual porque borraste líneas.
Tarea 7: Sincroniza un directorio en un bucket
En esta tarea, sincronizarás un directorio local y sus subdirectorios con un bucket de Cloud Storage con el comando gsutil rsync.
Crea un directorio anidado y sincronízalo con un bucket
Crea una estructura de directorios anidados de modo que puedas examinar qué sucede cuando se copia de manera recursiva en un bucket.
- Ejecuta los siguientes comandos:
mkdir firstlevel
mkdir ./firstlevel/secondlevel
cp setup.html firstlevel
cp setup.html firstlevel/secondlevel
- Para sincronizar el directorio firstlevel en la VM con tu bucket, ejecuta el siguiente comando:
gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel
Examina los resultados
- En la consola de Google Cloud, en el menú de navegación (
), haz clic en Cloud Storage > Buckets.
- Haz clic en [BUCKET_NAME_1]. Observa las subcarpetas en el bucket.
- Haz clic en /firstlevel y luego en /secondlevel.
- Compara lo que ves en la consola de Cloud con los resultados del siguiente comando:
gcloud storage ls -r gs://$BUCKET_NAME_1/firstlevel
- Sal de Cloud Shell:
exit
Tarea 8: Revisión
En este lab, aprendiste a crear y trabajar con buckets y objetos, y aprendiste sobre las siguientes funciones de Cloud Storage:
- CSEK: Clave de encriptación proporcionada por el cliente
- Usar sus propias claves de encriptación
- Rotar claves
- LCA: Lista de control de acceso
- Configurar una LCA para acceso privado y modificarla para acceso público
- Administrar el ciclo de vida
- Configurar la política para borrar objetos después de 31 días
- Realizar un control de versiones
- Crear una versión y restablecer una versión anterior
- Sincronizar un directorio
- Sincronizar de forma recurrente un directorio de VM con un bucket
Resumen
Tanto S3 como Cloud Storage proporcionan almacenamiento a nivel del objeto con capacidades de administración de control de acceso, encriptación, control de versiones y administración del ciclo de vida. Veamos algunas similitudes y diferencias entre ambos servicios.
Similitudes:
- Tanto Cloud Storage como S3 proporcionan listas de control de acceso (LCA) para el control de acceso detallado.
- Ambos servicios ofrecen clases de almacenamiento para cumplir con la optimización de costos a través de la modificación de la frecuencia de acceso a los datos y la redundancia de datos.
- Ambos servicios ofrecen administración del ciclo de vida de los objetos para mover objetos automáticamente de una clase de almacenamiento a otra.
- Ambos servicios ofrecen control de versiones para proteger los archivos contra eliminaciones y reemplazos accidentales.
- Ambos servicios ofrecen sincronización de directorios para mantener los objetos actualizados y garantizar la alineación entre la ubicación de origen y los objetos del bucket de destino.
Diferencias:
- En Google Cloud, puedes habilitar la encriptación de buckets modificando el archivo .boto de configuración de gsutil para incluir la clave de encriptación que proporcionó el cliente. En AWS, puedes habilitar la encriptación de buckets a través de AWS CLI con el comando “put-bucket-encryption” y especificar la clave en el parámetro --server-side-encryption-configuration.
- En Google Cloud, un solo servicio administra todas las clases de almacenamiento. Mientras que, en AWS, S3 Glacier administra las clases de almacenamiento de archivos por separado. S3 administra las clases de acceso estándar y poco frecuente.
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
- 1 estrella = Muy insatisfecho
- 2 estrellas = Insatisfecho
- 3 estrellas = Neutral
- 4 estrellas = Satisfecho
- 5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2020 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.