Saltar al contenido principal

Modelo de seguridad Zero-Knowledge

Qué es Zero-Knowledge​

Zero-Knowledge (ZK) es un principio arquitectónico en el que el servidor no tiene acceso a los datos descifrados. Todo el cifrado y descifrado ocurre en el lado del cliente.

En términos prácticos: incluso si un atacante obtiene acceso completo al servidor de Passwork y su base de datos, solo encontrará blobs cifrados — sin las claves de usuario, leer los secretos es imposible.

Cómo funciona​

┌─────────────────┐                      ┌─────────────────┐
│ Client │ │ Passwork │
│ (browser/CLI) │ │ Server │
├─────────────────┤ ├─────────────────┤
│ Encryption keys │ ──── HTTPS ────► │ Encrypted │
│ Decryption │ ◄── HTTPS ──── │ data │
│ Encryption │ │ Metadata │
└─────────────────┘ └─────────────────┘
Almacenado en el servidorConocido solo por el cliente
Contraseñas y campos cifradosClaves de cifrado
Archivos adjuntos cifradosValores descifrados
Nombres de registros y carpetasContraseña maestra del usuario
Estructura de derechos de acceso—
Registro de auditoría—

Beneficios de seguridad​

Protección contra compromiso del servidor​

Incluso con acceso completo al servidor, un atacante no puede:

  • leer contraseñas o secretos;
  • descifrar archivos adjuntos (claves, certificados);
  • recuperar valores de copias de seguridad de la base de datos.

Protección contra amenazas internas​

Los administradores de Passwork (administradores de sistemas, DBAs) no tienen medios técnicos para ver el contenido de los secretos — incluso con acceso directo a la base de datos.

Cumplimiento​

Zero-Knowledge simplifica las auditorías de seguridad: puede demostrar que incluso los usuarios privilegiados de la infraestructura no pueden acceder a los secretos.

tip

En la versión on-premise de Passwork, el modo Zero-Knowledge puede ser deshabilitado por el administrador. Consulte a su equipo de seguridad para conocer la configuración actual.

Impacto en la automatización​

Zero-Knowledge limita lo que el servidor puede hacer por sí mismo.

Limitaciones del servidor​

OperaciónPor qué no puede funcionar del lado del servidor
Rotación automática de contraseñasEl servidor carece de claves de cifrado
Verificaciones de calidad de contraseñasLos valores están cifrados
Integración incorporada con sistemas externosRequiere un cliente con claves

La solución​

Para la rotación y la automatización avanzada, utilice un cliente externo — un script o servicio que:

  1. Se autentica con Passwork (obtiene tokens).
  2. Obtiene y descifra secretos mediante CLI/SDK.
  3. Realiza acciones en los sistemas de destino (bases de datos, servicios).
  4. Cifra y escribe los nuevos valores de vuelta.
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│ Rotation │ │ Passwork │ │ Target │
│ script │ ───► │ (stores) │ │ system │
│ │ ◄─── │ │ │ (PostgreSQL)│
│ - CLI/SDK │ └──────────────┘ │ │
│ - keys │ ─────────────────────────► │ │
└──────────────┘ └──────────────┘

Configuración típica​

# Cron job for rotation
0 3 * * 0 /opt/scripts/rotate-db-passwords.py

Qué hace rotate-db-passwords.py:

  1. Lista los registros en la carpeta infrastructure/production/databases.
  2. Para cada registro:
    • genera una nueva contraseña;
    • actualiza la contraseña en PostgreSQL/MySQL;
    • almacena la nueva contraseña en Passwork.
  3. Envía un resumen a Slack o correo electrónico.

Los ejemplos de implementación se pueden encontrar en: