Seguridad
Seguridad de Workflow Webhooks para Shopify Flow: alojamiento en la UE, cifrado y aislamiento de webhooks y claves secretas, y actualizaciones de la app.
Workflow Webhooks ha sido desarrollado y es gestionado por Code Creation Labs. En esta página se explica en qué consiste la aplicación, dónde se ejecuta, cómo se protegen los datos de su tienda y cómo nos aseguramos de que todo esté actualizado. Está dirigida a los propietarios de tiendas y a cualquier persona que deba cumplimentar un cuestionario de seguridad. La información legal (política de privacidad, acuerdo de tratamiento de datos, subencargados del tratamiento) se encuentra en Aspectos legales y protección de datos.
En qué se basa la aplicación
| Capa | Lo que utilizamos |
|---|---|
| Código de solicitud | TypeScript en Node.js, una versión actual con soporte a largo plazo. Las páginas de administración, los endpoints que reciben sus webhooks y los trabajadores que los transmiten a Shopify Flow forman parte de una única base de código. |
| Base de datos y caché | PostgreSQL (Google Cloud SQL) y Redis (Google Cloud Memorystore) |
| Cola | Las llamadas entrantes se aceptan, se ponen en cola en Google Cloud Pub/Sub y son procesadas por un trabajador independiente, por lo que ni un pico de llamadas ni una respuesta lenta por parte de Shopify hacen que se pierda ninguna entrega. |
| Alojamiento web | Contenedores en Google Kubernetes Engine en la región «europe-west1» (Bélgica, Unión Europea) de Google Cloud. Las bases de datos, las cachés y las colas se encuentran en la propia región. |
| Integración con Shopify | Las bibliotecas oficiales de aplicaciones de Shopify, los activadores y acciones de Shopify Flow, y los webhooks de Shopify |
| Su tienda online | No se ejecuta nada en su tema. La URL opcional del proxy de la aplicación para las llamadas del navegador (véase CORS, la URL del proxy de la aplicación y las llamadas del navegador) la proporciona Shopify en su propio dominio y se verifica mediante la firma de Shopify. |
En ningún lugar del servicio se utiliza PHP, WordPress, Java ni ningún otro entorno de ejecución. La aplicación figura en la Tienda de aplicaciones de Shopify y ha superado el proceso de revisión de aplicaciones de Shopify, que abarca los requisitos de seguridad de Shopify y de protección de los datos de los clientes.
Cómo se protegen sus datos
En tránsito. Todas las conexiones entre su navegador, Shopify, los sistemas que activan sus webhooks y la aplicación utilizan el protocolo TLS. La base de datos, la caché y la cola no tienen dirección pública: solo se puede acceder a ellas desde el interior de nuestra red privada.
En reposo. Todas las bases de datos y los sistemas de almacenamiento están cifrados en reposo con claves que gestionamos en Google Cloud KMS.
Cifrado a nivel de campo adicional. Los valores más sensibles cuentan con una segunda capa: el token de acceso de Shopify de su tienda, el secreto de autenticación de cada webhook y todos los secretos que almacene para las funciones de transformación. Cada valor se cifra de forma individual con AES-256-GCM mediante una clave independiente en Cloud KMS, con rotación automática de claves, y se descifra en memoria únicamente en el momento en que es necesario. Los secretos nunca se registran en los registros de sistema y nunca son devueltos por la API para desarrolladores ni a Sidekick.
Secretos. Las credenciales y claves de la API del propio servicio se almacenan en Google Secret Manager y se cargan al iniciarse el servicio. No se encuentran en el código, ni en las imágenes de contenedor, ni en el proceso de compilación.
Minimización de datos. La aplicación no solicita acceso a los datos de su tienda durante la instalación: iniciar un flujo de trabajo de Shopify Flow no requiere ningún permiso, y la aplicación nunca lee por sí misma productos, pedidos ni clientes. Cada entrega contiene exactamente el payload que le ha enviado el sistema que la ha solicitado.
Quién puede acceder a qué
- Únicamente su tienda. Cada registro incluye la tienda a la que pertenece, y cada consulta se limita a la tienda que se ha autenticado. Una tienda nunca puede leer ni modificar los webhooks o las entregas de otra tienda, y una respuesta sincrónica se asocia a la tienda que la ha solicitado.
- Solo se admiten solicitudes verificadas. Las páginas del panel de administración de Shopify se autentican mediante tokens de sesión de Shopify. Las llamadas de retorno de Shopify Flow y los webhooks propios de Shopify se verifican mediante la firma HMAC de Shopify, y los mensajes internos mediante identidades firmadas por Google, antes de que se acceda a ningún dato.
- Your webhooks, your rules. The URL of each webhook is impossible to guess, and you choose how applicants must identify themselves: using a static token, an HMAC signature on the message body, or none of these options for sources that cannot sign. Un Listas de direcciones IP permitidas opcional restringe aún más a los remitentes; la dirección del remitente se obtiene de la conexión de red, no de un encabezado, por lo que no puede falsificarse. Las entregas duplicadas se reconocen y se procesan una sola vez. Consulte Autenticación.
- Funciones de transformación. El código JavaScript que escriba para Funciones de transformación se ejecuta en un entorno aislado con límites de tiempo y memoria, en una infraestructura independiente de los propios servidores de la aplicación. Nunca tiene acceso a las credenciales de la aplicación ni a su token de acceso de Shopify, y sus solicitudes salientes se comprueban con los rangos de la red privada antes de establecerse la conexión.
- Solicitudes salientes. Las URL a las que la aplicación accede en su nombre, tanto para Consulta programada de direcciones URL como para Llamada a un webhook desde Shopify Flow, se comprueban antes de establecer la conexión: se rechazan las direcciones de bucle de retorno, locales de enlace, de metadatos en la nube y de redes privadas, incluso si se accede a ellas a través de una redirección.
- Nuestro equipo. Solo se puede acceder a los sistemas de producción a través de Google Cloud IAM con cuentas individuales. Las herramientas de mantenimiento interno no están expuestas a Internet.
Cómo mantenemos la aplicación actualizada
- Cada modificación se analiza antes de que pueda enviarse. El proceso de integración realiza comprobaciones de tipos y análisis de código, pruebas estáticas de seguridad de aplicaciones (SAST), detección de datos confidenciales, análisis de vulnerabilidades en las dependencias y análisis de imágenes de contenedores. Nuestro criterio de lanzamiento es que no haya ninguna vulnerabilidad conocida ni en las dependencias ni en la imagen.
- Entorno de ejecución y sistema operativo. La imagen del contenedor, Node.js sobre su base de Alpine Linux, se recompila con cada lanzamiento, por lo que los parches del entorno de ejecución y del sistema operativo se distribuyen de forma continua. La plataforma gestionada de Kubernetes se encarga de mantener actualizados los nodos subyacentes.
- Plataforma Shopify. Realizamos un seguimiento de las versiones de la API de Shopify y de los avisos de seguridad relativos a las bibliotecas de aplicaciones de Shopify, y aplicamos las actualizaciones sin demora. La aplicación funciona con una versión actual de la API de administración.
- Revisiones de seguridad. Llevamos a cabo una revisión interna exhaustiva de cada ruta, cada camino de datos y cada consulta a la base de datos a intervalos regulares; la última de ellas tuvo lugar en octubre de 2026.
- Supervisión. La disponibilidad se supervisa las 24 horas del día y se publica en nuestra página de estado; además, recibimos alertas en caso de errores. Los registros operativos se conservan durante un máximo de 30 días y nunca contienen tokens ni claves secretas.
Conservación y supresión
- El historial de envíos se conserva mientras la aplicación esté instalada, de modo que pueda consultar y volver a reproducir las llamadas, y pueda eliminar entradas en cualquier momento. Los encabezados que pudieran contener credenciales se ocultan antes de que se almacene un envío.
- Al desinstalar la aplicación, su acceso a su tienda se elimina de inmediato. La solicitud «shop/redact» de Shopify, que se procesa 48 horas después de la desinstalación, borra los datos restantes de la tienda, incluido todo lo que hayan almacenado sus funciones de transformación.
- Shopify
- Los subencargados del tratamiento y el calendario completo de conservación de datos figuran en la privacypolicy. Puede solicitarse un acuerdo de tratamiento de datos firmado en workflow-webhooks.app/dpa.
Notificar un problema de seguridad
Si cree que ha detectado una vulnerabilidad o necesita que se le envíe un cuestionario de seguridad, envíe un correo electrónico a support@codecreationlabs.com. Los informes de seguridad se revisan y se responden con carácter prioritario.
