Sistemas · Ficha técnica

Bóveda GS · gestor de respaldos de Grupo Secacao

v1 · 13-nov-2026

boveda-gs.pages.dev · en producción desde oct-2026

Respaldos por departamento, cifrados con llave propia, en dos regiones y sin posibilidad de sobrescribir.

Cada área de Grupo Secacao sube o recibe automáticamente sus copias (OneDrive, NetSuite). Todo queda versionado, cifrado y registrado en bitácora. Solo entra personal con cuenta Microsoft 365 y un segundo código propio de la Bóveda.

12áreas con permisos separados
2regiones: Norteamérica + Europa (fuera de sitio)
AES-256llave distinta por área (SSE-C)
30 díasinmutabilidad: nada se borra ni reescribe

1Arquitectura

Entradas
Personas (navegador)Subida manual por partes de 20 MB, carpetas por área, PIN personal opcional.
OneDrive automáticoDelta de Microsoft Graph cada noche; destino «área › OneDrive/usuario».
NetSuite (empuja)Credencial de máquina que solo puede subir. No consume licencia.
Bóveda GS · Cloudflare
Pages + FunctionsInterfaz y API: acceso, permisos, cifrado, versiones, enlaces, recuperación.
D1 (base de datos)Áreas, miembros, archivos, versiones, bitácora, sesiones (solo hashes), cola de réplicas.
Worker «boveda-cron»Cada 20 min, 18:00–06:59 GT: corre OneDrive y la réplica a S3.
Microsoft 365 (Entra ID)Inicio de sesión del inquilino de Grupo Secacao.
Almacenamiento
R2 principal · Norteamérica esteCopia viva, bloqueo inmutable 30 días sobre las versiones.
R2 copia · Europa occidentalSe escribe en paralelo con cada parte; si falla queda marcada en la interfaz.
Amazon S3 (tercera copia)Lista · apagada Se enciende al cargar las credenciales (sección 7).

2Multidepartamento

La Bóveda está dividida en 12 áreas. Cada una tiene su color, su responsable, sus carpetas (hasta 3 niveles) y su propia llave de cifrado: un área no puede leer los archivos de otra aunque comparta la misma infraestructura.

Dirección y Gerencia
Finanzas
Contabilidad
Talento Humano
Compras
Legal
Comercial
Proyectos
Operación y Energía
Sistemas de Gestión
Comunicación
Tecnología (TI)
Rol / permisoQué puede hacer
Usuario con «subir»Ve solo sus áreas habilitadas (las demás con candado, sin cifras). Sube archivos y crea carpetas. No lista ni descarga lo que hay: el servidor lo impide.
Responsable de áreaPermiso más alto dentro de su área; gestiona quién tiene acceso.
AdministradorVe todas las áreas, versiones, almacenamiento y bitácora; restaura, comparte con enlaces controlados, gestiona personas y ordena recuperaciones ante desastres.
Integración (máquina)Credencial fija a un área y carpeta (p. ej. NetSuite → TI). Solo sube.

Las personas se dan de alta por correo antes de su primer ingreso; el administrador asigna el área y el permiso.

3Niveles de seguridad

1
Identidad corporativaInicio de sesión con Microsoft 365 de Grupo Secacao. Sin cuenta corporativa no se entra.
2
Código de bóveda (segundo factor propio)Código TOTP personal (Microsoft o Google Authenticator), independiente de M365. Un código no se reutiliza; 5 errores cierran la sesión.
3
Sesión acotadaCookie segura (HttpOnly) de máximo 8 h; la bóveda se cierra sola tras 10 minutos sin uso, también para administradores.
4
Permisos por áreaVer < subir < responsable; solo administradores consultan datos. Validado en el servidor, no solo en la pantalla.
5
Cifrado con llave por áreaCada área cifra con su propia llave AES-256 (detalle en la sección 4).
6
Inmutabilidad y versionesMismo nombre = versión nueva; nada se sobrescribe. Regla de bloqueo de 30 días en ambas regiones: ni un administrador ni un atacante con acceso puede borrar una versión reciente (defensa contra ransomware).
7
TrazabilidadBitácora de cada acción (subir, descargar, compartir, restaurar, ingesta, alertas). Alerta automática si un respaldo llega con menos de la mitad del tamaño anterior.
8
Compartir controladoEnlaces que exigen M365, con destinatarios, ver o descargar, código opcional, vencimiento de 1/7/30 días, máximo de usos y revocables. Solo se guarda el hash del enlace.

4Cifrado

QuéCómoQuién tiene la llave
En tránsitoHTTPS/TLS en todo momento.Cloudflare
En reposo (base)R2 y D1 cifran todo por defecto (AES-256).Cloudflare
Archivos por área (SSE-C)Llave AES-256 distinta por área, derivada con HKDF-SHA256 de una llave maestra. Se entrega en cada operación y R2 no la guarda. Se aplica en las dos regiones.Grupo Secacao (llave maestra con resguardo fuera de línea)
PIN personal (opcional)Cifrado en el navegador con AES-256-GCM; llave derivada con PBKDF2-SHA256 (310 000 iteraciones) del PIN de 6–12 dígitos. El PIN nunca llega al servidor. Encima se aplica igual la llave del área.Solo la persona
Códigos de bóveda (TOTP)Guardados cifrados con AES-256-GCM.Grupo Secacao
Sesiones, enlaces, credenciales de máquinaSolo se guarda su SHA-256; el valor real no existe en la base.—
Tercera copia en S3Cifrado en destino SSE-S3 (AES256) o SSE-KMS.AWS / Grupo Secacao (KMS)

