Biblioteca / Operaciones
Playbook de Backup y Recuperacion de Desastres
Procedimientos para backup DR y continuidad de negocio con RTO/RPO definidos por sistema.
Tabla de contenido
Capitulo 1
Fundamentos y conceptos criticos
Antes de implementar cualquier estrategia de backup es esencial comprender los conceptos que determinan que se respalda con que frecuencia y cuanto tiempo toma recuperarlo.
RTO RPO MTTR y MTBF
| Metrica | Definicion | Ejemplo |
|---|---|---|
| RTO | Tiempo maximo aceptable para restaurar el servicio | Base de datos produccion: 2 horas |
| RPO | Perdida maxima de datos aceptable en tiempo | Transacciones financieras: 15 minutos |
| MTTR | Tiempo promedio historico de recuperacion | Si tardas 3h en promedio: MTTR 3h |
| MTBF | Tiempo promedio entre fallos | Falla cada 6 meses: MTBF 4380 horas |
Estrategia 3-2-1-1-0
- 3 copias del dato: produccion mas 2 backups
- 2 tipos de almacenamiento diferentes como SSD mas S3
- 1 copia fuera del sitio principal en otra region cloud
- 1 copia offline o inmutable con S3 Object Lock o Vault Lock
- 0 errores en la ultima prueba de restauracion verificada
Un backup no verificado no es un backup. Hasta que no hayas restaurado exitosamente solo tienes esperanza de recuperacion no certeza.
Capitulo 2
Inventario y clasificacion de sistemas
No todos los sistemas requieren el mismo nivel de proteccion. Clasificar los activos por criticidad permite optimizar costos garantizando la recuperacion de lo que importa.
Matriz de criticidad
| Sistema | Criticidad | RTO objetivo | RPO objetivo | Estrategia |
|---|---|---|---|---|
| Base de datos produccion | Critica | 30 min | 5 min | Backup continuo + replica Multi-AZ |
| API principal de negocio | Critica | 15 min | 1 hora | Snapshot EC2 cada 6h |
| Archivos de usuarios | Alta | 2 horas | 4 horas | Sync S3 cada 4h con versionado |
| Logs de aplicacion | Media | 8 horas | 24 horas | Export diario a S3 Glacier |
| Entorno staging | Baja | 24 horas | 48 horas | Snapshot semanal |
Haz este ejercicio con un representante del negocio. Lo que TI considera critico a veces difiere de lo que el negocio considera critico.
Capitulo 3
Automatizacion de backups en cloud
Los backups manuales fallan. La unica estrategia confiable es la que funciona sin intervencion humana y notifica cuando hay un problema.
AWS Backup con Terraform
resource "aws_backup_plan" "produccion" {
name = "plan-backup-produccion"
rule {
rule_name = "backup-diario"
target_vault_name = aws_backup_vault.principal.name
schedule = "cron(0 2 * * ? *)"
lifecycle {
cold_storage_after = 30
delete_after = 365
}
copy_action {
destination_vault_arn = aws_backup_vault.secondary.arn
}
}
rule {
rule_name = "backup-semanal"
target_vault_name = aws_backup_vault.principal.name
schedule = "cron(0 1 ? * SUN *)"
lifecycle {
cold_storage_after = 90
delete_after = 2555
}
}
}
resource "aws_backup_vault" "principal" {
name = "vault-produccion"
kms_key_arn = aws_kms_key.backup.arn
}Script de backup PostgreSQL verificado
#!/bin/bash
set -euo pipefail
DB_HOST="prod-db.internal"; DB_NAME="appdb"; DB_USER="backup_user"
BUCKET="s3://prod-backups"; DATE=$(date +%Y%m%d_%H%M%S)
FILE="/tmp/backup_${DB_NAME}_${DATE}.sql.gz"
PGPASSWORD="${DB_PASSWORD}" pg_dump -h "$DB_HOST" -U "$DB_USER" "$DB_NAME" | gzip > "$FILE"
CHECKSUM=$(sha256sum "$FILE" | cut -d' ' -f1)
echo "$CHECKSUM" > "$FILE.sha256"
aws s3 cp "$FILE" "$BUCKET/postgresql/$DATE/" --sse aws:kms
aws s3 cp "$FILE.sha256" "$BUCKET/postgresql/$DATE/"
REMOTE=$(aws s3 cp "$BUCKET/postgresql/$DATE/$(basename $FILE).sha256" -)
if [ "$CHECKSUM" = "$REMOTE" ]; then
echo "Verificacion OK"
aws sns publish --topic-arn "$SNS_TOPIC" --message "Backup $DB_NAME OK: $DATE"
else
echo "ERROR: checksum no coincide"; exit 1
fi
rm -f "$FILE" "$FILE.sha256" El usuario de backup solo debe tener permisos de lectura: GRANT SELECT USAGE ON ALL TABLES TO backup_user. Nunca uses el usuario de la aplicacion.
Capitulo 4
Almacenamiento y gestion de retencion
El costo del almacenamiento de backups puede dispararse sin una politica de ciclo de vida clara.
Clases de almacenamiento S3
| Clase | Costo | Recuperacion | Caso de uso |
|---|---|---|---|
| Standard | $$$ | Inmediato | Backups ultimos 30 dias |
| Standard-IA | $$ | Inmediato | Backups 30-90 dias |
| Glacier Instant | $ | Milisegundos | Backups 90 dias a 1 ano |
| Glacier Flexible | $ | 3-5 horas | Backups 1-5 anos |
| Deep Archive | centavos | 12-48 horas | Cumplimiento 5+ anos |
Inmutabilidad anti-ransomware
resource "aws_s3_bucket_object_lock_configuration" "backups" {
bucket = aws_s3_bucket.backups.id
rule {
default_retention {
mode = "COMPLIANCE"
days = 30
}
}
}Capitulo 5
Pruebas de recuperacion y validacion
Las pruebas de recuperacion son el unico indicador real de que tu programa de backup funciona.
Calendario de pruebas
| Frecuencia | Tipo | Duracion | Que se verifica |
|---|---|---|---|
| Mensual | Restore parcial | 30-60 min | El backup es legible |
| Trimestral | Restore completo de base de datos | 2-4 horas | RTO real vs objetivo |
| Semestral | Restore completo de instancia | 4-8 horas | Servicio completo incluyendo DNS |
| Anual | Simulacro de DR fallo de region | 1-2 dias | Plan de desastre extremo a extremo |
Procedimiento de restore PostgreSQL
- Identificar el punto de recuperacion objetivo
- Crear entorno de restore aislado nunca restaurar directamente en produccion
- Descargar backup y verificar checksum SHA256 antes de continuar
- Descomprimir: gunzip backup_file.sql.gz
- Restaurar: psql -h restore-db -U admin nueva_db < backup_file.sql
- Verificar integridad con queries de conteo de registros y muestreo
- Si es para produccion actualizar DNS o connection strings
- Documentar tiempo real de restore para actualizar el RTO
Cada prueba de restore debe quedar documentada con fecha duracion resultado checksum verificado y responsable. Esta documentacion es evidencia requerida en ISO 27001 y SOC 2.
Capitulo 6
Plan de recuperacion ante desastres DRP
Un DRP es el conjunto de procedimientos que activas cuando el fallo es de la infraestructura completa.
Estrategias DR y su costo
| Estrategia | RTO tipico | RPO tipico | Costo | Cuando usarla |
|---|---|---|---|---|
| Backup and Restore | 4-8 horas | 24 horas | Minimo | Sistemas no criticos |
| Pilot Light | 1-2 horas | 1-4 horas | Bajo | Importancia media |
| Warm Standby | 15-30 min | 15 min | Medio | Sistemas criticos |
| Multi-Site Active | Segundos | Segundos | Alto | Mision critica |
Runbook de activacion del DRP
- Confirmar que el fallo es real max 5 min
- Declarar el incidente: notificar al CTO y al equipo
- Registrar el timestamp de inicio de cada accion
- Activar el entorno DR en la region secundaria
- Actualizar los registros DNS al entorno DR
- Notificar a los usuarios del cambio y tiempo estimado
- Verificar que todos los servicios criticos funcionan
- Iniciar recuperacion del entorno principal en paralelo
- Planificar el failback coordinado una vez el principal este listo
- Post-mortem dentro de las 48h
Capitulo 7
Recuperacion ante ransomware
El ransomware es hoy la amenaza mas costosa para la continuidad. La unica defensa efectiva es un backup inmutable y aislado.
Anatomia de un ataque
- Acceso inicial via credenciales robadas phishing o vulnerabilidad expuesta
- Persistencia: el atacante permanece invisible semanas o meses
- Reconocimiento: mapeo de la red y localizacion de datos criticos
- Cifrado: activacion simultanea en todos los sistemas identificados
- Extorsion: demanda de pago con amenaza de publicar datos
El tiempo medio entre la intrusion inicial y la activacion del ransomware es de 11 dias. Tus backups de los ultimos 11 dias pueden estar comprometidos. Los backups inmutables son la unica defensa.
Lista de verificacion de recuperacion
- NO pagar el rescate sin consultar con un especialista en respuesta a incidentes
- Aislar inmediatamente todos los sistemas afectados de la red
- Preservar evidencias: no apagar servidores tomar snapshots del estado actual
- Identificar el backup limpio mas reciente ANTES del punto de compromiso
- Verificar que el backup no fue cifrado con checksum y lectura de muestra
- Restaurar en entorno limpio y aislado no en la infraestructura comprometida
- Reconstruir la infraestructura comprometida desde cero
- Cambiar TODAS las credenciales antes de reconectar a produccion
Capitulo 8
Metricas y mejora continua
Lo que no se mide no se mejora. Establece KPIs que den visibilidad real al estado del programa de backup.
KPIs del programa de backup
| KPI | Formula | Objetivo | Medicion |
|---|---|---|---|
| Tasa de exito | Backups exitosos / programados x100 | >=99.5% | Diaria |
| Cobertura | Sistemas con backup / totales x100 | 100% | Semanal |
| RTO real vs objetivo | Tiempo real / RTO objetivo | <=1.0 | Por prueba |
| Backups verificados | Con prueba exitosa / total x100 | >=20% mensual | Mensual |
| Antiguedad de prueba | Dias desde ultimo restore completo | <=90 dias | Mensual |
Automatiza la generacion de estas metricas con un script Python que consulte AWS Backup y publique los resultados en Slack o CloudWatch.
Capitulo 9
Plantillas y apendices operativos
Las plantillas estan listas para completar y adaptar. Son documentos vivos que deben actualizarse cada vez que cambia la infraestructura.
Plantilla registro de prueba de restore
| Campo | Valor ejemplo |
|---|---|
| Fecha | 2026-05-15 |
| Tipo | Restore completo PostgreSQL produccion |
| Backup utilizado | backup_appdb_20260514_020000.sql.gz |
| Checksum verificado | Si SHA256 coincide |
| Entorno de restore | aislado eu-west-1 |
| Responsable | Kevin Alpizar |
| Hora inicio | 09:00 UTC |
| Hora fin | 10:45 UTC |
| RTO real | 1h 45min vs objetivo 2h OK |
| Resultado | EXITOSO |
Este playbook debe revisarse cada trimestre o ante cualquier cambio arquitectural. Un playbook desactualizado es casi tan malo como no tener uno.