Automatizar el menor privilegio en AWS: Guía con IAM Access Analyzer

Gestionar permisos en AWS suele empezar con políticas permisivas para acelerar el desarrollo. Sin embargo, este enfoque aumenta el radio de explosión ante un compromiso de credenciales. Los permisos no utilizados representan una deuda técnica de seguridad crítica.

Esta guía enseña a implementar un ciclo de vida de permisos basado en el uso real, utilizando AWS IAM Access Analyzer para generar políticas precisas automáticamente.

En resumen — AWS IAM Access Analyzer analiza los logs de CloudTrail para identificar qué acciones utiliza realmente una identidad y genera una política JSON ajustada al principio de menor privilegio.

1. Qué es AWS IAM Access Analyzer

💡 Analogía: Imagina que entregas un manojo de 100 llaves a un conserje. Después de un mes, revisas las cámaras y ves que solo usó 3 llaves. IAM Access Analyzer es esa cámara de seguridad que te dice qué llaves retirar para que el conserje solo tenga las necesarias.

AWS IAM Access Analyzer es una capacidad de IAM que ayuda a identificar recursos compartidos con entidades externas y a refinar permisos. En su versión más reciente (2.0), permite detectar accesos no utilizados en roles de IAM y usuarios, facilitando la limpieza de infraestructura antigua.

El servicio utiliza razonamiento matemático basado en lógica descriptiva para analizar políticas de acceso. No solo revisa logs, sino que analiza la gramática de la política para encontrar rutas de acceso que podrías haber pasado por alto.

2. Escenarios de uso en producción

Al auditar infraestructuras complejas, la revisión manual de políticas es inviable. Este analizador es esencial cuando necesitas preparar una auditoría SOC2 o PCI-DSS, donde demostrar el cumplimiento del menor privilegio es un requisito obligatorio.

Otro escenario común ocurre tras una migración de aplicaciones. Durante la migración se suelen otorgar permisos de administrador (FullAccess) por comodidad. Access Analyzer permite observar el comportamiento de la aplicación por 90 días y luego sustituir esos permisos amplios por una política técnica granular.

3. Pasos para automatizar el menor privilegio

El proceso se divide en la identificación, el análisis de logs y la aplicación de la nueva política.

Paso 1. Habilitar el analizador de acceso

Primero, crea un analizador a nivel de cuenta para monitorear el acceso externo a tus recursos de AWS.

aws accessanalyzer create-analyzer --analyzer-name MiAnalizadorSeguridad --type ACCOUNT

Paso 2. Generar política basada en CloudTrail

Selecciona un rol de IAM que sospeches que tiene permisos excesivos. Solicita la generación de una política basada en los logs de los últimos 30 días.

aws accessanalyzer start-policy-generation \
--policy-generation-details "{ \"principalArn\": \"arn:aws:iam::123456789012:role/AppServiceRole\" }" \
--cloud-trail-details "{ \"accessRole\": \"arn:aws:iam::123456789012:role/AccessAnalyzer-CloudTrail-Role\", \"trailServiceArn\": \"arn:aws:cloudtrail:us-east-1:123456789012:trail/MainTrail\" }"

Paso 3. Revisar y aplicar la política

Una vez completado el análisis, descarga el JSON resultante. El motor de AWS agrupa las acciones por servicio.

aws accessanalyzer get-generated-policy \
--job-id [TU_JOB_ID] \
--include-service-level-template

4. Análisis de hallazgos vs. Generación de políticas

Es común confundir estas dos funciones. Aquí sus diferencias clave:

CriterioHallazgos de Acceso ExternoGeneración de Políticas
ObjetivoDetectar recursos públicos o compartidosRefinar permisos granulares
Fuente de datosPolíticas de recursos (S3, KMS, IAM)Logs de actividad (CloudTrail)
FrecuenciaMonitoreo continuo 24/7Bajo demanda o por ciclo de revisión
ResultadoAlertas de seguridadDocumento JSON de política

Si buscas prevenir fugas de datos hacia cuentas externas, usa Hallazgos. Si buscas limpiar el exceso de permisos de un desarrollador o microservicio, usa Generación de Políticas.

5. Errores frecuentes

⚠️ Error frecuente: Aplicar la política generada sin revisión manual puede romper flujos de trabajo críticos que se ejecutan trimestralmente.

Si una tarea programada (cron job) solo se ejecuta una vez cada 6 meses y el análisis cubre 90 días, Access Analyzer eliminará esos permisos. Esto provocará fallos en producción meses después de la "optimización".

Solución por mensaje de error

Error: "Access Analyzer is not authorized to access CloudTrail"
Causa: El rol de servicio no tiene permisos 'cloudtrail:GetTrail' o 's3:GetObject' sobre el bucket de logs.
Solución: Adjunta una política que permita al servicio de Access Analyzer leer los eventos de CloudTrail.

6. Consejos para DevSecOps

Integra este análisis en tu flujo de CI/CD. Antes de desplegar una actualización de infraestructura, utiliza la validación de políticas de Access Analyzer para detectar errores de sintaxis o permisos peligrosos como "*" en recursos críticos.

Establece un límite de 60 días para la revisión de accesos no utilizados. Si un rol no se ha usado en este tiempo, márcalo para eliminación automática tras un periodo de gracia.

📌 Puntos clave

  • Access Analyzer automatiza la creación de políticas basadas en datos reales de uso.
  • Reducir permisos minimiza el impacto de credenciales filtradas.
  • Siempre verifica eventos de baja frecuencia antes de revocar permisos identificados como "no usados".

Preguntas frecuentes

Q. ¿Tiene costo usar IAM Access Analyzer?

A. La mayoría de funciones son gratuitas, pero el análisis de accesos no utilizados tiene costo por rol/usuario analizado al mes.

Q. ¿Cuánto tiempo de logs analiza para generar una política?

A. Puede analizar hasta 90 días de historial de eventos en CloudTrail.

Q. ¿Sustituye este servicio a AWS Config?

A. No, son complementarios. Config audita cambios de estado y Access Analyzer audita rutas de acceso lógicas.

Post a Comment