No es cifrado de extremo a extremo: la Bóveda descifra para entregar a quien tiene permiso (por eso permite vista previa y recuperación). La excepción es el PIN personal. Perder la llave maestra = perder los respaldos cifrados; olvidar el PIN = perder esos archivos.

5Integraciones

IntegraciónEstadoCómo funciona
Microsoft 365 / Entra IDActivaInicio de sesión del inquilino corporativo con app registrada propia.
OneDriveActivaCada persona conecta su OneDrive (permiso delegado de solo lectura) y elige carpeta. Cada noche se copian los cambios; el token se guarda cifrado.
NetSuiteLista · esperando a NetSuiteNetSuite empuja sus respaldos a /api/ingesta/netsuite con credencial de máquina: directo hasta 20 MB o por partes de 6 MiB hasta 10 GB; acepta base64 (SuiteScript). Controles: IP permitidas, cuota diaria, vencimiento a 90 días, alerta de respaldo sospechoso.
Amazon S3Programada · apagadaCola de réplicas automática; se activa con las credenciales AWS (sección 7).
Recuperación ante desastresActivaOrden confirmada con código nuevo → manifiesto CSV (última versión de cada archivo a una fecha). Simulacros programados y registrados.

6Límites

ConceptoLímite
Archivo subido por persona50 GB (partes de 20 MB, reanudables)
Archivo con PIN personal2 GB (se descifra en memoria del navegador)
NetSuite · subida directa / por partes20 MB / 10 GB (partes exactas de 6 MiB)
NetSuite · cuota diaria200 archivos y 5 GB por día (ampliable a pedido)
NetSuite · vigencia de la credencial90 días, luego se rota
OneDrive · por corrida5 archivos / 400 MB; archivos de más de 250 MB se omiten (se suben a mano)
Réplica a S3Hasta 5 GB por archivo; 10 versiones por corrida (≈ 390 por noche); 6 reintentos cada 30 min
Carpetas3 niveles, nombres de hasta 40 caracteres
Sesión / inactividad8 h máximo / 10 min sin uso
Código de bóveda5 intentos fallidos cierran la sesión
Enlaces compartidosVencen a 1, 7 o 30 días; máximo de usos configurable
Inmutabilidad30 días por versión, en ambas regiones

7Réplica a Amazon S3 · pasos para integrarla

Automatizada, apagada El código está en producción: cada versión que llega de una integración marcada para S3 (hoy NetSuite) entra a una cola, y el Worker nocturno la envía a S3 descifrándola de R2 y cifrándola de nuevo en destino. Mientras no haya credenciales, la cola espera sin perder nada: al activarla se envían también las versiones ya acumuladas.

  1. Cuenta AWS y bucket. Crear un bucket privado (p. ej. región us-east-1) con Bloquear acceso público, Versionado y Object Lock (modo Governance o Compliance, retención sugerida 30–90 días). Cifrado predeterminado SSE-S3 o SSE-KMS.
  2. Ciclo de vida (costo). Regla que pase los objetos a S3 Glacier Flexible Retrieval o Deep Archive a los 30 días y los venza según la política de retención del SGSI.
  3. Usuario IAM de solo escritura. Crear un usuario técnico con únicamente s3:PutObject sobre el prefijo de la Bóveda (no lista, no lee, no borra):
    {
      "Version": "2012-10-17",
      "Statement": [{
        "Effect": "Allow",
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::<bucket>/boveda-gs/*"
      }]
    }
    Si se usa SSE-KMS, agregar kms:GenerateDataKey sobre esa llave.
  4. Llaves de acceso. Generar la Access Key del usuario IAM y entregarla a TI por canal seguro (nunca por correo ni chat).
  5. Cargar la configuración en Cloudflare (proyecto Pages boveda-gs → Settings → Variables):
    S3_ENDPOINT = https://s3.us-east-1.amazonaws.com
    S3_REGION   = us-east-1
    S3_BUCKET   = <bucket>
    S3_PREFIJO  = boveda-gs        (opcional)
    S3_SSE      = AES256 | aws:kms (opcional)
    
    npx wrangler pages secret put S3_ACCESS_KEY --project-name boveda-gs
    npx wrangler pages secret put S3_SECRET_KEY --project-name boveda-gs
  6. Volver a desplegar la Bóveda para que tome las variables. No hay cambios de código.
  7. Verificar. En la siguiente ventana nocturna (cada 20 min, 18:00–06:59 GT) aparecen los objetos en boveda-gs/<área>/<carpeta>/<archivo>/v0001-…. En la Bóveda, la cola de réplicas pasa a «lista»; los errores quedan con su motivo y se reintentan hasta 6 veces.
  8. Ampliar (opcional). Para replicar también otras áreas a S3 se marca la integración o el área con destino s3. Las subidas manuales aún no se encolan (ajuste menor pendiente).

Pendiente técnico: archivos de más de 5 GB a S3 requieren carga por partes (hoy quedan en error con su motivo). Costo estimado: almacenamiento S3/Glacier según volumen; la transferencia de salida de R2 no tiene costo.

8Uso para la plataforma de Legal

La Bóveda ya tiene un área Legal con llave propia. Para la plataforma de obligaciones y vencimientos puede servir como custodia inmutable de evidencias y versiones firmadas de contratos: el documento vivo sigue en SharePoint (donde se trabaja), y la versión aprobada o la evidencia validada se respalda en la Bóveda con fecha, hash y bitácora, sin posibilidad de alteración durante el periodo de bloqueo.

9Pendientes