DEVAI SUITE

DevAI Suite — White Paper de Seguridad

Versión 1.1 — Octubre 2026 Clasificación: Pública · seguro para compartir con clientes potenciales, clientes y auditores.


Resumen ejecutivo

DevAI Suite es la primera plataforma Manufacturing-as-a-Service (MaaS) — un entorno unificado de gestión de programas APQP, excelencia de proveedores e inteligencia de planta para fabricantes de automoción y aeroespacial. La plataforma maneja datos regulados de manufactura (envíos PPAP, libros FMEA, cualificación de proveedores, telemetría de planta) para clientes que operan bajo IATF 16949 y AS9100 / AS9145.

Este white paper documenta cómo se diseña y opera DevAI Suite para proteger esos datos. Está estructurado conforme al NIST Cybersecurity Framework 2.0 (Govern, Identify, Protect, Detect, Respond, Recover) y mapea cada función a controles, tecnologías y prácticas operativas concretas. Cuando hay certificaciones pendientes lo decimos honestamente con un calendario defendible en lugar de exagerar.

La audiencia prevista son los equipos de revisión de seguridad empresarial, las funciones de gestión de riesgo de proveedores y los responsables de compras durante la due diligence previa a la firma del contrato.

Postura Estado
Aislamiento multi-tenant PostgreSQL Row-Level Security en cada tabla de cliente
Cifrado en tránsito TLS 1.2+, HSTS con includeSubDomains, solo cifrados AEAD
Cifrado en reposo Cifrado a nivel de volumen + envelope para credenciales sensibles
Autenticación Contraseñas PBKDF2-HMAC-SHA256 (bcrypt para cuentas heredadas), Google + Microsoft Entra ID SSO, MFA TOTP
Registro de auditoría Log append-only por org de eventos relevantes para seguridad
RGPD / CCPA Conforme; DPA disponible; flujo DSR en producción
SOC 2 Type II En curso (observación 2.º semestre 2026, auditoría 4.º trim. 2026)
ISO/IEC 27001:2022 Planeado (auditoría de certificación 1.º semestre 2027)
Recuperación ante desastres Runbook documentado, RTO objetivo de 30 min, historial Point-in-Time de 24 horas + volcado nocturno independiente y copias nocturnas de los documentos; restauración Point-in-Time ensayada en staging y simulacro mensual automático de restauración ya implantado (§6.4)

1. Govern — Programa de seguridad y rendición de cuentas

1.1 Propiedad de la seguridad

Un responsable de seguridad designado reporta al fundador/CEO y posee:

El rol platform-admin está vinculado a una cuenta de usuario específica vía la flag is_platform_admin (que reemplaza la verificación obsoleta por comparación de email); el privilegio deriva de la fila de base de datos, no del email. En producción el rol queda cubierto por MFA a través del requisito de MFA de la propia organización de DevAI; es un ajuste de organización, no una regla fijada en el código para el rol.

1.2 Políticas en vigor

Política Alcance Cadencia de revisión
Política de seguridad de la información Toda la organización Anual
Política de uso aceptable Personal Anual
Política de control de acceso Ingeniería + ops Anual
Política de gestión de proveedores Compras Anual
Plan de respuesta a incidentes Ingeniería + dirección Anual + post-incidente
Plan de recuperación ante desastres Ingeniería Anual; pruebas de restauración según §6.4
Ciclo de vida seguro de desarrollo Ingeniería Anual
Política de retención y eliminación de datos Toda la organización Anual
Gestión de claves criptográficas Ingeniería Anual
Gestión del cambio Ingeniería Anual

Las políticas se mantienen bajo control de versiones y son revisadas por el responsable de seguridad antes de cada ciclo de release. Los extractos elegibles para clientes están disponibles bajo NDA.

1.3 Seguridad del personal

1.4 Hoja de ruta de cumplimiento y certificación

Estándar Estado Objetivo
RGPD (UE 2016/679) Conforme Continuo
CCPA / CPRA Conforme Continuo
SOC 2 Type II Periodo de observación 2.º sem. 2026; auditoría 4.º trim. 2026 Informe 1.º trim. 2027
ISO/IEC 27001:2022 Definición SGSI 2.º sem. 2026 Certificación 1.º sem. 2027
ISO/IEC 27701 Agrupada con 27001 2.º sem. 2027
IEC 62443 (industrial) Hoja de ruta Bajo demanda Enterprise

Para los nombres de las firmas de auditoría, las narrativas de control y los paquetes de evidencia pre-auditoría, contactar con admin@devaisuite.com.


