Saltar al contenido

Seguridad y fiabilidad

Última actualización: 7 de octubre de 2026

En resumen

Tu contenido vive en tu propio repositorio de GitHub; nuestra base de datos solo guarda los datos de cuenta y del flujo de trabajo necesarios para prestar el servicio (enumerados con precisión en la política de privacidad). PullPress pide a GitHub los permisos más reducidos con los que los redactores aún pueden trabajar, y está diseñado para que ni siquiera una caída total de PullPress te deje sin acceso a tu contenido ni tumbe tu web.

Tu contenido se queda en tu repositorio

Cada página, entrada e imagen que edita tu equipo se guarda con commit en tu propio repositorio de GitHub mediante la GitHub App que instalas. Los borradores son ramas; los cambios publicados son commits fusionados con todo su historial. Nuestra base de datos guarda datos de cuenta y del flujo de trabajo — cuentas, estados de revisión, títulos de las solicitudes de cambio, comentarios e ideas, títulos de las entradas con sus embeddings de búsqueda y una caché de títulos y fechas de las entradas que acelera los listados — pero tus páginas y entradas en sí viven en Git.

Esa arquitectura es tu mejor garantía: tu contenido está versionado por Git, alojado por GitHub y es totalmente portable. Deja PullPress mañana y te quedas con todo, historial incluido.

Inicio de sesión y control de acceso

Los redactores inician sesión con enlaces mágicos de un solo uso y corta duración enviados a su correo — no hay contraseñas que puedan filtrarse, reutilizarse o adivinarse por fuerza bruta, y las solicitudes de enlace están limitadas por cliente y por dirección. La invitación de una persona nueva lleva un enlace de acceso personal: de un solo uso, válido 7 días, guardado solo como hash, ligado a esa cuenta y sin validez en cuanto inicia sesión; abrirlo solo muestra una página, así que los escáneres de correo no pueden gastarlo. Quien ya tiene cuenta nunca inicia sesión desde una invitación — la acepta por sí mismo. El mismo correo lleva un código de seis cifras para iniciar sesión en otro dispositivo: válido 10 minutos, de un solo uso, guardado solo como hash y anulado tras cinco intentos fallidos. Una sesión dura 30 días desde el último uso. Los redactores nunca necesitan una cuenta de GitHub.

El acceso es por capas: roles en el espacio de trabajo (propietario, administrador, miembro), roles en el sitio (redactor, aprobador, lector) y restricciones opcionales por colección, para que un redactor solo vea lo que le corresponde tocar. El acceso a un sitio siempre exige pertenecer al espacio de trabajo al que pertenece el sitio, así que quitar a alguien de un espacio de trabajo acaba con su acceso en todo él, y solo los propietarios pueden conceder o retirar la propiedad. Todo acceso a los datos pasa en el servidor por un único punto de control que aísla los espacios de trabajo, de modo que un espacio de trabajo nunca puede leer los sitios ni las instalaciones de otro.

Los agentes de IA se conectan mediante el Model Context Protocol con OAuth 2.1 con PKCE y tokens rotativos de corta duración — un token de actualización que se reutiliza después de haber sido sustituido revoca toda la conexión (se tolera un reintento de red en 30 segundos) — o con tokens de API personales que caducan a los 30 días, a los 90 días o al año (tú eliges) y se guardan solo como hash. Cada conexión lleva ámbitos (leer, escribir, aprobar y programar) que se muestran en la pantalla de consentimiento junto a la dirección exacta a la que redirige la app; las apps desconocidas se marcan como no verificadas, y cada nueva conexión se notifica por correo al titular de la cuenta. Eliminar una cuenta o registrar un dispositivo para notificaciones nunca es posible con el token de un asistente. Un agente nunca supera el rol de la persona en cuyo nombre actúa: sin el ámbito aprobar-y-programar solo puede redactar y enviar a revisión, y solo un agente que actúe en nombre de un aprobador que haya concedido ese ámbito puede aprobar o programar cambios.

Permisos mínimos en GitHub

La GitHub App de PullPress solo pide lo que necesita el editor: lectura y escritura del contenido del repositorio y de las pull requests, solo lectura de los metadatos y, opcionalmente, solo lectura de los checks. A propósito no tiene acceso a los workflows de Actions, así que ni siquiera una cuenta comprometida podría modificar tu pipeline de CI/CD a través de PullPress. A nivel de organización solo lee la membresía (solo lectura), y únicamente para comprobar — con la autorización de GitHub de quien conecta — que es propietario de la organización antes de poder mover una instalación desde otro espacio de trabajo.

