Creación de Roles Personalizados (Custom Roles) en GCP con Python
Autor: Eduardo Martínez Agrelo
En el ejercicio anterior vimos cómo usar los roles que Google nos ofrece "de fábrica" (Predefinidos). Cubren el 90% de los casos de uso. Pero, ¿qué ocurre en ese 10% restante donde necesitamos una precisión quirúrgica? En el examen Associate Cloud Engineer, a menudo te enfrentarás a escenarios de auditoría o cumplimiento normativo donde los roles estándar son demasiado permisivos. Aquí es donde entran los Roles Personalizados.
El Problema: Roles Demasiado Amplios
Imagina este escenario de examen: Tienes un equipo de operaciones junior que necesita reiniciar máquinas virtuales que se han bloqueado. Si les das el rol Compute Instance Admin, podrán reiniciar las máquinas, sí, pero también podrán borrarlas, cambiar sus discos o modificar la red. Eso es un riesgo de seguridad inaceptable.
No existe un rol predefinido de Google que sea "Solo Reiniciar VMs". Aquí es donde debemos construir el nuestro.
Roles Personalizados: Anatomía de un Permiso
Un Rol en GCP no es más que una colección de Permisos. Los permisos tienen una estructura atómica muy clara:
servicio.recurso.verbo
Por ejemplo:
compute.instances.start: Permite encender una VM.compute.instances.stop: Permite apagar una VM.compute.instances.delete: Permite eliminar una VM (¡Peligroso!).
Un Rol Personalizado nos permite seleccionar, como en un buffet, únicamente los permisos start y stop, ignorando el delete. Esto lleva el Principio de Menor Privilegio a su máxima expresión.
Automatización con Python: google-cloud-iam
Aunque se pueden crear desde la consola, la gestión de roles complejos (que pueden tener docenas de permisos) se vuelve inmanejable manualmente. En este ejercicio, utilizamos Python y la librería oficial de Google para definir el rol como código.
Ventajas de usar código para definir roles:
- Control de Versiones: Puedes guardar la definición de tu rol en Git. Si alguien modifica el rol por error, tienes un historial.
- Replicabilidad: Puedes aplicar el mismo rol exacto en múltiples proyectos u organizaciones en segundos.
- Auditoría: Es fácil revisar qué permisos exactos tiene el rol leyendo el script.
La Trampa del Examen: Mantenimiento
Una nota importante para la certificación: Los Roles Personalizados no se actualizan solos.
Si Google lanza una nueva funcionalidad para Compute Engine (ej. una nueva forma de hibernar máquinas) y crea un permiso nuevo, los Roles Predefinidos se actualizarán automáticamente para incluirlo. Tu Rol Personalizado, sin embargo, no lo tendrá hasta que tú edites el código y lo añadas manualmente. El examen suele preguntar sobre este "coste de mantenimiento".
Conclusión: Precisión Quirúrgica
Al finalizar este ejercicio, habrás creado el rol VM Starter Stopper usando Python. Has aprendido a diseccionar los permisos de GCP y a empaquetarlos en un rol a medida que cumple con requisitos de seguridad estrictos, una habilidad esencial para arquitecturas empresariales seguras.