2. Identify — Gestión de activos y riesgo

2.1 Inventario de activos

La superficie de activos de la plataforma está acotada e inventariada:

La lista pública de subencargados, con la finalidad, los datos implicados y la región de tratamiento de cada proveedor, está en /subprocessor-list.html; §7.2 recoge la misma lista.

2.2 Clasificación de datos

Clase Ejemplos Manejo
Pública Páginas de marketing, este white paper Sin restricción
Interna Código fuente, runbooks internos Acceso controlado, no visible al cliente
Confidencial del cliente Proyectos APQP, FMEA, PPAP, registros de proveedores, documentos cargados, prompts/respuestas IA Aislada por RLS; cifrado en reposo; acceso registrado
PII regulada Email, nombre, dirección (donde se recoja), credenciales de auth Igual que arriba + manejo PII dedicado por §3.4
Secretos API keys, claves de cifrado, secrets OAuth Fly Secrets store; envelope encryption para credenciales almacenadas; nunca en código ni logs

2.3 Gestión de riesgos

Los riesgos materiales se llevan en un registro interno revisado trimestralmente. Principales elementos a 2.º trim. 2026:

2.4 Modelo de amenazas

La plataforma se modela frente a:

Las mitigaciones se describen en las secciones correspondientes a continuación.


3. Protect — Controles

3.1 Multi-tenancy y aislamiento de datos

Los datos de cada cliente residen en una única base de datos PostgreSQL compartida, aislados mediante PostgreSQL Row-Level Security. Cada tabla con datos de cliente tiene una política RLS atada al contexto del tenant de la solicitud. La capa de aplicación define el tenant en cada sesión de base de datos a través del middleware de autenticación de la solicitud:

ALTER TABLE deliverables ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON deliverables
  USING (org_id = current_setting('app.current_org_id', true)::int);

Una solicitud que filtre el contexto del tenant (incluso por un bug interno de aplicación) no puede leer ni escribir filas pertenecientes a otro tenant — la base de datos lo rechaza. Las consultas SELECT cross-tenant devuelven cero filas por diseño.

RLS no está simplemente habilitado — está FORZADO (ALTER TABLE … FORCE ROW LEVEL SECURITY), y el rol de base de datos de la aplicación es explícitamente NOBYPASSRLS. Esto significa que ninguna ruta de código que se ejecute con credenciales de la aplicación puede eludir el aislamiento de tenant: incluso las operaciones privilegiadas de mantenimiento están sujetas a él. Se cumple en la práctica, no solo en la configuración — nuestras propias copias de seguridad automatizadas no pueden ejecutarse con credenciales de la aplicación: pg_dump se niega a exportar tablas con RLS forzado para un rol que no puede eludir RLS (verificado en CI el 2026-07-23), por lo que los backups se ejecutan bajo un rol propietario gestionado por el proveedor, controlado por separado, que nunca sirve tráfico de la aplicación.

Fallo cerrado por construcción. Cuando el contexto de tenant falta o se vincula mal, el fallo observable es la denegación (resultados vacíos, HTTP 403), nunca la exposición entre tenants. Los incidentes de producción de esta clase se han manifestado exclusivamente como funcionalidad no disponible para el tenant legítimo — la respuesta por defecto de la base de datos ante un tenant no vinculado es cero filas.

El helper app.db.tenant.set_tenant_context es el único punto por el que se aplica el contexto de tenant; se ejecuta en cada solicitud que resuelva un usuario, antes de que se ejecute cualquier lógica de negocio. Un job de CI (rls-postgres-pr) ejercita la postura RLS contra PostgreSQL real en cada pull request.

3.2 Almacenamiento de documentos por tenant

Los documentos para RAG viven en Cloudflare R2 con claves de objeto prefijadas por org_id. Las lecturas están limitadas por el mismo contexto de tenant, con una verificación en servidor antes de la emisión de cualquier presigned-URL.

Los embeddings (1024 dim, Cloudflare Workers AI @cf/baai/bge-m3) se almacenan en tablas pgvector que llevan una columna org_id bajo la misma política RLS que los documentos fuente.

3.3 Cifrado

En tránsito. TLS 1.2+ en todos los endpoints accesibles al cliente. Solo cipher suites fuertes (AES-GCM, ChaCha20-Poly1305). HSTS aplicado con max-age=31536000; includeSubDomains. La directiva preload se omite intencionadamente hasta que cada subdominio cumpla los criterios de elegibilidad. X-Frame-Options está en DENY y X-Content-Type-Options en nosniff en cada respuesta.