El acceso a GitHub usa tokens de instalación de corta duración emitidos por solicitud. Antes de vincular una instalación a un espacio de trabajo, el propio GitHub confirma — mediante la autorización de GitHub de la persona que conecta — que tiene acceso a ella, de modo que nadie puede vincular los repositorios de otra persona adivinando un número de instalación. Las claves privadas y los secretos se quedan en variables de entorno del servidor y nunca se envían al navegador. Los commits se atribuyen al redactor que los hizo, para que tu historial de Git siga siendo honesto. Esa comprobación usa PKCE, la autorización puntual de GitHub se revoca justo después y se pide a un administrador que la vuelva a confirmar cada 180 días, para que alguien que dejó tu organización de GitHub no siga publicando a través de PullPress sin que lo sepas.

Seguridad de la plataforma

Todo el tráfico va cifrado en tránsito (HTTPS). Los límites de frecuencia protegen el inicio de sesión, el guardado, las revisiones y las invitaciones frente a abusos. Cuando PullPress consulta una URL por ti (comprobación de enlaces, el sitemap de tu web publicada, webhooks de notificación), solo se comunica con direcciones públicas de internet en puertos estándar, así que no se le puede dirigir hacia redes internas. Las claves de IA propias se guardan cifradas. La facturación la gestiona Stripe — nosotros guardamos una referencia de la suscripción, nunca datos de tarjeta.

¿Has encontrado una vulnerabilidad? Infórmanos en security@pullpress.app (también indicado en /.well-known/security.txt) y responderemos lo antes posible. Danos un plazo razonable para corregir el problema antes de hacerlo público.

Fiabilidad y disponibilidad

Nuestro objetivo interno, no vinculante, es una disponibilidad mensual del 99,9 % para el servicio alojado — no es un SLA contractual, y los términos del servicio no prevén créditos de servicio. Publicamos una página de estado pública en /status — estado actual, historial de disponibilidad de 90 días e incidencias, calculados a partir de nuestras propias comprobaciones de salud — además de un endpoint de salud en directo (/api/health) que pueden vigilar monitores de disponibilidad independientes.

Más importante que cualquier cifra es qué pasa cuando algo falla: PullPress está al lado de tu web, no debajo. Tu sitio se construye y aloja desde tu repositorio con tu propio pipeline — si PullPress se cae alguna vez, tu web publicada sigue funcionando, tu contenido sigue en GitHub y no se pierde nada; la edición simplemente se pausa hasta que volvamos.

Copias de seguridad y conservación

Contenido: protegido por el propio Git — historial completo de versiones en tu repositorio, guardado en la infraestructura de GitHub. ¿Lo has borrado o cambiado por error? Cualquier versión anterior se puede restaurar desde el historial, en la app, sin comandos de git.

Datos de cuenta y del flujo de trabajo: guardados en una base de datos Postgres gestionada (Supabase) con copias de seguridad diarias; las copias de seguridad se renuevan en un máximo de 30 días. Los datos de cuenta se conservan mientras exista tu cuenta y se eliminan cuando eliminas tu cuenta (tú mismo, desde tu perfil) o tu espacio de trabajo; tu contenido se queda en tu repositorio, bajo tu control.

Dónde están tus datos

Tu contenido está allí donde esté tu repositorio de GitHub, según tu acuerdo con GitHub. Nuestra base de datos guarda los datos de cuenta y del flujo de trabajo descritos arriba, en una base de datos Postgres gestionada en la UE (Supabase), con la app alojada en Netlify; la analítica solo funciona con consentimiento, en la nube europea de PostHog.

Nuestro acuerdo de tratamiento de datos (/dpa) se aplica automáticamente a cada espacio de trabajo, y la lista actualizada de subencargados con su ubicación está en /subprocessors.

Si tu organización tiene requisitos específicos de ubicación de los datos o de evaluación de proveedores (cuestionarios, detalles del tratamiento), escríbenos a security@pullpress.app — responderlos forma parte del trabajo, no es un extra para empresas.

DIGT CONSULTING BVMuidepoort 46, 9000 GentBelgiumCompany no. BE0783.477.116VAT BE0783.477.116