Ir al contenido

Copias de seguridad cifradas

La bóveda de copias de seguridad cifradas le permite almacenar volcados de base de datos y archivos comprimidos en su servidor Quiet Guard en forma de blobs cifrados opacos que el servidor nunca puede leer. Se apoya en el mismo par de claves por equipo que el almacenamiento cifrado.

Funcionalidad de pago. Las copias de seguridad están condicionadas a la funcionalidad de plan backups y a una cuota de almacenamiento por plan: Indie incluye 5 GB y Studio 20 GB; Free y Solo no incluyen ninguna. Vea Facturación y planes.

Conocimiento cero por diseño

El servidor solo almacena contenido cifrado y metadatos (tipo, nombre, tamaño, suma de comprobación, marcas de tiempo). Nunca posee la clave de cifrado y no puede descifrar sus copias de seguridad. El flujo es el siguiente:

  1. El cliente cifra el archivo localmente con una clave de datos aleatoria, y luego sella esa clave con la clave pública de su equipo.
  2. El blob sellado se sube al servidor.
  3. Para restaurar, el cliente descarga el blob, desenvuelve su clave privada localmente a partir de la frase secreta del equipo, y descifra.

En ningún momento el servidor ve su frase secreta ni la clave desenvuelta.

Cuota de almacenamiento

Cada plan concede una cuota de copias de seguridad en gigabytes. El servidor sigue el total de bytes almacenados en todas las copias de seguridad de sus proyectos. Cuando una subida superaría la cuota, se rechaza con un 413 Request Entity Too Large:

json
{
  "message": "Backup storage quota exceeded.",
  "used_bytes": 5012345678,
  "limit_bytes": 5000000000
}

Elimine copias de seguridad antiguas para liberar espacio.

Gestionar las copias de seguridad en la interfaz

Cuando su plan permite copias de seguridad, el proyecto muestra una pestaña Copias en el panel /app. La lista solo contiene metadatos: fecha, tipo, nombre, tamaño, suma de comprobación y el identificador, copiable, que es lo que monitor:restore espera como argumento. El contenido permanece sellado.

Dos botones por fila, y la diferencia entre ambos es lo esencial.

Descifrar descarga el blob y lo descifra en su navegador, con la clave privada de su equipo desenvuelta a partir de su frase de contraseña. Lo que guarda es el archivo en claro, listo para usar. El servidor no participa: envía el cifrado que guardaba, y la clave que lo abre nunca ha existido de su lado. Desbloquee antes este navegador en la página Cifrado: es el único lugar donde se escribe la frase de contraseña, y la derivación Argon2id se hace allí una vez para la sesión de la pestaña.

Descargar entrega el blob sellado tal cual, un archivo .enc que nada abre sin su clave. Es la salida de emergencia: archivar el cifrado en otro sitio, o descifrarlo desde la línea de comandos con monitor:restore --file=<archivo> en la máquina donde está instalado el SDK.

Puntos de entrada del servidor

La bóveda se pilota mediante una API con clave de proyecto (detalles completos en la referencia de la API de ingesta):

  • GET /api/v1/encryption-key: sirve la clave pública + la clave privada envuelta + la sal al cliente autenticado.
  • GET /api/v1/backups: lista las copias de seguridad.
  • POST /api/v1/backups: sube un blob cifrado (multipart/form-data con type, name opcional y file). type vale database o files.
  • GET /api/v1/backups/{uuid}: descarga el blob cifrado.
  • DELETE /api/v1/backups/{uuid}: elimina una copia de seguridad.

Comandos del cliente

No llamará a estos puntos de entrada a mano. El cliente Laravel proporciona tres comandos:

  • monitor:backup: construye un archivo (copia SQLite, mysqldump / pg_dump, o un tar de una carpeta), lo cifra con la clave pública del equipo y lo sube. --keep=N elimina todas las copias del mismo tipo salvo las N más recientes una vez que el envío ha ido bien, que es lo que impide que una planificación nocturna llene la asignación.
  • monitor:backups: lista lo que la bóveda contiene para el proyecto, la más reciente primero, con el identificador que monitor:restore necesita.
  • monitor:restore: recupera el material de clave, desenvuelve la clave privada localmente a partir de su frase secreta, descarga el blob, lo compara con el checksum que publica la lista y lo descifra. Un blob que no coincide se rechaza con un mensaje propio: una descarga dañada ya no se confunde con una frase secreta equivocada. --file=<archivo> descifra un blob que ya descargó desde el panel, sin volver a pedirlo al servidor.
Consulte la documentación del SDK Laravel para las opciones de los comandos y ejemplos, parta de la documentación del SDK Laravel.

Está leyendo la documentación Quiet Guard v1.0.