En reposo. Los datos de Postgres se cifran en reposo en la capa de almacenamiento de Neon. Cloudflare R2 cifra en reposo por defecto (AES-256). Las credenciales sensibles de integración almacenadas en integration_connectors.credentials_json se cifran mediante envelope con una clave Fernet por despliegue (DEVAI_CREDENTIALS_ENCRYPTION_KEY); la clave se rota en una cadencia documentada y nunca sale del store de secretos.

Gestión de claves. Las claves de aplicación (firma JWT, Fernet, secrets OAuth, API keys de terceros) se almacenan en Fly Secrets, se exponen al proceso en arranque y nunca se persisten en disco. Los procedimientos de rotación están documentados por proveedor en docs/runbooks/disaster-recovery.md §3.

3.4 Autenticación y control de acceso

Opciones de identidad:

Autenticación multifactor. Basada en TOTP con códigos de respaldo de un solo uso, según la política de cada organización. La propia organización de DevAI la exige, y así queda cubierto el rol platform-admin en producción. La verificación MFA se ejecuta en la dependencia de auth en cada solicitud protegida; los usuarios con MFA habilitado pero no verificado solo pueden alcanzar los endpoints /auth/mfa/verify y /auth/mfa/status hasta que verifiquen.

Autorización basada en roles. Cada ruta protegida llama ensure_permission(db, user, resource_type, action, org_id) que verifica el grant rol-permiso del usuario contra la acción solicitada. Las decisiones se registran en una tabla de auditoría policy_decisions append-only.

Tokens de sesión. JWTs con una vida de 8 horas por defecto, renovables hasta una duración absoluta de sesión de 30 días. El token se guarda en una cookie HttpOnly; Secure; SameSite=Strict que los scripts de la página no pueden leer; no se guarda en localStorage. Cerrar sesión la termina en el servidor. Un cambio o restablecimiento de contraseña, la desactivación de MFA o el cambio del email de la cuenta terminan las demás sesiones de esa cuenta, y el usuario puede cerrar sesión en todos sus dispositivos a la vez.

CAPTCHA. Cloudflare Turnstile protege registro, login, restablecimiento de contraseña, alta MFA y la ruta de provisioning del sandbox público de demo. El helper verify_turnstile_token registra el campo error-codes de Cloudflare en caso de fallo para diagnóstico.

Rate limiting. Un middleware con backend Redis aplica límites por endpoint y por IP — endpoints de inicio de sesión, registro, contraseña y MFA limitados a 10 solicitudes/minuto, AI Coordinator feedback a 30/minuto, defecto en 100/minuto. Cuando Redis no está disponible, las rutas de inicio de sesión siguen limitadas por un contador que mantiene cada proceso de la API, a la mitad del presupuesto habitual; el resto de rutas falla abierto (disponibilidad por encima de límites rígidos), y cada una de esas solicitudes se contabiliza y la caída se registra como error.

3.5 Seguridad de aplicación

3.6 Protecciones específicas de LLM

La plataforma envía trabajo de IA a Together AI (inferencia por defecto, comprensión de imágenes y transcripción de voz), al proveedor de embeddings (Cloudflare Workers AI, §7.2) para los embeddings de documentos y, cuando la búsqueda web está configurada, a Tavily (las consultas de búsqueda que escribe el asistente). RunPod sirve el modelo propio de DevAI: con sus credenciales configuradas es el respaldo ante caídas para los turnos que no necesitan llamar a herramientas, y solo pasa a ser la primera opción para las skills de dominio cuando se activa el enrutado al modelo propio, desactivado por defecto. Anthropic y OpenAI son solo de emergencia (break-glass), inalcanzables salvo que un operador active el ajuste de emergencia (desactivado por defecto) o seleccione uno de ellos como proveedor de modelos. Riesgos específicos:

3.7 Gestión de secretos

Superficie Almacén Rotación
Secretos de aplicación (JWT, Fernet, API keys) Fly Secrets Por proveedor — ver docs/runbooks/disaster-recovery.md §3
Credenciales de integración del cliente (Salesforce, SAP, etc.) Cifradas con envelope en integration_connectors.credentials_json; la clave en Fly Secrets Iniciada por el cliente
Secrets de cliente OAuth Fly Secrets Anual o post-incidente
API keys de terceros (Together, Anthropic, OpenAI, etc.) Fly Secrets Por proveedor; documentado en runbook DR

Ningún secreto se commitea jamás al control de versiones; los hooks pre-commit y CI escanean por commits accidentales.


4. Detect — Monitorización y auditoría

