plataforma · aws
Bastión reproducible y sin claves
Auditoría con SSM para inventariar servicios, crons y secretos, y llevar el bastión a Terraform.
- tipo
- profesional
- rol
- Auditoría y diseño de la reconstrucción
- stack
- ssm · ec2 · terraform · secretos
- resultado
- Estado real del bastión auditado y un plan para reconstruirlo desde código, sin clonarlo
Audité el bastión de una plataforma en AWS y definí cómo reconstruirlo desde código, en lugar de seguir clonando una máquina única e indocumentada.
El punto de partida
El bastión es la puerta de entrada a la infraestructura, y había crecido como un snowflake. Tenía un volumen sobredimensionado, crons editados a mano y scripts que no coincidían con los del repositorio. También servicios cuya necesidad real nadie había confirmado.
Reconstruirlo o reducir su coste sin entender ese estado era un riesgo directo.
Qué hice
El objetivo no era apagarlo y clonarlo más pequeño. Era convertirlo en algo reproducible desde código, y sacar antes lo que no debía perpetuarse.
Inventarié su estado real, detecté el drift respecto al repositorio y diseñé una reconstrucción con bootstrap y Terraform.
Cómo lo hice
Inventario por SSM
Capturé el runtime con SSM, sin abrir accesos extra. Revisé el uso real del disco, los servicios habilitados, los crons de backup y sincronización a S3, y un catálogo de scripts con propietario, permisos y hash.
Drift contra el repo
Comparé por hash los scripts de la máquina con los versionados, y no coincidían. Algunos servicios que se daban por necesarios no hacían nada, y había crons que apuntaban a scripts inexistentes. Conclusión: aún no se podía recrear desde el repositorio, porque no era la fuente de verdad.
Datos y secretos
Separé el payload operativo (backups, dumps) del estado del bastión. Los secretos no podían acabar en una AMI ni en Terraform, así que el plan los lleva a Secrets Manager o SSM Parameter Store, y el acceso a SSM Session Manager.
Reconstrucción por pasos
El bastión actual queda solo como fuente de evidencia:
- Aprobar el estado real con un diff redactado contra el repo.
- Llevar scripts, crons y servicios a Terraform y bootstrap.
- Construir un bastión nuevo con volumen
gp3de tamaño validado. - Copiar solo el estado que se quiera conservar a propósito.
- Mover el endpoint y validar acceso, crons, backups, runner y SSM.
- Mantener la instancia antigua para rollback durante la validación.
Resultado
El estado real del bastión quedó inventariado y auditado, con un baseline reproducible y un plan de reconstrucción segura.
El baseline incluye AMI y bootstrap, SSM online, IAM con Session Manager, volumen correcto, scripts instalados desde fuente versionada y crons gestionados por IaC.
Qué me llevo
Clonar el volumen a uno menor era lo más rápido y lo más fácil de revertir, pero habría perpetuado el drift y los scripts manuales. Usar la máquina vieja como evidencia, y no como plantilla, es lo que permite llegar a una infraestructura reproducible.
Arquitectura
bastión actual (evidencia) → inventario SSM → Terraform + bootstrap + gestor de secretos → bastión nuevo → validación → rollback disponible