Introducción a Google Cloud IAM
Google Cloud Platform (GCP) ofrece una plataforma robusta y escalable para ejecutar cargas de trabajo en la nube. Sin embargo, un aspecto crítico al adoptar la nube es garantizar que los recursos estén protegidos y accesibles sólo por las identidades autorizadas. Identity and Access Management (IAM) es el servicio de GCP encargado de gestionar el control de acceso y la autenticación. En este tutorial detallado exploraremos cómo configurar, asegurar y auditar los permisos en GCP usando IAM.
Conceptos Clave de IAM
- Principal: Entidad que realiza acciones. Puede ser una cuenta de usuario, una cuenta de servicio, un grupo o un dominio.
- Recurso: Elemento de GCP al que se aplica una política (por ejemplo, proyecto, bucket de Cloud Storage, instancia de Compute Engine).
- Policy: Colección de bindings que asocia roles a principals para un recurso.
- Role: Conjunto de permisos. Hay roles predefinidos, roles personalizados y roles de administración (owner, editor, viewer).
- Permission: Acción que se permite, como
storage.buckets.getocompute.instances.start.
Autenticación en GCP
Antes de autorizar acciones, GCP debe autenticar la identidad. Los métodos principales son:
1. Cuentas de Usuario
Basadas en cuentas de Google (Gmail o Google Workspace). Generalmente se usan para acceso humano a la consola.
2. Cuentas de Servicio
Entidades no humanas utilizadas por aplicaciones o servicios. Se autentican mediante claves JSON o roles de Workload Identity Federation.
3. Grupos y Dominios
Simplifican la asignación de permisos a múltiples usuarios. Un binding puede apuntar a group:equipo-security@example.com o domain:example.com.
4. Workload Identity Federation
Permite a aplicaciones que corren fuera de GCP (on-premise o en otras nubes) autenticarse sin claves estáticas, usando proveedores externos (OIDC, AWS IAM).
5. Autenticación Multifactor (MFA)
Refuerza la seguridad de cuentas de usuario mediante un segundo factor (SMS, app de autenticación). Se puede habilitar desde la consola de Cloud Identity.
Autorización con Roles y Policies
La autorización determina qué acciones puede realizar un principal. Se basa en la asignación de roles mediante policies.
Roles Predefinidos
- Viewer: Visualiza recursos.
- Editor: Modifica recursos.
- Owner: Control total, incluidas políticas IAM.
- Roles específicos de servicios, como
roles/storage.objectAdminoroles/compute.instanceAdmin.v1.
Roles Personalizados
Se crean para agrupar permisos específicos. Ideal para aplicar el principio de menor privilegio:
| Nombre del Role | Permisos |
|---|---|
| storageReadOnly | storage.buckets.get, storage.objects.get |
IAM Conditions
Permiten definir lógica condicional (por ejemplo, restringir acceso según hora, carga útil o atributos de recurso). Ejemplo:
expression: request.time < timestamp(2024-12-31T23:59:59Z)
Buenas Prácticas de Seguridad
- Principio de Menor Privilegio: Asigna solo los permisos estrictamente necesarios.
- Rotación de Claves: Cambia periódicamente claves de cuentas de servicio.
- Auditoría y Logging: Habilita Cloud Audit Logs para registrar accesos y cambios de policy.
- Networking Seguro: Usa VPC Service Controls para encapsular recursos críticos.
- MFA Obligatorio para cuentas de usuario con acceso privilegiado.
- Workload Identity: Suprime el uso de claves JSON, utiliza tokens cortos.
Herramientas de Gestión
- Console Web: Interfaz gráfica para asignar roles y revisar políticas.
- gcloud CLI:
gcloud projects add-iam-policy-binding,gcloud iam roles create. - APIs IAM: Permiten integración programática y automatización.
- Terraform / Deployment Manager: Infrastructure as Code para versionar y auditar cambios.
Ejemplo Práctico Paso a Paso
1. Crear una Cuenta de Servicio
gcloud iam service-accounts create mi-sa --display-name=Mi Servicio
2. Asignar Rol al Servicio
gcloud projects add-iam-policy-binding mi-proyecto --member=serviceAccount:mi-sa@mi-proyecto.iam.gserviceaccount.com --role=roles/storage.objectAdmin
3. Generar Clave JSON
gcloud iam service-accounts keys create key.json --iam-account=mi-sa@mi-proyecto.iam.gserviceaccount.com
4. Usar la Cuenta de Servicio
Establecer la variable de entorno para la autenticación local o en contenedores:
export GOOGLE_APPLICATION_CREDENTIALS=key.json
Auditoría y Monitoreo
GCP provee Cloud Audit Logs para registrar:
- Admin Activity: Cambios en políticas, creación de roles.
- Data Access: Accesos a datos sensibles.
- System Event: Eventos del sistema.
Estos logs pueden visualizarse en Cloud Logging y exportarse a Cloud Storage, BigQuery o Pub/Sub para análisis forense.
Casos de Uso Comunes
1. Acceso a Cloud Storage
Permite a un servicio leer o escribir en buckets específicos, usando roles storage.objectViewer o storage.objectCreator.
2. Consultas en BigQuery
Roles bigquery.dataViewer o bigquery.jobUser para ejecutar consultas y exportar resultados.
3. Despliegue de Aplicaciones en Cloud Run
Cuenta de servicio con roles/run.invoker para invocar servicios de Cloud Run desde HTTPS o Cloud Functions.
Conclusión
Una correcta implementación de Identity and Access Management en GCP es esencial para garantizar la seguridad y el cumplimiento normativo. Siguiendo las prácticas aquí descritas (principio de menor privilegio, rotación de claves, auditoría continua y uso de cuentas de servicio con Workload Identity) podrás minimizar riesgos y mantener un entorno en la nube robusto. Para más información y la documentación oficial, visita Documentación IAM de GCP.
Leave a Reply