4.1 Logging de aplicación

Se emiten logs estructurados en JSON por cada solicitud y evento relevante para seguridad. El saneado de PII se aplica en el filtro de logging (app.core.logging_filters.PIIScrubFilter) antes de que los logs salgan de la aplicación; emails, direcciones IP y otros identificadores se redactan en entornos no-debug.

4.2 Trazabilidad de auditoría

Una tabla dedicada org_security_audits append-only registra eventos relevantes para seguridad acotados por org:

Los administradores cliente pueden solicitar exportación del histórico de auditoría de su org vía el flujo DSR. Retención: 7 años para artefactos regulados, 1 año para eventos generales, configurable por cliente en el DPA.

4.3 Seguimiento de errores

Sentry captura excepciones de aplicación con la integración FastAPI (transacciones etiquetadas por endpoint), la integración SQLAlchemy (detección de queries lentas) y el filtro de saneado PII aplicado en la capa de logging. La tasa de profiling está al 1% de transacciones trazadas para equilibrar coste y señal.

4.4 Monitorización de infraestructura

El chequeo automático de Fly consulta la probe de liveness (/livez). La probe de readiness (/readyz) pinguea la base de datos (dependencia dura) y Redis (suave, fail-open); se usa para verificar despliegues y para el triaje de incidentes, y cada despliegue además prueba la conectividad con la base de datos al ejecutar las migraciones del esquema antes de reemplazar ninguna máquina. Un monitor externo en Cloudflare, fuera de nuestra propia infraestructura, comprueba cada minuto la aplicación web, la API y el sitio web, y dos veces por hora la probe de readiness, y publica el resultado en la página de estado pública, https://status.devaisuite.com (en inglés y español, con un feed legible por máquinas); una caída que detecta abre allí un incidente automáticamente.

4.5 Detección de anomalías

El middleware de rate-limit emite headers estándar X-RateLimit-{Limit,Remaining,Reset} y registra anomalías (picos súbitos de una sola IP) para revisión. La integración con un SIEM está en la hoja de ruta una vez SOC 2 Type II esté firmado.


5. Respond — Respuesta a incidentes

5.1 Clasificación de incidentes

Severidad Ejemplos Respuesta
P0 Brecha de datos confirmada; caída total de plataforma > 30 min Aviso al on-call (automático desde el monitor para una caída que este detecta); actualización de la página de estado en 15 min (automática en unos 3 minutos para una caída monitorizada); war-room
P1 Caída parcial; evento de seguridad sin afectación de datos Aviso al on-call; actualización de la página de estado en 30 min
P2 Degradación del servicio; actividad sospechosa bajo investigación Triaje en horario laboral
P3 Vulnerabilidad reportada bajo triaje; sin explotación activa Acuse de recibo en 48h

5.2 Checklist de los primeros 30 minutos

Una checklist lista para pegar para el operador vive en docs/runbooks/disaster-recovery.md §0:

  1. Confirmar el impacto vía /readyz.
  2. Probar el estado de máquinas Fly y los logs recientes.
  3. Categorizar la clase de fallo (DB / Redis / bug de app / infra Fly).
  4. Publicar actualización en página de estado antes de arreglar — fija expectativas del cliente.
  5. Mitigar según la sección correspondiente del runbook.
  6. Comunicar directamente a los tenants afectados.

5.3 Notificación al cliente

Cuando lo exige la ley para violaciones de datos personales bajo el Artículo 33 del RGPD, la notificación al cliente se realiza dentro de las 72 horas desde la confirmación. La notificación incluye la naturaleza de la brecha, las categorías y número aproximado de interesados, las consecuencias probables y las medidas adoptadas o propuestas para abordarla.

5.4 Revisión post-incidente

Se redacta un post-mortem sin culpa en 5 días laborables para cada incidente P0 y P1, capturando línea temporal, causa raíz, factores contribuyentes y seguimientos concretos. Los post-mortems se archivan internamente y se comparten con clientes afectados bajo NDA.

5.5 Divulgación de vulnerabilidades

Publicamos un security.txt en /.well-known/security.txt con el contacto de reporte, admin@devaisuite.com. Acusamos recibo de un reporte en 48 horas y acordamos con quien lo envía una fecha de publicación, normalmente cuando la corrección está desplegada y como máximo 90 días después del reporte. Los investigadores que sigan nuestras reglas de prueba de buena fe no están sujetos a acción legal bajo nuestro lenguaje de safe-harbor.


6. Recover — Recuperación ante desastres y continuidad

6.1 Postura de backups

