Seguridad

La seguridad como invariante, no como función.

Frontera multi-tenant impuesta a nivel de AST. Agentes mTLS con rotación automática. Un registro de auditoría inmutable. Detalles abajo.

Invariantes de arquitectura

  • Cada consulta a la TSDB recibe un organization_id. composeQuery y rewritePromQL añaden organization_id como matcher obligatorio. No hay ruta cruda para la entrada del usuario: la fuga de datos entre tenants es estructuralmente imposible.
  • Modelo de JWT de embed. Las claves de API emiten JWT de vida corta con filtros obligatorios en los claims. Los handlers leen los filtros de los claims, nunca de la URL. La suplantación mediante una URL falsificada es imposible.
  • Secretos mediante SecretBox (AES-256-GCM). Tokens OAuth, claves de firma de canales y claves de embed se guardan cifrados con una clave maestra. El texto plano nunca llega a los logs.
  • Identidad del agente = certificado de cliente verificado. Ni una cabecera ni el cuerpo. La validación mTLS ocurre en la configuración TLS del servidor, no en el código de la aplicación.
  • Las claves JWT rotan con cabecera kid. Varias claves de firma conviven en memoria durante la rotación. KeyRevocator invalida los tokens emitidos de forma anticipada cuando hace falta.
  • Los tokens de dashboards públicos nunca toman el org_id de la URL. El org_id se resuelve en el servidor desde la fila del token: una URL falsificada no puede cambiar de organización.

Autenticación

  • Sesiones por cookie con CSRF double-submit
  • Contraseña + bcrypt
  • TOTP 2FA (RFC 6238)
  • WebAuthn / passkeys
  • OAuth: GitHub, Google, Apple
  • Magic-link sin contraseña
  • SCIM 2.0 para auto-aprovisionamiento desde el IdP

Seguridad del transporte

  • Cabinet por HTTPS — TLS 1.2+, HSTS en producción
  • Ingesta mTLS — listener dedicado, auth de cliente obligatoria
  • Certificados de agente — TTL 24 h, rotación automática
  • CA de agente integrada, no pública

Datos en reposo

  • Postgres — cifrado a nivel de disco (gestionado) o de aplicación (SecretBox para secretos)
  • TSDB — cifrado a nivel de disco (LUKS / KMS cloud)
  • Copias de seguridad — cifradas con tu propia clave, no compartida

Política de divulgación

¿Encontraste una vulnerabilidad? Escribe a [email protected]. Huella PGP a petición. Respondemos en 48 horas.

  • Crítica / RCE / fuga de datos / bypass de auth — parcheada en 7 días
  • Alta — parcheada en 30 días
  • Media — parcheada en 90 días
  • Baja — en el próximo release

La divulgación pública sigue al lanzamiento del parche, con tu crédito si lo deseas. Pagamos recompensa por hallazgos serios.

Subencargados

La oferta gestionada usa los subencargados de abajo. La lista completa con finalidad y alcance de datos está en el documento DPA.

  • Hosting cloud — infraestructura (regiones US, EU)
  • Proveedor de pago global — procesamiento de pagos
  • Email transaccional
  • CDN + protección DDoS