El paquete de aislamiento, control por control.
Escrito para el equipo de seguridad que va a evaluar esto — no para marketing. Cada control con su mecanismo; la evidencia, bajo NDA en la revisión de arquitectura.
Aislamiento impuesto por la base de datos
RLS con SET LOCAL ROLE por transacción: el código no puede elegir el tenant aunque quiera.
Whitelist de herramientas en dos puntos
Lista explícita por agente, verificada en dos puntos del runtime. Lo que no está, no se ejecuta.
Auditoría con actor real bajo impersonación
Cuando un operador actúa «como» un tenant, el registro guarda quién era de verdad.
Vigilancia de aislamiento en ejecución
Un watcher convierte violaciones en alertas con destinatario, no en logs que nadie lee.
Sin CORS por diseño
La API no expone superficie para peticiones de navegador de orígenes arbitrarios.
Webhooks con HMAC y fallo cerrado
Toda entrada firmada se verifica, si falla, se rechaza.
Despliegue con fallo cerrado
Si los tests de aislamiento fallan, el despliegue no sale. Es un gate del pipeline.
Idempotencia en dos niveles
Reintentos de webhook y de cola no duplican efectos: deduplicación en entrada y ejecución.
Sin agrupación entre clientes
Las llamadas al modelo nunca mezclan contexto de clientes distintos.
- Modelo de datos multi-tenant
- Particionado a nivel de fila en la base de datos. El contexto de tenant se impone por transacción con SET LOCAL ROLE: el código de aplicación no puede aceptar un tenant_id de un caller, por diseño. Los tests de aislamiento son bloqueantes: si fallan, el despliegue no sale.
- Manejo de credenciales
- Secretos en gestor dedicado con rotación en calendario; cuentas nominales con MFA por hardware; credenciales de vida corta; acceso restringido a los ingenieros del engagement, con todo acceso logueado.
- Política de no-entrenamiento
- APIs de modelo zero-retention. Los datos de tus conversaciones nunca se usan para entrenar modelos que vendamos a otros. Está en el DPA — es contractual, no una nota de blog.
- Cuestionario de seguridad
- Cuestionario estándar respondido y listo para tu equipo — pídelo y lo tienes antes de la primera llamada. La lista de subencargados, con región y propósito, está publicada en la política de privacidad.