La base de datos primaria corre en Neon, que conserva un historial continuo de escrituras: se puede restaurar cualquier momento de las últimas 24 horas y la copia restaurada está disponible en segundos (ensayado en staging el 9 de julio de 2026). De forma independiente, cada noche se escribe un volcado lógico de la base de datos de producción en Cloudflare R2 en jurisdicción UE — una segunda copia en un segundo proveedor — con retención de 30 días diarios y 12 meses mensuales. El volcado se genera en un runner alojado por GitHub, que mantiene una copia de la base de datos mientras dura el job. R2 cifra en reposo el volcado almacenado; el cifrado en el propio runner antes de la subida está construido y se activa en cuanto se cree su clave. El RTO objetivo para una restauración full-stack es 30 minutos; el RPO es prácticamente cero dentro de la ventana de 24 horas, y de hasta 24 horas si se restaura desde el volcado nocturno.

6.2 Procedimiento de restauración

Documentado en detalle en docs/runbooks/disaster-recovery.md §1. Resumen:

  1. Detener la API para prevenir escrituras split-brain.
  2. Identificar el momento anterior a la ventana de corrupción.
  3. Restaurarlo como una nueva rama de Neon (NO sobrescribir in-place — preserva el original para análisis forense). Si Neon no está disponible, restaurar el último volcado nocturno en una instancia PostgreSQL nueva.
  4. Validar contra baselines de métricas de negocio.
  5. Reapuntar DATABASE_URL al cluster restaurado.
  6. Devolver la API a online.
  7. Smoke-test vía /readyz y los endpoints de salud por proveedor.

6.3 Recuperación de R2 (object storage)

Cloudflare R2 es de región única y no versiona objetos. La biblioteca global de plantillas puede regenerarse desde el código fuente vía publish_global_library. Los documentos de cliente, los modelos entrenados y los adjuntos del chat se copian cada noche a las 03:00 UTC, en el lado del servidor, a una instantánea fechada en un bucket separado en jurisdicción UE (devai-object-backups-eu), con retención de 30 días diarios y 12 meses mensuales. Un archivo subido después de la última copia depende de la durabilidad propia de R2 hasta la siguiente. La restauración desde una instantánea está documentada y todavía no se ha ejercitado.

6.4 Cadencia de simulacros DR

Qué se prueba, con qué frecuencia y qué se ha hecho hasta ahora:

Ejercicio Cadencia Estado
Restauración Point-in-Time de la base de datos como nueva rama de Neon Bajo demanda Ensayada una vez, en staging, el 9 de julio de 2026
Antigüedad del volcado nocturno Cada noche El job de backup falla, y avisa, cuando el volcado almacenado más reciente tiene más de 26 horas
Restauración del volcado nocturno más reciente en un PostgreSQL vacío de la versión de producción, con comprobaciones de integridad y medición del tiempo de recuperación Mensual, automático Implantado. Empieza a ejecutarse en cuanto se cree su credencial de almacenamiento de solo lectura; su primera ejecución será la primera restauración de un volcado
Restauración completa a mano en una base de datos de pruebas, y restauración de un documento desde una instantánea Anual Aún no realizada
Traslado del cómputo a otra región; simulacro de incidente sobre papel (tabletop) Sin fecha todavía Aún no realizado

Hasta que el simulacro mensual haya dejado su primer registro, el RTO de 30 minutos es un objetivo, no una medición. Un simulacro fallido se trata como un incidente en ciernes y se corrige en la misma semana.

6.5 Continuidad de negocio

Las funciones críticas de negocio (facturación, soporte al cliente, rotación on-call) están documentadas en playbooks separados de la plataforma misma, de modo que la indisponibilidad de la plataforma no bloquee los esfuerzos de recuperación del cliente.


7. Gestión de proveedores y subencargados

7.1 Incorporación

Cada nuevo subencargado se revisa por:

La decisión se registra en el registro de proveedores; la revisión de renovación es anual.

7.2 Lista actual de subencargados

Los proveedores que reciben datos de cliente en el servicio cloud, y la condición que activa a cada uno cuando no está siempre activo.

