# US-ADM-006: Gestionar Backups y RestauraciΓ³n **ID:** US-ADM-006 **MΓ³dulo:** MAI-013 **Relacionado con:** RF-ADM-005, ET-ADM-004 **Prioridad:** CrΓ­tica **Story Points:** 8 --- ## πŸ“– Historia de Usuario **Como** Director General o Administrador de Sistemas **Quiero** gestionar backups automΓ‘ticos y poder restaurar el sistema cuando sea necesario **Para** garantizar la continuidad del negocio y cumplir con los RTO/RPO definidos --- ## βœ… Criterios de AceptaciΓ³n ### 1. Ver Lista de Backups ```gherkin Given que soy Director o SysAdmin When accedo a "AdministraciΓ³n > Backups" Then debo ver una tabla con todos los backups con: - Fecha y hora de creaciΓ³n - Tipo (Full, Incremental, Files, Snapshot) - TamaΓ±o (GB) - Estado (Completado, En Progreso, Fallido) - Verificado (βœ“/βœ—) - UbicaciΓ³n (Local, S3) - Expira en (dΓ­as restantes) - Acciones: Descargar, Restaurar, Verificar, Eliminar And ordenados por fecha descendente ``` ### 2. Crear Backup Manual ```gherkin Given que necesito un backup inmediato antes de un cambio crΓ­tico When hago clic en "Crear Backup Manual" And selecciono tipo: "Full" And confirmo la acciΓ³n Then el sistema debe: - Iniciar el proceso de backup inmediatamente - Mostrar progreso en tiempo real (%) - Ejecutar pg_dump de la base de datos - Calcular checksum SHA-256 - Subir a S3 con encriptaciΓ³n AES-256 - Actualizar estado a "Completado" - Enviar notificaciΓ³n de Γ©xito - Estimar tiempo de finalizaciΓ³n ``` ### 3. Backups AutomΓ‘ticos Programados ```gherkin Given que el sistema estΓ‘ en producciΓ³n Then deben ejecutarse automΓ‘ticamente: - Backup Full: Diario a las 3:00 AM - Backup Incremental: Cada 6 horas - Snapshot de archivos: Cada 12 horas And si alguno falla: - Reintentar automΓ‘ticamente 3 veces - Enviar alerta crΓ­tica por email + SMS - Registrar en audit log con severidad "crΓ­tica" ``` ### 4. Monitoreo de Progreso en Tiempo Real ```gherkin Given que un backup estΓ‘ en progreso When estoy en la pΓ‘gina de Backups Then debo ver: - Barra de progreso animada - Porcentaje completado (actualizado cada 5 segundos) - Tiempo transcurrido - Tiempo estimado restante - Etapa actual: "Exportando base de datos...", "Calculando checksum...", "Subiendo a S3..." ``` ### 5. Restaurar desde Backup ```gherkin Given que necesito restaurar el sistema a un punto anterior When selecciono un backup verificado And hago clic en "Restaurar" Then el sistema debe mostrar: - ⚠️ Advertencia crΓ­tica: "Esta acciΓ³n detendrΓ‘ el sistema" - ConfirmaciΓ³n con checkbox: "Entiendo que se perderΓ‘n cambios posteriores" - Input para escribir: "RESTAURAR" (para confirmar) When confirmo Then el sistema debe: - Validar checksum del backup antes de restaurar - Detener la aplicaciΓ³n (modo mantenimiento) - Crear un backup de seguridad pre-restauraciΓ³n - Ejecutar pg_restore - Reiniciar aplicaciΓ³n - Enviar notificaciΓ³n de restauraciΓ³n exitosa - Registrar en audit log ``` ### 6. VerificaciΓ³n de Integridad ```gherkin Given que un backup fue creado hace 3 dΓ­as When hago clic en "Verificar Integridad" Then el sistema debe: - Descargar backup desde S3 (si no estΓ‘ local) - Recalcular checksum - Comparar con checksum original - Crear base de datos temporal: "backup_test_[uuid]" - Ejecutar pg_restore en DB temporal - Ejecutar queries de validaciΓ³n bΓ‘sica - Eliminar DB temporal - Marcar backup como "Verificado" con timestamp - Mostrar resultado: βœ… "Backup Γ­ntegro y restaurable" ``` ### 7. Prueba de RestauraciΓ³n AutomΓ‘tica ```gherkin Given que es el primer domingo de cada mes a las 2:00 AM When se ejecuta el cron de prueba de restauraciΓ³n Then el sistema debe: - Seleccionar el backup mΓ‘s reciente - Crear DB temporal - Restaurar en DB temporal - Validar integridad de datos - Enviar reporte por email: - βœ… Backup restaurado exitosamente - Tiempo de restauraciΓ³n: 12 minutos - Registros validados: 150,000 - Estado: APTO PARA PRODUCCIΓ“N - Eliminar DB temporal ``` ### 8. Estrategia 3-2-1 ```gherkin Given que se completa un backup Then el sistema debe mantener: - 3 copias: - 1 en disco local (/backups/) - 1 en S3 regiΓ³n primaria (us-east-1) - 1 en S3 regiΓ³n secundaria (us-west-2) via replicaciΓ³n - 2 tipos de medios: - Disco (local) - Cloud (S3) - 1 copia offsite: - S3 fuera del datacenter principal And validar que las 3 copias existen ``` ### 9. RetenciΓ³n AutomΓ‘tica ```gherkin Given que existen backups con diferentes antigΓΌedades Then el sistema debe mantener: - Backups diarios: Últimos 7 dΓ­as - Backups semanales: Últimas 4 semanas - Backups mensuales: Últimos 12 meses - Backups anuales: Últimos 3 aΓ±os And eliminar automΓ‘ticamente los que excedan retenciΓ³n And enviar notificaciΓ³n antes de eliminar backups antiguos ``` ### 10. Dashboard de Salud de Backups ```gherkin Given que accedo al Dashboard de Backups Then debo ver widgets con: - Estado del ΓΊltimo backup (βœ…/❌) - PrΓ³ximo backup programado (countdown) - Tasa de Γ©xito (ΓΊltimos 30 dΓ­as) - Espacio usado (local + S3) - GrΓ‘fico de tamaΓ±o de backups (tendencia) - Backups sin verificar (alerta si >3) - RTO estimado (basado en ΓΊltima restauraciΓ³n) - RPO actual (<1 hora) ``` --- ## 🎨 Mockup / Wireframe ### Lista de Backups ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ GestiΓ³n de Backups [Crear Backup] [βš™οΈ Config] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ πŸ“Š Dashboard β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Último β”‚ PrΓ³ximo en β”‚ Tasa Γ‰xito β”‚ Espacio Usado β”‚ β”‚ β”‚ β”‚ βœ… Exitoso β”‚ 2h 15m β”‚ 98.5% β”‚ 450 GB (Local) β”‚ β”‚ β”‚ β”‚ Hace 4h β”‚ β”‚ (30 dΓ­as) β”‚ 1.2 TB (S3) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Fecha/Hora Tipo TamaΓ±o Estado Verificadoβ”‚ β”‚ ─────────────────────────────────────────────────────────────── β”‚ β”‚ 20 Nov 03:00 Full 12.5 GB βœ… βœ“ β”‚ β”‚ [↓][πŸ”„][❌] β”‚ β”‚ β”‚ β”‚ 19 Nov 21:00 Incremental 2.3 GB βœ… βœ“ β”‚ β”‚ [↓][πŸ”„][❌] β”‚ β”‚ β”‚ β”‚ 19 Nov 15:00 Incremental 1.8 GB βœ… βœ— β”‚ β”‚ [Verificar] [↓][πŸ”„][❌] β”‚ β”‚ β”‚ β”‚ 19 Nov 03:00 Full 12.1 GB βœ… βœ“ β”‚ β”‚ [↓][πŸ”„][❌] β”‚ β”‚ β”‚ β”‚ 18 Nov 15:00 Incremental ⏳ En progreso... β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 60% β”‚ β”‚ Subiendo a S3... 8 min restantes β”‚ β”‚ β”‚ β”‚ 18 Nov 03:00 Full ❌ FALLIDO β”‚ β”‚ Error: Insufficient disk space β”‚ β”‚ [πŸ”„ Reintentar] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Modal Crear Backup Manual ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Crear Backup Manual [X]β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ ⚠️ Esta operaciΓ³n puede afectar el β”‚ β”‚ rendimiento del sistema temporalmente β”‚ β”‚ β”‚ β”‚ Tipo de Backup * β”‚ β”‚ β—‰ Full (Base de datos completa) β”‚ β”‚ β—‹ Incremental (Solo cambios) β”‚ β”‚ β—‹ Files (Archivos y documentos) β”‚ β”‚ β”‚ β”‚ TamaΓ±o estimado: ~12 GB β”‚ β”‚ Tiempo estimado: ~15 minutos β”‚ β”‚ β”‚ β”‚ β˜‘οΈ Subir a S3 β”‚ β”‚ β˜‘οΈ Calcular checksum β”‚ β”‚ β˜‘οΈ Notificar al completar β”‚ β”‚ β”‚ β”‚ Etiqueta (opcional) β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Pre-migration-v2.5 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ [Cancelar] [Iniciar Backup] β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Modal Restaurar Backup ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ⚠️ RESTAURAR BACKUP - ACCIΓ“N CRÍTICA [X]β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ 🚨 ADVERTENCIA IMPORTANTE: β”‚ β”‚ β”‚ β”‚ β€’ Esta acciΓ³n DETENDRÁ el sistema β”‚ β”‚ β€’ Se perderΓ‘n todos los cambios posteriores β”‚ β”‚ al backup seleccionado β”‚ β”‚ β€’ Usuarios serΓ‘n desconectados β”‚ β”‚ β€’ Tiempo estimado de downtime: 15-30 min β”‚ β”‚ β”‚ β”‚ ─────────────────────────────────────────── β”‚ β”‚ β”‚ β”‚ Backup Seleccionado: β”‚ β”‚ β€’ Fecha: 19 Nov 2025, 03:00 AM β”‚ β”‚ β€’ Tipo: Full β”‚ β”‚ β€’ TamaΓ±o: 12.1 GB β”‚ β”‚ β€’ Verificado: βœ… SΓ­ (18 Nov) β”‚ β”‚ β€’ Checksum: βœ… VΓ‘lido β”‚ β”‚ β”‚ β”‚ β˜‘οΈ Entiendo que se perderΓ‘n cambios desde β”‚ β”‚ el 19 Nov 03:00 hasta ahora β”‚ β”‚ β”‚ β”‚ β˜‘οΈ He notificado al equipo del downtime β”‚ β”‚ β”‚ β”‚ Para confirmar, escribe: RESTAURAR β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ [Cancelar] [RESTAURAR AHORA] β”‚ β”‚ (deshabilitado) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Modal Progreso de RestauraciΓ³n ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ RestauraciΓ³n en Progreso... [πŸ“Š] β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ πŸ”„ SISTEMA EN MODO MANTENIMIENTO β”‚ β”‚ β”‚ β”‚ Progreso Global: β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 65% β”‚ β”‚ β”‚ β”‚ Etapa Actual: β”‚ β”‚ βœ… 1. Backup de seguridad creado β”‚ β”‚ βœ… 2. AplicaciΓ³n detenida β”‚ β”‚ βœ… 3. ValidaciΓ³n de checksum β”‚ β”‚ πŸ”„ 4. Restaurando base de datos... β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 80% β”‚ β”‚ ⏳ 5. Reiniciar aplicaciΓ³n β”‚ β”‚ ⏳ 6. Validar integridad β”‚ β”‚ β”‚ β”‚ Tiempo transcurrido: 12 minutos β”‚ β”‚ Tiempo estimado restante: 6 minutos β”‚ β”‚ β”‚ β”‚ πŸ“ Log en tiempo real: β”‚ β”‚ [03:15:22] Extrayendo tablas... β”‚ β”‚ [03:15:45] Restaurando Γ­ndices... β”‚ β”‚ [03:16:10] Aplicando constraints... β”‚ β”‚ β”‚ β”‚ [Cancelar RestauraciΓ³n] β”‚ β”‚ (solo primeros 2 minutos) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ§ͺ Casos de Prueba ### CP-001: Crear Backup Manual Exitoso **Precondiciones:** - Sistema en estado normal - Espacio suficiente en disco **Pasos:** 1. Ir a "Backups" 2. Clic "Crear Backup Manual" 3. Seleccionar "Full" 4. Confirmar **Resultado Esperado:** - βœ… Backup inicia inmediatamente - βœ… Progreso visible en tiempo real - βœ… Estado cambia a "Completado" al finalizar - βœ… Archivo .dump creado en /backups/ - βœ… Subido a S3 con encriptaciΓ³n - βœ… Checksum calculado y almacenado - βœ… Email de confirmaciΓ³n enviado ### CP-002: Backup AutomΓ‘tico Diario **Precondiciones:** - Cron configurado para 3:00 AM **Pasos:** 1. Esperar a las 3:00 AM 2. Verificar ejecuciΓ³n **Resultado Esperado:** - βœ… Backup ejecuta automΓ‘ticamente - βœ… Tipo "Full" creado - βœ… Sin intervenciΓ³n manual - βœ… NotificaciΓ³n enviada al completar ### CP-003: Restaurar desde Backup **Precondiciones:** - Backup verificado disponible **Pasos:** 1. Seleccionar backup del 19 Nov 2. Clic "Restaurar" 3. Aceptar advertencias 4. Escribir "RESTAURAR" 5. Confirmar **Resultado Esperado:** - βœ… Sistema entra en modo mantenimiento - βœ… Backup de seguridad creado antes de restaurar - βœ… Checksum validado - βœ… pg_restore ejecuta correctamente - βœ… AplicaciΓ³n reinicia - βœ… Datos restaurados al 19 Nov - βœ… Email de confirmaciΓ³n enviado - βœ… Tiempo total <30 minutos ### CP-004: Verificar Integridad de Backup **Precondiciones:** - Backup de 3 dΓ­as de antigΓΌedad sin verificar **Pasos:** 1. Clic "Verificar Integridad" en el backup 2. Esperar proceso **Resultado Esperado:** - βœ… Checksum recalculado y validado - βœ… DB temporal creada - βœ… Restore exitoso en DB temporal - βœ… Queries de validaciΓ³n ejecutadas - βœ… DB temporal eliminada - βœ… Backup marcado con βœ“ "Verificado" - βœ… Timestamp de verificaciΓ³n actualizado ### CP-005: Backup Falla por Espacio Insuficiente **Precondiciones:** - Disco casi lleno **Pasos:** 1. Intentar crear backup manual **Resultado Esperado:** - βœ… Backup falla con error claro - βœ… Estado: "FALLIDO" - βœ… Error message: "Insufficient disk space" - βœ… Alerta crΓ­tica enviada por email + SMS - βœ… Audit log registra fallo con severidad "crΓ­tica" - βœ… No se crea archivo corrupto ### CP-006: RetenciΓ³n AutomΓ‘tica **Precondiciones:** - Backup de hace 8 dΓ­as (retenciΓ³n = 7 dΓ­as) **Pasos:** 1. Cron de limpieza ejecuta **Resultado Esperado:** - βœ… Backup eliminado automΓ‘ticamente - βœ… Archivo local eliminado - βœ… Objeto S3 eliminado - βœ… Registro en audit log - βœ… Email de notificaciΓ³n enviado --- ## πŸ”— Dependencias **Requisitos Previos:** - ET-ADM-004: Tabla `backup_records` implementada - ET-ADM-004: BackupService con cron jobs - pg_dump y pg_restore instalados - AWS S3 bucket configurado con permisos - Espacio en disco adecuado **APIs Necesarias:** - `GET /api/admin/backups` - Lista de backups - `POST /api/admin/backups` - Crear backup manual - `POST /api/admin/backups/:id/restore` - Restaurar - `POST /api/admin/backups/:id/verify` - Verificar integridad - `DELETE /api/admin/backups/:id` - Eliminar - `GET /api/admin/backups/dashboard` - EstadΓ­sticas --- ## πŸ“Š MΓ©tricas de Γ‰xito - **RTO (Recovery Time Objective):** <4 horas - **RPO (Recovery Point Objective):** <1 hora - **Tasa de Γ©xito de backups:** >99% - **Tiempo de backup full:** <30 minutos - **Tiempo de restauraciΓ³n:** <30 minutos - **Backups verificados:** 100% mensualmente --- ## πŸ”’ Consideraciones de Seguridad 1. **EncriptaciΓ³n:** Todos los backups en S3 con AES-256 2. **Acceso:** Solo usuarios con rol "director" pueden restaurar 3. **ValidaciΓ³n:** Siempre validar checksum antes de restaurar 4. **AuditorΓ­a:** Todas las operaciones registradas 5. **Backup pre-restauraciΓ³n:** Siempre crear backup de seguridad antes de restaurar --- **Generado:** 2025-11-20 **Estado:** βœ… Listo para desarrollo