En Google Cloud Platform (GCP), una cuenta de servicio (Service Account) es una identidad especial utilizada por aplicaciones, servicios o máquinas virtuales, no por personas, para autenticarse y autorizarse contra recursos de GCP.
¿Qué es una cuenta de servicio?
Una cuenta de servicio es un principal de identidad gestionado por IAM que permite a procesos automatizados interactuar con recursos de Google Cloud mediante roles y permisos definidos explícitamente.
A diferencia de un usuario humano (por ejemplo, un correo @gmail.com), una cuenta de servicio tiene un identificador como:
mi-app@mi-proyecto.iam.gserviceaccount.com
¿Para qué sirve?
Permite que:
- Una VM acceda a Cloud Storage.
- Un Cloud Run invoque una API.
- Un proceso en Kubernetes acceda a BigQuery.
- Un pipeline de CI/CD despliegue infraestructura.
Sin necesidad de credenciales humanas.
Tipos de uso
Asociada a recursos de GCP (recomendado)
Ejemplo: una VM con una cuenta de servicio adjunta.
No necesitas manejar claves manualmente.
Uso externo con clave JSON (menos recomendado)
Descargas una clave privada en formato JSON para usarla fuera de GCP.
Esto implica riesgos de seguridad si se filtra.
Requisitos previos
Antes de comenzar, verifica:
- Tienes una cuenta de Google Cloud
- Tienes un proyecto creado
- La facturación está activa en el proyecto Crear cuenta facturación google cloud
Crear cuenta de servicio desde la Consola Web (GUI)
Crear la cuenta
Vamos a ingresar a Ir a: https://console.cloud.google.com
Menú → IAM y administración → Cuentas de servicio
Click en "Crear cuenta de servicio"
Vamos a completar el formulario con los siguientes datos:
- Nombre de la cuenta → Ej: mi-app-backend
- ID de cuenta de servicio → Se genera automáticamente (puedes modificarlo)
- Descripción → Opcional pero recomendable
Click en Crear y continuar
Asignar roles (Autorización)
Aquí defines qué puede hacer.
Ejemplo:
- Para leer Cloud Storage →
Storage Object Viewer - Para administrar Compute →
Compute Admin
Seleccionas el rol → Continuar
⚠️ Aplica principio de mínimo privilegio.
Acceso a la cuenta (opcional)
Aquí puedes permitir que:
- Otros usuarios administren esta cuenta
- Otros usuarios la utilicen
Si no necesitas esto → continuar.
Visualizar la cuenta de servicio
En el listado de Cuentas de servicio dentro de Google Cloud, estás viendo un inventario de identidades técnicas gestionadas por IAM en tu proyecto.
Ruta en consola: IAM y administración → Cuentas de servicio
Información que aparece en el listado
- Nombre: El nombre descriptivo que definiste al crearla. Ejemplo: packer-builder Es solo un alias visual.
- ID / Email: El identificador único de la cuenta. Formato típico: nombre-id@proyecto-id.iam.gserviceaccount.com
- Descripción: Campo opcional para documentar su propósito. Buena práctica: explicar claramente para qué se usa.
- Estado: Puede estar Activa o Deshabilitada.
- Claves: Indica si tiene:
- Claves administradas por Google
- Claves creadas por el usuario (JSON)
Detalle de la cuenta de servicio
Para ingresar a una cuenta de servicio ya creada, en el listado damos click sobre el enlace de coreo electrónico, esto cargara la pagina de detalle del la cuenta:
Detalle
Es la vista informativa básica de la cuenta.
Aquí ves:
- Nombre
- Email (ID único)
- Descripción
- ID numérico interno
- Estado (activa/deshabilitada)
- Fecha de creación
📌 Sirve para:
- Verificar que estás en la cuenta correcta.
- Confirmar el identificador exacto para usar en CLI, Terraform, Packer, etc.
- Auditar metadatos.
No modifica permisos.
Permisos
Aquí ves los roles que tiene asignados esta cuenta de servicio sobre el proyecto (o sobre otros recursos).
Importante:
Esta pestaña responde a la pregunta:
¿Qué puede hacer esta cuenta de servicio?
Ejemplo:
roles/compute.instanceAdmin.v1roles/storage.objectViewer
Desde aquí puedes:
- Agregar roles
- Quitar roles
Técnicamente estás editando bindings IAM del proyecto donde el member es:
serviceAccount:cuenta@proyecto.iam.gserviceaccount.com
Claves
Aquí se gestionan las credenciales criptográficas asociadas.
Existen dos tipos:
🔹 Claves administradas por Google
Se usan automáticamente cuando la cuenta está asociada a:
- VM
- Cloud Run
- GKE
- Cloud Build
No necesitas gestionarlas.
🔹 Claves creadas por el usuario (JSON)
Son claves privadas descargables.
Sirven para:
- Autenticación fuera de GCP
- Scripts locales
- CI/CD externo
⚠️ Riesgo: Si alguien obtiene el JSON, puede autenticarse como la cuenta.
Desde aquí puedes:
- Crear clave
- Deshabilitar
- Eliminar
Buenas prácticas:
- Evitar claves JSON si el workload está dentro de GCP.
- Rotarlas periódicamente.
Métricas
Muestra estadísticas de uso de la cuenta.
Ejemplos:
- Número de autenticaciones
- Uso de tokens
- Actividad en el tiempo
Sirve para:
- Detectar uso inesperado
- Validar que realmente se está utilizando
- Identificar cuentas inactivas
Es útil en auditorías de seguridad.
Registros
Aquí ves eventos relacionados con la cuenta en Cloud Logging.
Incluye:
- Creación de claves
- Eliminación
- Uso para autenticación
- Cambios en permisos
Sirve para:
- Auditoría forense
- Investigación de incidentes
- Cumplimiento normativo
Si alguien crea una clave sin autorización, aquí queda registro.
Responde a la pregunta inversa de “Permisos”.
Aquí ves:
¿Quién puede usar o administrar esta cuenta de servicio?
Ejemplo:
- Usuario X tiene
Service Account User - Grupo DevOps tiene
Service Account Admin
Esto controla:
- Quién puede actuar como la cuenta
- Quién puede generar tokens
- Quién puede crear claves
Es crítico en entornos empresariales.