Privacidad de telemetría.

Qué envía Vericto por cada query evaluada, cómo elegir entre los modos raw y sanitized, y por qué la aplicación de reglas nunca se debilita al sanitizar.

Resumen

Por cada query que el proxy evalúa, Vericto emite un evento de telemetría a su API. Ese evento incluye el status de la evaluación, la severidad, el rule_code de la regla aplicada, la latencia y el texto de la query. Con esos eventos se alimentan el dashboard, las métricas y el audit trail.

Esta página explica exactamente qué datos salen de tu red, cómo controlar el nivel de detalle del texto de query mediante el modo de telemetría, y por qué cambiar ese modo nunca afecta a lo que el proxy bloquea o permite.

El modo de telemetría solo cambia lo que se reporta, no lo que se evalúa. La evaluación de reglas siempre corre contra la query completa dentro del proceso. Sanitizar afecta al reporte, nunca al bloqueo.

Qué se envía

Cada evento de telemetría contiene un conjunto acotado de campos que describen el resultado de la evaluación:

  • status: el resultado de la evaluación (por ejemplo, permitida o bloqueada).
  • severidad: el nivel de severidad asociado a la regla que se activó.
  • rule_code: el identificador de la regla aplicada.
  • latencia: el tiempo que tomó evaluar la query.
  • texto de la query: la sentencia SQL evaluada, en modo raw o sanitized según la configuración del workspace.

Las credenciales de la base de datos nunca forman parte de la telemetría. Ahora bien, el texto de la query sí puede contener valores sensibles en sus literales, por ejemplo WHERE email = 'alice@acme.com'. El modo de telemetría existe precisamente para controlar ese caso.

Modos: raw y sanitized

El modo de telemetría de queries se configura por workspace en Dashboard → Ajustes → Privacidad de telemetría. Requiere la capacidad enforcementPolicy.manage. Hay dos valores posibles:

Modo Qué envía Ventaja A tener en cuenta
raw (por defecto) El texto completo de la query, tal cual se evaluó. Máximo detalle forense: ves exactamente qué se ejecutó. Los literales, con posible PII, salen de tu red y los almacena Vericto.
sanitized La query con sus literales normalizados a marcadores ($1, $2, …). Ningún dato de usuario sale de tu red; se conserva la estructura para métricas y agrupación. No verás los valores concretos de los literales en el audit trail.

En modo raw el texto se reporta sin modificaciones. En modo sanitized los literales se normalizan a marcadores antes de salir del proxy, de modo que ningún dato de usuario abandona tu red mientras se conserva la forma de la query para métricas y agrupación.

Cómo funciona la sanitización

La sanitización es estructural: opera sobre el AST parseado de la query, no sobre el texto plano. Vericto parsea el SQL con libpg_query, el mismo parser de Postgres, y reemplaza los literales por marcadores directamente en el árbol. El proceso es determinístico y no usa expresiones regulares, por lo que no depende de heurísticas frágiles de coincidencia de patrones.

El resultado conserva íntegra la estructura de la sentencia (tablas, columnas, operadores, cláusulas) y solo sustituye los valores. Por ejemplo:

DELETE FROM users WHERE email = 'alice@acme.com' AND tenant_id = 42
-- se reporta como:
DELETE FROM users WHERE email = $1 AND tenant_id = $2

Como la sustitución preserva la forma de la query, dos ejecuciones con distintos valores producen el mismo texto sanitizado. Eso permite agrupar queries equivalentes y calcular métricas sin exponer ni un solo valor de usuario.

El enforcement no se ve afectado

Este es el punto clave. La aplicación de reglas no depende del modo de telemetría. La evaluación siempre corre contra la query completa, con todos sus literales, dentro del proceso del proxy. La sanitización solo cambia lo que se reporta después de que la decisión ya se tomó.

Cambiar a sanitized nunca debilita el bloqueo. Las reglas se evalúan contra la query completa antes de sanitizar. El modo de telemetría es una decisión de privacidad sobre el reporte, no un ajuste de seguridad sobre el enforcement.

El CLI también lee este mismo modo para decidir si sanitiza del lado del cliente antes de enviar la telemetría, de forma consistente con el proxy.

Recomendación

Elige el modo según el perfil de tus datos y tus requisitos de cumplimiento:

  • Usa sanitized cuando manejes datos regulados o personales, por ejemplo bajo GDPR, HIPAA o la Ley 1581 de 2012 de Colombia. Así ningún valor de usuario sale de tu red.
  • Usa raw cuando la prioridad sea la fidelidad forense y tus queries no incrusten literales sensibles.

Si tienes dudas, empieza por sanitized: conservas la estructura para métricas y agrupación, y puedes cambiar a raw más adelante sin afectar el enforcement.

Preguntas frecuentes

¿Sanitizar hace que Vericto bloquee menos queries?

No. La evaluación de reglas siempre corre contra la query completa dentro del proceso. La sanitización solo cambia el texto que se reporta a la telemetría, nunca la decisión de bloquear o permitir.

¿Las credenciales de la base de datos aparecen en la telemetría?

Nunca. Las credenciales de conexión no forman parte de ningún evento de telemetría, en ningún modo. Lo único que puede contener datos sensibles es el texto de la query, y para eso existe el modo sanitized.

¿Qué modo está activo por defecto?

El modo por defecto es raw. Para cambiarlo a sanitized, ve a Dashboard → Ajustes → Privacidad de telemetría. Necesitas la capacidad enforcementPolicy.manage.

¿La sanitización usa expresiones regulares?

No. Es estructural y determinística: opera sobre el AST parseado con libpg_query, el parser de Postgres, y reemplaza los literales por marcadores en el árbol. No hay heurísticas ni regex.

¿El CLI respeta el modo de telemetría?

Sí. El CLI lee el mismo modo configurado en el workspace para decidir si sanitiza del lado del cliente antes de enviar la telemetría.