Proveedor Propósito Región Cumplimiento clave
Fly.io Compute (app + workers) UE (Fráncfort) SOC 2 Type II; datacenters certificados ISO 27001
Neon PostgreSQL + pgvector gestionado (datos del tenant en reposo) UE (Fráncfort, aws-eu-central-1) SOC 2 Type II, ISO 27001:2022, ISO 27701
Cloudflare Almacenamiento de objetos R2 (documentos, plantillas, adjuntos del chat, volcados de la base de datos e instantáneas de objetos); DNS; Turnstile; el sitio de marketing (Pages); la consola de operación (Workers + D1); Cloudflare Workers AI para los embeddings de documentos (fragmentos de documentos y consultas de búsqueda), el proveedor de embeddings en producción desde el 31 de octubre de 2026 R2: jurisdicción UE. Edge: global. Workers AI: la red de Cloudflare (sin elección de región), por lo que la inferencia no está fijada a la UE; Cloudflare declara que no usa el contenido del cliente para entrenar los modelos ni para mejorar sus servicios SOC 2 Type II, ISO 27001, ISO 27701, PCI DSS
Upstash Redis: contadores de rate limit (dirección IP, id de usuario), caché de corta duración, difusión de mensajes en tiempo real entre las máquinas de la API EE.UU. SOC 2 Type II
GitHub Código fuente y CI. El volcado nocturno de la base de datos y el simulacro mensual de restauración se ejecutan en runners alojados por GitHub, que mantienen una copia de la base de datos mientras dura el job Runners alojados por GitHub (región no seleccionable) SOC 2 Type II, ISO 27001
Inngest Orquestación de jobs background EE.UU. SOC 2 Type II
Sentry Seguimiento de errores (PII saneado) EE.UU. SOC 2 Type II, ISO 27001
PostHog Analítica de producto (eventos de uso asociados al id de usuario) UE SOC 2 Type II
Together AI Inferencia LLM (por defecto), comprensión de imágenes y transcripción de voz; archivos de entrenamiento mientras se ejecuta un fine-tune por organización (§10.4) EE.UU. SOC 2 Type II, ISO 27001:2022
Voyage AI Sin uso desde el 31 de octubre de 2026, cuando producción pasó los embeddings de documentos a Cloudflare Workers AI. Sigue en el producto como proveedor seleccionable y solo recibe fragmentos de documentos y consultas de búsqueda si un operador vuelve a seleccionarlo. Un operador también puede seleccionar el modelo propio de DevAI en RunPod; Together AI ya no ofrece embeddings EE.UU. SOC 2 / ISO 27001 por confirmar (empresa de MongoDB)
Tavily Búsqueda web del asistente, solo cuando está configurada: la consulta de búsqueda que escribe el modelo EE.UU. Por confirmar
Hugging Face Almacenamiento de los pesos de adaptadores por organización, cuando se ejecuta el entrenamiento de adaptadores EE.UU. SOC 2 Type II
RunPod Sirve el modelo propio de DevAI. Respaldo ante caídas para los turnos que no necesitan llamar a herramientas siempre que sus credenciales estén configuradas; primera opción para las skills de dominio solo cuando se activa el enrutado al modelo propio (desactivado por defecto) EE.UU. / UE (según el endpoint) SOC 2 Type II (Secure Cloud)
Anthropic Inferencia LLM (Claude), solo de emergencia (break-glass): inalcanzable salvo que un operador active el ajuste de emergencia (desactivado por defecto) o lo seleccione como proveedor de modelos EE.UU. SOC 2 Type II, ISO 27001:2022, ISO 42001
OpenAI Inferencia LLM (GPT), solo de emergencia (break-glass), después de Anthropic; un clasificador de documentos opcional (desactivado por defecto) EE.UU. SOC 2 Type II, ISO 27001
Groq No se usa por defecto: solo recibe prompts si un operador lo reactiva EE.UU. Por confirmar
Stripe Facturación y pagos EE.UU., UE SOC 1, SOC 2 Type II, PCI DSS Level 1, ISO 27001
Resend Correo transaccional EE.UU. SOC 2 Type II
Google "Iniciar sesión con Google", a elección del usuario. Dos servicios opcionales, cada uno desactivado salvo que se configure: inferencia sobre imágenes de inspección (Cloud Vision) y un almacén analítico para tablas de hechos por organización y telemetría de máquinas (BigQuery) Google (global); la ubicación de BigQuery se fija por despliegue (EE.UU. por defecto) SOC 2 Type II, ISO 27001
Microsoft "Iniciar sesión con Microsoft" (Entra ID), a elección del usuario; el visor de Office, que obtiene un archivo de Word, Excel o PowerPoint mediante un enlace firmado de corta duración cuando un usuario lo previsualiza Microsoft (global) SOC 2 Type II, ISO 27001

Servicios de datos públicos. Los servicios siguientes responden a preguntas sobre el mundo exterior. No reciben registros de cliente, pero una consulta puede revelar dónde están las plantas, los proveedores o los envíos de un cliente.

