Tema
POL-011: Política de Respaldo y Recuperación
| Campo | Valor |
|---|---|
| ID | POL-011 |
| Versión | 1.0 |
| Fecha de Emisión | 2026-03-13 |
| Próxima Revisión | 2027-03-13 |
| Propietario | CISO / Equipo DevOps |
| PCI DSS | Requisitos 3.1, 9.4, 12.10 |
| Preguntas ControlCase | Complemento a Q94 (recuperación) |
1. Propósito
Definir los procedimientos de respaldo (backup) y recuperación (recovery) para garantizar la disponibilidad e integridad de los sistemas y datos del CDE ante eventos de pérdida, corrupción o desastre.
2. Alcance
| Sistema | Tipo | Responsable de Backup |
|---|---|---|
| PostgreSQL (Managed — vault_db, auth_db) | Base de datos administrada | DigitalOcean (automático) + Fintrixs (verificación) |
| PostgreSQL (Self-hosted — payments_db, etc.) | Base de datos | DevOps (pg_dump + PITR) |
| Configuración Kubernetes | Manifiestos YAML | Git (GitHub) — Infrastructure as Code |
| Configuración Kong | kong.yml / deck | Git (GitHub) — Infrastructure as Code |
| Secretos/Claves | Keys, certs | Kubernetes Secrets + backup cifrado |
| Código fuente | Repositorio Git | GitHub (remoto) |
| Logs de auditoría | Archivos de log | DigitalOcean Spaces (archivo) |
3. Estrategia de Backup
3.1 Bases de Datos Administradas (DigitalOcean Managed PostgreSQL)
| Parámetro | Valor |
|---|---|
| Frecuencia | Automática diaria (DO) |
| Retención | 7 días de backups automáticos |
| Tipo | Snapshots + WAL archiving (PITR) |
| RPO (Recovery Point Objective) | ≤ 1 hora |
| RTO (Recovery Time Objective) | ≤ 4 horas |
| Cifrado | AES-256 (gestionado por DO) |
| Ubicación | Misma región (NYC) con redundancia |
3.2 Bases de Datos Self-Hosted
| Parámetro | Valor |
|---|---|
| Frecuencia | Diaria (pg_dump) + WAL continuo |
| Retención | 30 días |
| Tipo | Full dump diario + PITR con WAL |
| RPO | ≤ 15 minutos (WAL) |
| RTO | ≤ 2 horas |
| Cifrado | AES-256-GCM antes de almacenar |
| Almacenamiento | DigitalOcean Spaces (cifrado at-rest) |
| Verificación | Restauración de prueba mensual |
3.3 Infraestructura como Código
| Componente | Backup |
|---|---|
| Kubernetes manifiestos | Git (GitHub) — múltiples copias en cada clone |
| Network policies | Git (GitHub) |
| Docker Compose | Git (GitHub) |
| Kong configuration | Git (GitHub) |
| Terraform state | Remote backend cifrado |
| CI/CD pipelines | Git (GitHub) |
3.4 Claves y Secretos
| Tipo | Método de Backup | Retención |
|---|---|---|
| Claves de cifrado (MEK) | Export cifrado + almacenamiento offline | Permanente |
| JWT signing keys | Kubernetes Secrets + backup cifrado | Con rotación |
| Certificados TLS | Git (no privkey) + backup cifrado (privkey) | Vigencia del cert |
| Credenciales de BD | Kubernetes Secrets + backup cifrado | Con rotación |
4. Procedimiento de Backup
4.1 Ejecución Diaria (Automatizada)
- 02:00 UTC — Trigger automático de pg_dump para BDs self-hosted
- Compresión del dump (gzip)
- Cifrado AES-256-GCM con clave dedicada
- Upload a DigitalOcean Spaces (bucket
fintrix-backups) - Verificación de integridad (checksum SHA-256)
- Notificación de éxito/fallo al canal de monitoreo
- Limpieza de backups locales temporales
4.2 Verificación de Backups
| Actividad | Frecuencia | Responsable |
|---|---|---|
| Verificar que backup se ejecutó | Diaria (automática) | AlertManager |
| Verificar integridad del backup | Semanal | DevOps |
| Restauración de prueba completa | Mensual | DevOps |
| Test de recuperación de desastre | Semestral | DevOps + CISO |
5. Procedimiento de Recuperación
5.1 Escenarios de Recuperación
| Escenario | Procedimiento | RTO |
|---|---|---|
| Corrupción de BD | Restaurar desde último backup + replay WAL | 2 horas |
| Eliminación accidental de datos | PITR al punto antes de la eliminación | 1 hora |
| Compromiso de seguridad | Restaurar desde backup limpio + rotación de claves | 4 horas |
| Fallo de nodo Kubernetes | Auto-healing de DOKS + re-deploy de pods | 15 minutos |
| Fallo de región completa | Re-deploy en región alternativa desde Git + restore de backup | 8 horas |
5.2 Procedimiento de Restauración de BD
- Identificar punto de recuperación (timestamp o backup específico)
- Obtener backup cifrado de DigitalOcean Spaces
- Descifrar con clave correspondiente
- Verificar integridad del backup (checksum)
- Restaurar en ambiente de staging para validación
- Verificar datos restaurados
- Si datos correctos: restaurar en producción
- Verificar conectividad de servicios
- Documentar el evento de restauración
6. Retención y Destrucción de Backups
| Tipo de Backup | Retención | Método de Destrucción |
|---|---|---|
| Backups diarios de BD | 30 días | Eliminación automática + confirmación |
| Backups mensuales de BD | 12 meses | Eliminación con verificación |
| Backup de claves | Según rotación de clave | Borrado criptográfico |
| Backup de logs | Según POL-010 (12 meses) | Eliminación automática |
⚠️ Los datos de tarjetas en backups se mantienen cifrados y sujetos a la misma política de retención que los datos en producción.
7. Seguridad de Backups
| Control | Implementación |
|---|---|
| Cifrado en tránsito | TLS 1.2+ para transferencia a Spaces |
| Cifrado at-rest | AES-256-GCM (propio) + AES-256 (DO Spaces) |
| Control de acceso | Solo DevOps Lead y CISO tienen acceso al bucket de backups |
| Inmutabilidad | Object Lock configurado donde sea posible |
| Monitoreo | Alertas ante acceso no autorizado al bucket |
| Separación | Backups en cuenta/proyecto separado del CDE si es posible |
Historial de Revisiones
| Versión | Fecha | Autor | Cambios |
|---|---|---|---|
| 1.0 | 2026-03-13 | DevOps / CISO | Documento inicial |
Aprobación
| Rol | Nombre | Firma | Fecha |
|---|---|---|---|
| CISO / Oficial de Seguridad | _________________ | _________________ | //____ |
| Gerencia Ejecutiva | _________________ | _________________ | //____ |
