Seguridad
Última actualización: 8 de agosto de 2026
Cómo se aloja HACCP Hyve, quién puede acceder a qué y qué ocurre con sus datos. Todo lo que dice esta página describe lo que está funcionando hoy. Cuando un control no existe, la página lo dice.
Alojamiento y ubicación de los datos
- La aplicación se ejecuta en Vercel, en la región europea (París).
- Los datos se guardan en PostgreSQL sobre Supabase, en el plan Pro, en una región europea.
- A la base de datos solo se accede desde nuestro propio código de servidor mediante Prisma. La API de datos pública de Supabase está cerrada.
Cifrado
- Todo se sirve por HTTPS. Strict Transport Security está fijado en dos años, cubre los subdominios y está enviado para precarga, así que el navegador no vuelve a HTTP sin cifrar.
- El tráfico entre la aplicación y la base de datos va por TLS.
- El almacenamiento de la base de datos está cifrado en reposo por Supabase.
- Nuestras copias externas de la base de datos se cifran con AES-256, con la clave derivada mediante PBKDF2, y se escriben de forma que solo su propietario puede leerlas.
Refuerzo del navegador y de la aplicación
- Se aplica una Content Security Policy en todas las respuestas, que solo permite nuestros proveedores de autenticación, pagos y vídeo de formación. Está en modo de aplicación desde el 28 de julio de 2026, tras tres semanas solo de informe sin ninguna infracción.
- Las infracciones siguen notificándose a un endpoint nuestro, así que una regresión aparece en lugar de pasar en silencio.
- El sitio no se puede colocar en un marco: X-Frame-Options es DENY y frame-ancestors es none.
- Referrer-Policy es strict-origin-when-cross-origin y la detección automática de tipos MIME está desactivada.
- El acceso a la cámara y a la ubicación está desactivado por política. El micrófono se permite solo en nuestro propio origen, para las entradas por voz en los registros diarios.
Control de acceso
- Cada página y cada acción de servidor empieza comprobando el rol de la persona que ha iniciado sesión. Nada se muestra primero y se comprueba después.
- Los roles son administrador de empresa, responsable de centro, jefe de departamento, jefe de departamento adjunto, empleado y nuestro propio administrador de plataforma. Un responsable de centro ve un centro. Un jefe de departamento ve un departamento.
- Por debajo del administrador de empresa, nadie puede actuar sobre una persona de rol igual o superior, y nadie puede subir a nadie, ni a sí mismo, por encima de lo que su propio rol puede asignar.
- Cada identificador que envía el navegador se comprueba contra la empresa y el alcance de quien llama antes de escribir nada.
- El borrado permanente está limitado a nuestro rol de administrador de plataforma y exige escribir el nombre de la empresa, o la palabra DELETE.
Aislamiento entre clientes
- Toda consulta que devuelve datos de una empresa lleva un filtro por empresa, aplicado con un único ayudante compartido en lugar de reescribirse en cada página.
- El alcance falla cerrado. Un responsable de centro sin centro asignado no coincide con nadie, nunca con toda la empresa.
- Row level security está activado en todas las tablas, sin políticas, lo que las cierra a la API pública de Supabase. Un script de comprobación informa de cualquier tabla abierta y termina con error.
- Los intentos entre clientes están cubiertos por pruebas: escribir en el centro de otra empresa, leer el equipo de otro centro, actuar por encima de tu propio rol y llegar a los registros de otra empresa.
- Esas pruebas se ejecutan contra una base de datos PostgreSQL real, no simulada, y la suite debe pasar antes de publicar una versión.
Autenticación
- El inicio de sesión lo gestiona Clerk, con correo y con Google. La aplicación nunca ve ni guarda una contraseña.
- Los empleados entran con un enlace de invitación personal. El enlace es un token aleatorio, deja de funcionar en cuanto existe la cuenta, y las consultas están limitadas a diez por minuto desde una misma dirección.
- Dar de baja a un empleado corta su acceso en su siguiente petición y conserva el historial de formación que la empresa necesita para una inspección. Se puede deshacer.
- Una pantalla compartida de local entra con un único código de local. El código y el token de sesión asociado se guardan solo como hashes SHA-256, la cookie es http-only y segura, los códigos erróneos se detienen tras cinco intentos y luego se retrasan hasta quince minutos, y la comparación es de tiempo constante.
- Una pantalla de local no es una persona y no puede llegar a ninguna página de la aplicación de gestión, porque cada una de esas páginas pide un rol a un usuario con sesión y una pantalla no tiene ninguno.
Pagos
- Los pagos van por Stripe. Los datos de la tarjeta nunca llegan a nuestros servidores ni se guardan en nuestra base de datos.
- El checkout y el portal de facturación están alojados por Stripe.
- Los webhooks de Stripe se verifican contra un secreto de firma antes de aplicar nada.
- Cada evento de webhook se reclama por su id, así que una entrega repetida no cambia nada. Si un manejador falla, la reclamación se libera y la petición devuelve error, de modo que Stripe vuelve a entregar en lugar de que el reintento se lea como duplicado.
Copias de seguridad y recuperación
- Supabase hace copias automáticas diarias en el plan Pro, confirmado el 8 de agosto de 2026.
- También hacemos nuestras propias copias lógicas completas, esquema y datos, guardadas fuera de la cuenta de alojamiento para que sobrevivan a la pérdida del proyecto o de la propia cuenta.
- Se conservan las últimas doce copias y las más antiguas se eliminan.
- Una restauración se probó el 16 de julio de 2026 en un clúster PostgreSQL separado. El número de filas y los números de certificado coincidieron con producción.
- La recuperación a un punto en el tiempo no está activada. Fue una decisión tomada el 17 de julio de 2026, y es la razón de que el punto de recuperación de abajo se mida en un día y no en minutos.
- Nos comprometemos a un punto de recuperación de 24 horas y a un tiempo de recuperación de 24 horas. El tiempo que tardó la restauración probada no quedó registrado, así que nos comprometemos a la cifra de la que estamos seguros y no a una más rápida.
Disponibilidad
- Respondemos por un 99,5% de disponibilidad en un mes natural, medida sobre que la aplicación esté accesible.
- Los créditos por servicio no forman parte de las condiciones estándar. Un acuerdo enterprise puede añadirlos.
- Vercel y Supabase publican sus propios compromisos de disponibilidad. La cifra de arriba es la nuestra, no una repetición de la suya.
Supervisión y registros
- Los cambios en personas, roles, asignaciones de formación, pantallas de local, suscripciones y ajustes de empresa se escriben en un registro de auditoría con la empresa, quién actuó, qué hizo, sobre qué registro y cuándo.
- El registro de auditoría lo puede leer nuestro rol de administrador de plataforma, y las entradas de una empresa se le pueden entregar si lo pide.
- Los registros de ejecución los guarda Vercel durante el periodo que ofrece su plan.
- Los informes de Content Security Policy llegan a su propio endpoint, con límite de frecuencia por dirección.
- Un endpoint de versión indica el commit, el entorno y la región que están sirviendo, así que una publicación se puede confirmar desde fuera de la aplicación.
Subencargados
Cinco proveedores tratan datos por cuenta nuestra. Es la misma lista que figura en nuestro Acuerdo de Tratamiento de Datos.
- Vercel, alojamiento de la aplicación, región europea
- Supabase, base de datos PostgreSQL, región europea
- Clerk, autenticación e identidad
- Stripe, procesamiento de pagos
- Resend, correo transaccional
Avisamos a los clientes antes de añadir o sustituir un subencargado, y el cliente puede oponerse.
La entrada por voz en los registros diarios solo se ofrece donde está activada para un despliegue. Cuando lo está, un clip de audio corto se envía a Google Cloud Speech-to-Text para convertirlo en texto, y el audio no se guarda. Se avisa a todo cliente cuyo despliegue la tenga activada, porque añade un sexto encargado.
Ubicación de los datos y transferencias
- Los datos de producción de clientes europeos se guardan en la Unión Europea y se sirven desde París.
- Cuando un subencargado está establecido fuera de la Unión Europea, la transferencia se ampara en una decisión de adecuación o en Cláusulas Contractuales Tipo.
- Tratamos los datos personales conforme al RGPD y, para clientes en Japón, conforme a la Ley de Protección de la Información Personal.
Borrado y exportación
- Un administrador de empresa exporta el registro completo de formación en CSV cuando quiera, sin pedírnoslo.
- Los certificados y el libro de registros diario se descargan en PDF.
- Se puede borrar a una persona si lo pide. Se eliminan su cuenta en nuestro proveedor de autenticación, su historial de formación y exámenes, y las entradas de auditoría que la describen.
- Se puede borrar una empresa entera si lo pide. Eso elimina todos los usuarios, centros, departamentos, resultados de examen, certificados, notificaciones y entradas de auditoría, junto con las cuentas en nuestro proveedor de autenticación y el registro de cliente en Stripe.
- Completamos una solicitud de borrado verificada en un plazo de 30 días, y normalmente en cinco días laborables.
- Los registros de certificados se conservan cinco años desde su emisión para que una empresa pueda mostrar su historial a un inspector, salvo que se pida el borrado antes.
Certificaciones
No tenemos certificación ISO 27001 ni informe SOC 2, y ningún tercero ha auditado estos controles. Lo que hay en esta página está construido en el producto y se puede comprobar contra él. Si su revisión exige un proveedor certificado, díganoslo pronto y le diremos claramente si podemos cumplirlo.
Comunicar una vulnerabilidad
Escriba a privacy@haccphyve.com contando qué hizo y qué vio. Confirmamos la recepción en dos días laborables.
- Cuéntenoslo primero y denos tiempo para corregirlo antes de contarlo a otros.
- No ejecute escaneos automáticos contra el sitio en producción, y no lea, cambie ni conserve datos de otras personas.
- No emprenderemos acciones contra quien siga esos dos puntos de buena fe.
Documentos relacionados
Los equipos de informática que hagan una revisión formal pueden pedir nuestro cuestionario de seguridad completo en privacy@haccphyve.com.
