Recursos identificados
- Servicio principal:
Cloud Storage. - Recursos de storage:
- bucket principal (
BUCKET_NAME_1). - objetos (
setup.html,setup2.html,setup3.htmly versiones).
- bucket principal (
- Seguridad y acceso:
- ACLs de objeto (
private,AllUsers:R). - CSEK (Customer-supplied encryption keys) vía
.boto. - rotación de claves CSEK.
- ACLs de objeto (
- Gobierno del dato:
- lifecycle policy (delete por edad).
- versioning de bucket.
- Operaciones de datos:
- sincronización recursiva con
gsutil rsync.
- sincronización recursiva con
Comandos ejecutados
Definir nombre de bucket en variable
Se usa para reutilizar el nombre del bucket durante todo el lab.
export BUCKET_NAME_1=<enter bucket name 1 here>
Verificar variable del bucket
Se usa para confirmar que BUCKET_NAME_1 quedó bien seteada.
echo $BUCKET_NAME_1
Descargar archivo de muestra
Se usa para bajar setup.html y trabajar con objetos de prueba.
curl \
https://hadoop.apache.org/docs/current/\
hadoop-project-dist/hadoop-common/\
ClusterSetup.html > setup.html
Crear copias locales del archivo
Se usa para tener múltiples objetos para pruebas de cifrado/versionado.
cp setup.html setup2.html
cp setup.html setup3.html
Subir archivo al bucket
Se usa para cargar el primer objeto al bucket.
gcloud storage cp setup.html gs://$BUCKET_NAME_1/
Exportar ACL actual del objeto
Se usa para inspeccionar permisos actuales del objeto.
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt
cat acl.txt
Forzar ACL privada en el objeto
Se usa para restringir acceso a modo privado y validar resultado.
gsutil acl set private gs://$BUCKET_NAME_1/setup.html
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt
cat acl2.txt
Hacer objeto público por ACL
Se usa para habilitar lectura pública del objeto.
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
Borrar archivo local
Se usa para validar recuperación desde bucket.
rm setup.html
Listar archivos locales
Se usa para verificar que setup.html fue eliminado.
ls
Recuperar objeto desde bucket
Se usa para copiar nuevamente setup.html al entorno local.
gcloud storage cp gs://$BUCKET_NAME_1/setup.html setup.html
Generar clave CSEK
Se usa para crear una clave AES-256 base64 para cifrado del lado cliente.
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
Abrir configuración gsutil (.boto)
Se usa para configurar encryption_key y/o decryption_key.
ls -al
nano .boto
Subir archivos cifrados con CSEK
Se usa para cargar objetos que queden cifrados con la clave configurada.
gsutil cp setup2.html gs://$BUCKET_NAME_1/
gsutil cp setup3.html gs://$BUCKET_NAME_1/
Borrar archivos locales de setup
Se usa para forzar nueva descarga y validar descifrado.
rm setup*
Descargar archivos setup desde bucket
Se usa para recuperar y validar acceso a objetos cifrados.
gsutil cp gs://$BUCKET_NAME_1/setup* ./
Mostrar contenido de archivos recuperados
Se usa para comprobar que los archivos se pudieron descifrar.
cat setup.html
cat setup2.html
cat setup3.html
Abrir .boto para rotación de claves
Se usa para mover clave vieja a decryption_key1 y preparar nueva clave.
nano .boto
Generar nueva clave CSEK para rotación
Se usa para actualizar encryption_key.
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
Reabrir .boto para setear la nueva clave
Se usa para pegar nueva encryption_key.
nano .boto
Reescribir objeto para rotar cifrado
Se usa para volver a cifrar setup2.html con la nueva clave.
gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
Abrir .boto para desactivar decryption_key vieja
Se usa para simular cierre de rotación de claves.
nano .boto
Descargar objeto ya rotado
Se usa para validar que setup2.html sigue siendo legible.
gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
Intentar descargar objeto no rotado
Se usa para demostrar fallo esperado en objeto con clave vieja.
gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html
Ver lifecycle policy actual
Se usa para inspeccionar la configuración vigente del bucket.
gsutil lifecycle get gs://$BUCKET_NAME_1
Crear archivo de policy lifecycle
Se usa para definir reglas de borrado automático por edad.
nano life.json
Aplicar lifecycle policy al bucket
Se usa para activar la política definida en life.json.
gsutil lifecycle set life.json gs://$BUCKET_NAME_1
Verificar lifecycle policy aplicada
Se usa para confirmar que la policy quedó activa.
gsutil lifecycle get gs://$BUCKET_NAME_1
Consultar estado de versioning
Se usa para verificar si el bucket tiene versionado habilitado.
gsutil versioning get gs://$BUCKET_NAME_1
Habilitar versioning en bucket
Se usa para conservar versiones históricas de objetos.
gsutil versioning set on gs://$BUCKET_NAME_1
Revalidar versioning
Se usa para confirmar que el versionado quedó encendido.
gsutil versioning get gs://$BUCKET_NAME_1
Revisar tamaño del archivo actual
Se usa como referencia antes de crear nuevas versiones.
ls -al setup.html
Editar archivo para cambiar contenido
Se usa para generar una nueva versión del objeto.
nano setup.html
Subir versión nueva del objeto
Se usa para crear una versión adicional en el bucket.
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
Editar nuevamente archivo para otra versión
Se usa para producir una tercera variante del objeto.
nano setup.html
Subir otra versión del objeto
Se usa para tener varias versiones recuperables.
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
Listar todas las versiones del objeto
Se usa para obtener el VERSION_NAME histórico.
gcloud storage ls -a gs://$BUCKET_NAME_1/setup.html
Guardar versión objetivo en variable
Se usa para facilitar la descarga de una versión específica.
export VERSION_NAME=<Enter VERSION name here>
Verificar VERSION_NAME
Se usa para confirmar que la variable contiene el path versionado completo.
echo $VERSION_NAME
Recuperar versión histórica del objeto
Se usa para restaurar una versión antigua en recovered.txt.
gcloud storage cp $VERSION_NAME recovered.txt
Comparar tamaños entre versión actual y recuperada
Se usa para verificar que se recuperó contenido anterior.
ls -al setup.html
ls -al recovered.txt
Crear estructura de directorios de prueba
Se usa para preparar un escenario de sincronización recursiva.
mkdir firstlevel
mkdir ./firstlevel/secondlevel
cp setup.html firstlevel
cp setup.html firstlevel/secondlevel
Sincronizar directorio local al bucket
Se usa para copiar recursivamente estructura y archivos.
gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel
Listado recursivo de objetos sincronizados
Se usa para comparar estructura en bucket vs local.
gcloud storage ls -r gs://$BUCKET_NAME_1/firstlevel
Salir de Cloud Shell
Se usa para terminar la sesión del lab.
exit