Servicio Propósito Qué contiene la consulta
Open-Meteo Meteorología y geocodificación de ciudades para mapas de suministro y previsiones Coordenadas y nombres de ciudad y país de las plantas
GDELT Señal de riesgo por país a partir del tono de las noticias Nombres de países
OpenSky; AISStream, FlightAware, MarineTraffic Posiciones de vuelos y buques para los envíos en seguimiento Identificadores del vuelo o del buque en seguimiento. AISStream, FlightAware y MarineTraffic solo cuando sus claves están configuradas
Router público OSRM Rutas por carretera para los envíos en seguimiento Coordenadas de inicio y fin de un tramo
CARTO, OpenStreetMap Fondos de mapa, cargados por el navegador El área del mapa que se está viendo y la dirección IP del navegador

Los conectores que un cliente configura hacia sus propios sistemas (ERP, MES, PLM, SharePoint, Google Drive, webhooks y otros) envían los datos adonde el cliente indica, con credenciales que aporta el cliente. Son encargados del cliente, no subencargados de DevAI, y no figuran aquí.

La misma lista está publicada en /subprocessor-list.html, con los datos que puede recibir cada proveedor y la fecha de su última actualización. La columna de cumplimiento recoge lo que cada proveedor publica sobre sí mismo; recopilar y revisar los informes forma parte de la revisión anual de proveedores de DevAI. La notificación al cliente de cambios de subencargado sigue la cadencia del DPA del cliente (típicamente 30 días de antelación para cambios materiales).

7.3 Revisión de cambios de subencargado

Los clientes son notificados de cambios de subencargado según la cadencia del DPA y pueden objetar dentro de la ventana contractual. Cuando la objeción del cliente no puede reconciliarse con el nuevo subencargado, el contrato permite la rescisión según el DPA.


8. Ciclo de vida seguro de desarrollo

8.1 Control de fuente y revisión

8.2 Pruebas

Tipo de prueba Alcance Cadencia
Tests unitarios Lógica de servicio, validadores Cada PR
Tests de integración Rutas + DB + middleware vía FastAPI TestClient Cada PR
Tests smoke Subconjunto de 200 tests de mayor leverage Cada PR (CI nivel-PR)
Sweep completo Los 3.000 tests Push a main / staging
Gate de drift de esquema Spec OpenAPI generada contra Python commiteado Cada PR
Vitest (frontend) Componentes React, hooks Cada PR
Type checks mypy (Python) + tsc (TypeScript) Cada PR
Regresiones de seguridad Archivos de test específicos para RLS, RBAC, auth, billing Cada PR (nivel smoke)

8.3 Gestión de dependencias

8.4 Disciplina de migraciones

Los cambios de esquema de base de datos fluyen mediante migraciones Alembic, revisadas e idempotentes. Producción ejecuta alembic upgrade head como pre-flight del comando de release. Los rollbacks están probados; las migraciones destructivas llevan un gate --confirm.

8.5 Análisis estático

8.6 Validación de configuración en arranque

validate_production_config(settings) se ejecuta en el lifespan startup de FastAPI. La aplicación rechaza el boot cuando:

Esto detecta la deriva de configuración antes de que pueda servir una sola solicitud.


9. Manejo de datos

9.1 Ciclo de vida de los datos

Etapa Manejo
Recolección Iniciada por el cliente vía la UI de la plataforma, API o carga de documento. No raspamos ni compramos datos de clientes.
Almacenamiento Cifrado en reposo, aislado por RLS, fijado por región a UE (FRA) para la base de datos primaria.
Uso Acotado por contexto de tenant en cada solicitud. Las llamadas de inferencia IA están claramente delimitadas y el proveedor IA queda registrado en el log de auditoría de la org.
Retención Según el DPA del cliente. Defecto: artefactos retenidos durante la duración del contrato + 7 años para datos regulados; datos generales retenidos durante la duración del contrato + 1 año.
Eliminación Eliminación de org self-service vía la UI de admin (Sprint 8 D3 — ventana de gracia de 30 días + restauración, luego hard-delete vía cron diario de purga). La eliminación de usuario impulsada por DSR se procesa en 30 días.

9.2 Residencia de datos

La capa de aplicación corre en la región Frankfurt (FRA) de Fly y la base de datos primaria en la región Frankfurt de Neon (aws-eu-central-1). Los buckets de Cloudflare R2 están en jurisdicción UE. La caché Redis (Upstash), el proveedor de modelos por defecto (Together AI), la orquestación de jobs (Inngest), la monitorización de errores (Sentry) y el correo transaccional (Resend) están en Estados Unidos. Los embeddings de documentos se ejecutan en Cloudflare Workers AI, que no ofrece elección de región, por lo que ese tratamiento no está fijado a la UE. La región de cada proveedor figura en §7.2.

