¡Detecta cuentas de servicio sin uso en Google Cloud!

Explica: Jonatan Weckl, Expert Cloud Engineer de Zenta

Zenta Group
5 min readDec 20, 2023

En este artículo te mostraré cómo detectar masivamente las cuentas de servicio sin uso en cualquier estructura de recursos en Google Cloud Platform.

¿Por qué es importante detectar cuándo no se utilizan las cuentas de servicio?

Es imprescindible identificar las cuentas de servicio que no se utilizan, ya que plantean relevantes riesgos para la seguridad. Estas identidades suelen implicar malas prácticas, como permisos excesivos y claves mal gestionadas.

La capacidad de detectar y abordar rápidamente estas vulnerabilidades es una de las mejores prácticas de la seguridad dentro de cualquier infraestructura en la nube.

¿Qué se consideran técnicamente “cuentas de servicio sin uso”?

Según la documentación oficial de Google, una cuenta de servicio se clasifica por defecto como “sin uso” si no se ha autenticado durante un periodo de 90 días.

Es importante tener en cuenta que cualquier tipo de actividad iniciada a través de esta cuenta de servicio, incluso un intento de autenticación fallido, se considera una autenticación.

¿Cómo detecta Google las cuentas de servicios sin uso?

Google Cloud utiliza la API de Recommender para identificar este tipo de vulnerabilidades. Es obligatorio activar esta API en todos los proyectos que deseemos analizar.

¿Google Recommender es gratuito?

Sí, es gratuito. Realizar esta tarea no tiene ningún coste.

Ahora que aclaramos esas dudas frecuentes, entremos en materia, comienza a detectar las cuentas de servicios sin uso para resguardar la seguridad.

Presentación del script

Aunque el Recommender de GCP es bastante útil, tiene sus limitaciones. La información proporcionada es algo básica y carece de escalabilidad a nivel de organización, para solucionar este problema, hemos desarrollado un script que itera sobre todos los proyectos de una organización.

Este script produce un archivo CSV, lo que nos permite gestionar y evaluar exhaustivamente estas cuentas de servicio no utilizadas.

Tienes dos opciones: Ejecutar el script en un solo proyecto o a nivel de organización. Si quieres probar el script, puedes hacerlo solo en un único proyecto. Si este es su caso, ve directamente al paso 2.2.

Paso 1: Habilitar la API de Recommender en toda la organización

Debes habilitar la API de Recommender en toda la organización si desea ejecutar el script a nivel de organización. Para no hacerlo manualmente, sustituya “YOUR_ORG_ID” por el ID de su organización y ejecute este script en Cloud Shell.

Paso 2.1: Ejecuta el script para toda la organización

Aquí está la magia. Breve descripción de lo que hace este script:

  1. Crea un CSV con todas las cabeceras necesarias.
  2. Obtiene la lista de todos los proyectos de la organización y los almacena en una variable.
  3. Recorre cada proyecto, consulta los detalles del Recommender de GCP y almacena los datos de cada cuenta de servicio en el CSV.

Sustituya “YOUR_ORG_ID” por el ID de su organización y ejecute este script en Cloud Shell.

Paso 2.2: Ejecute el script para un único proyecto

Nota: Este paso es solo si no desea hacerlo a nivel de organización.

Sustituya “PROJECT” por el ID de su proyecto y ejecute este script en Cloud Shell.

Paso 3: Descargar el archivo CSV

Cuando los scripts terminan, podemos ver “done” en la pantalla. Si escribimos “ls”, podemos ver el archivo CSV allí mismo. El siguiente paso es ir a Open Editor y descargar el CSV.

Paso 4: Visualizar el archivo CSV con Excel o Sheets

Explicación sobre las cabeceras del CSV:

  1. Project: Proyecto actual de la cuenta de servicio no utilizada.
  2. Email: Correo electrónico de la cuenta de servicio no utilizada.
  3. LastAuthenticatedTime: Último registro de autenticación de la cuenta de servicio.
  4. Description: Breve descripción que el Recommender proporciona del estado de la cuenta de servicio.
  5. LastRefreshTime: Última vez que el Recommender realizó una exploración de las cuentas de servicio.

En este caso concreto, observamos información limitada en lo que respecta a una organización de prueba. Sin embargo, al desplegar esto en una infraestructura de tamaño considerable, es posible que se sorprenda por las numerosas cuentas de servicio que se han ido quedando sin utilizar con el tiempo.

Esto representa una importante brecha de seguridad, por lo que recomendamos encarecidamente tomar medidas al respecto lo antes posible.

Otras consideraciones

Aunque las cuentas de servicio identificadas por el Recommender no se hayan utilizado en los últimos 90 días, esto no implica necesariamente que estén totalmente obsoletas. Pueden estar empleadas en pipelines que se ejecutan con poca frecuencia, o simplemente no están en uso en este momento concreto.

Nuestro consejo es que profundices en este tema, comprometiéndote con cada cuenta de servicio individualmente, prestando especial atención a las creadas en entornos de producción, para asegurarte de que no serán necesarias en el futuro.

Una vez que lo hayas confirmado, puedes diseñar un plan para desactivar gradualmente la cuenta de servicio, lo que eventualmente conducirá a su eliminación.

Espero que esta información te ayude a proteger tus entornos en Google Cloud Platform. No olvides comentar y compartir, entre colegas nos apoyamos en todo momento.

--

--