Creación y eliminación de AWS Secrets Manager con Terraform y AWS CLI
Introducción
AWS Secrets Manager es un servicio que permite almacenar, administrar y recuperar credenciales de manera segura. Al trabajar con Terraform para la gestión de infraestructura como código (IaC), podemos automatizar la creación y eliminación de secretos.
En este post, explicaremos cómo crear un secreto en AWS Secrets Manager con Terraform, cómo hacer un respaldo antes de eliminarlo y cómo eliminarlo tanto con terraform destroy
como con AWS CLI mediante un force delete
.
Creación de AWS Secrets Manager con Terraform
Para definir un secreto en AWS Secrets Manager mediante Terraform, debemos usar el recurso aws_secretsmanager_secret
y aws_secretsmanager_secret_version
.
Terraform permite definir secretos de forma segura sin necesidad de ingresarlos manualmente en la consola de AWS. Al utilizar aws_secretsmanager_secret_version
, podemos almacenar el valor del secreto como un JSON codificado, lo que facilita su administración y acceso desde otras aplicaciones.
Terraform se encarga de aprovisionar los recursos de AWS de manera declarativa. Esto significa que con solo definir nuestro código, podemos desplegar el secreto sin necesidad de realizar configuraciones manuales.
Una vez implementado el secreto, podemos acceder a él desde nuestras aplicaciones utilizando la API de AWS Secrets Manager o AWS CLI, permitiendo así una gestión centralizada de credenciales sin exponer información sensible en variables de entorno o archivos de configuración.
Respaldo del Secreto antes de la Eliminación
Antes de eliminar el secreto, es importante realizar un respaldo para evitar la pérdida de información crítica. Esto se puede hacer con AWS CLI dentro de Terraform, utilizando un provisioner local-exec
que guarda el valor del secreto en un archivo JSON local.
Este respaldo nos permite restaurar el secreto en caso de que necesitemos acceder a las credenciales después de la eliminación. Sin embargo, es importante almacenar este archivo en un lugar seguro, como un sistema de almacenamiento cifrado o un servicio de gestión de secretos alternativo.
Eliminación del Secreto
Opción 1: Eliminación con Terraform
Si queremos eliminar el secreto utilizando Terraform, simplemente ejecutamos:
terraform destroy -auto-approve
Esto marcará el secreto para eliminación y respetará el recovery_window_in_days
(7 días por defecto). Sin embargo, si se ha configurado recovery_window_in_days = 0
, el secreto se eliminará inmediatamente.
Opción 2: Eliminación Forzada con AWS CLI
Si necesitamos eliminar el secreto de inmediato sin esperar el período de recuperación, podemos usar AWS CLI con el siguiente comando:
aws secretsmanager delete-secret \
--secret-id my-secret \
--force-delete-without-recovery
Este comando eliminará el secreto de manera inmediata y permanente sin posibilidad de recuperación.
Conclusión
Terraform nos permite gestionar AWS Secrets Manager de manera sencilla y eficiente. Sin embargo, si requerimos una eliminación inmediata, podemos recurrir a AWS CLI con la opción --force-delete-without-recovery
.
Realizar un respaldo antes de eliminar un secreto es una buena práctica para evitar la pérdida de credenciales críticas. Si el secreto almacena información sensible, se recomienda almacenar el respaldo en un sistema seguro y eliminarlo después de restaurarlo en otro entorno.
Es fundamental adoptar estrategias de gestión segura de credenciales en la nube para minimizar riesgos de seguridad y garantizar el acceso controlado a información confidencial.