Para clientes con requisitos estrictos de residencia, hay despliegue on-premise / región dedicada disponible en planes Enterprise.

9.3 Derechos del interesado (RGPD / CCPA / CPRA)

El flujo DSR soporta:

Las solicitudes se registran y trazan a través del log de auditoría.

9.4 Transferencia transfronteriza

Cuando los datos personales de interesados UE son procesados por subencargados con sede en EE.UU. (proveedores LLM, Stripe, etc.), la transferencia se rige por:

La evaluación completa de impacto de transferencia es interna pero está disponible para clientes Enterprise bajo NDA.


10. Consideraciones específicas de IA

10.1 Qué se envía a los proveedores LLM

Las llamadas de inferencia envían:

Hay dos flujos más que no son inferencia: los fragmentos de documentos y las consultas de búsqueda van al proveedor de embeddings (Cloudflare Workers AI) y, cuando la búsqueda web está configurada, la consulta que escribe el modelo va a Tavily. Esa consulta puede llevar contexto de la conversación.

Lo que NO se envía:

10.2 Manejo de datos del proveedor

Dos ajustes por organización gobiernan los datos de IA, y son independientes. La indexación de conocimiento está activada por defecto: decide si el asistente se apoya en los documentos indexados de la propia organización. Es un ajuste de producto, no un consentimiento de entrenamiento. El consentimiento de datos de entrenamiento (training_data_opt_in) está desactivado por defecto y lo activa el administrador de la organización, quedando registrado quién lo activó y cuándo. Decide si las correcciones de esa organización a las propuestas de IA se capturan como pares de entrenamiento, y un fine-tune solo se ejecuta mientras está activado (§10.4). Una organización sin registro de consentimiento se trata como si no hubiera consentido.

10.3 Revisión de propuestas de IA

El AI Coordinator de la plataforma nunca ejecuta acciones destructivas en silencio. Cualquier cambio generado por LLM en datos del cliente fluye por el ciclo de vida AIProposal:

  1. La IA genera una propuesta (fila FMEA, tile de dashboard, clasificación de documento).
  2. La propuesta se almacena con status=draft y se expone al usuario.
  3. El usuario revisa y acepta explícitamente; el rechazo también se registra con texto de corrección opcional para tenant-learning.
  4. Solo en aceptación la plataforma commitea el cambio a los datos del cliente.

Esto previene la corrupción silenciosa de datos por una respuesta LLM alucinada y crea un audit trail para cada cambio impulsado por IA.

10.4 Aislamiento de tenant-learning

Se pueden entrenar adaptadores LoRA por tenant sobre las correcciones de la org a las propuestas IA. El job diario programado de entrenamiento está retenido; hoy un fine-tune solo arranca cuando lo inicia un administrador de la plataforma. Propiedades críticas de consentimiento y aislamiento:


11. Responsabilidades del cliente (modelo compartido)

La seguridad es compartida. El cliente es responsable de:

Una copia de esta lista de responsabilidades del cliente está en el Master Service Agreement y el DPA.


12. Contactos

Canal Dirección
Consultas de seguridad admin@devaisuite.com
Divulgación de vulnerabilidades /.well-known/security.txt
Privacidad / DPA / DSR privacy@devaisuite.com
Página de estado https://status.devaisuite.com
Ventas / contratos sales@devaisuite.com

La clave pública PGP para correspondencia de seguridad está disponible bajo solicitud.


13. Control documental

Campo Valor
Versión 1.1
Fecha de entrada en vigor 12 de marzo de 2026
Última actualización 31 de octubre de 2026
Propietario Responsable de seguridad
Cadencia de revisión Anual + post-incidente
Distribución Pública (esta versión); las versiones internas siguen los controles en marcha

Este white paper se revisa al menos anualmente y en cada cambio material en la postura de seguridad de la plataforma. La fuente autorizada es docs/security/WHITEPAPER_ES.md en el repositorio fuente de la plataforma.

Una versión en inglés se mantiene en paralelo en docs/security/WHITEPAPER_EN.md y se renderiza en /security-whitepaper.html.


© 2026 DevAI Suite. Este documento puede redistribuirse sin cambios para el propósito de revisión de seguridad de proveedor. Los extractos deben mantener la atribución.