Tutorial de autenticación y seguridad en GCP con Identity and Access Management

·

·

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.get o compute.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.objectAdmin o roles/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

Your email address will not be published. Required fields are marked *