Sécurité

Sécurité

Copier la page

Sécurité de Workflow Webhooks pour Shopify Flow : hébergement Google Cloud en UE, chiffrement des webhooks et secrets, isolation et mises à jour.

Workflow Webhooks est développé et exploité par Code Creation Labs. Cette page explique la composition de l'application, où elle s'exécute, comment les données de votre boutique sont protégées et comment nous assurons la mise à jour de l'ensemble du système. Elle s'adresse aux propriétaires de boutiques ainsi qu'à toute personne amenée à remplir un questionnaire de sécurité. Les aspects juridiques (politique de confidentialité, accord de traitement des données, sous-traitants) sont disponibles sur Mentions légales et protection des données.

Sur quoi repose l'application ?

Couche Ce que nous utilisons
Code de l'application TypeScript sur Node.js, une version actuelle bénéficiant d'une assistance à long terme. Les pages d'administration, les points de terminaison qui reçoivent vos webhooks et les workers qui les transmettent à Shopify Flow reposent tous sur une seule et même base de code.
Base de données et cache PostgreSQL (Google Cloud SQL) et Redis (Google Cloud Memorystore)
File d'attente Un appel entrant est pris en charge, mis en file d'attente dans Google Cloud Pub/Sub et traité par un processus distinct ; ainsi, même en cas de pic d'appels ou de réponse lente de la part d'Shopify, aucune transmission n'est perdue.
Hébergement Conteneurs sur Google Kubernetes Engine dans la région europe-west1 (Belgique, Union européenne) de Google Cloud. Les bases de données, les caches et les files d'attente sont hébergés au sein de cette région.
Intégration Shopify Les bibliothèques d'applications officielles de Shopify, les déclencheurs et actions de Shopify Flow, ainsi que les webhooks de Shopify
Votre boutique en ligne Aucun élément ne s'exécute dans votre thème. L'URL facultative du proxy d'application pour les appels du navigateur (voir CORS, l'URL du proxy de l'application et les requêtes du navigateur) est fournie par Shopify sur votre propre domaine et vérifiée à l'aide de la signature de Shopify.

Le service ne contient aucun élément PHP, WordPress, Java ou autre environnement d'exécution. L'application est répertoriée sur l'App Store d'Shopify et a été validée lors du processus de vérification des applications d'Shopify, qui porte sur les exigences de Shopify en matière de sécurité et de protection des données des clients.

Comment vos données sont-elles protégées ?

En cours de transmission. Chaque connexion entre votre navigateur, Shopify, les systèmes qui appellent vos webhooks et l'application utilise le protocole TLS. La base de données, le cache et la file d'attente n'ont pas d'adresse publique : ils ne sont accessibles qu'à partir de notre réseau privé.

Au repos. Toutes les bases de données et tous les espaces de stockage sont chiffrés au repos à l'aide de clés que nous gérons dans Google Cloud KMS.

Chiffrement au niveau des champs en plus. Les valeurs les plus sensibles bénéficient d’une deuxième couche de protection : le jeton d’accès Shopify de votre boutique, le secret d’authentification de chaque webhook et tous les secrets que vous stockez pour les fonctions de transformation. Chaque valeur est chiffrée individuellement à l’aide de l’algorithme AES-256-GCM avec une clé distincte dans Cloud KMS, avec rotation automatique des clés, et déchiffrée en mémoire uniquement au moment où cela est nécessaire. Les secrets ne sont jamais consignés dans les journaux et ne sont jamais renvoyés par l’API développeur ni à Sidekick.

Secrets. Les identifiants et clés API du service lui-même sont stockés dans Google Secret Manager et sont chargés au démarrage du service. Ils ne figurent ni dans le code, ni dans les images de conteneur, ni dans le pipeline de compilation.

Minimisation des données. L'application ne demande aucun accès aux données de votre boutique lors de son installation : le lancement d'un workflow Shopify Flow ne nécessite aucune autorisation, et l'application ne consulte jamais de son propre chef les produits, les commandes ou les clients. Une transmission contient exactement les données envoyées par le système appelant.

Qui a accès à quoi ?

  • Votre boutique uniquement. Chaque enregistrement est associé à la boutique à laquelle il appartient, et chaque requête est limitée à la boutique qui a été authentifiée. Une boutique ne peut en aucun cas lire ou modifier les webhooks ou les livraisons d’une autre boutique, et une réponse synchrone est associée à la boutique qui l’a demandée.
  • Uniquement les requêtes vérifiées. Les pages de l'espace d'administration Shopify sont authentifiées à l'aide de jetons de session Shopify. Les callbacks de Shopify Flow et les webhooks propres à Shopify sont vérifiés à l'aide de la signature HMAC de Shopify, et les messages internes à l'aide d'identités signées par Google, avant que les données ne soient traitées.
  • Vos webhooks, vos règles. Chaque URL de webhook est impossible à deviner, et c'est vous qui choisissez comment les appelants doivent s'identifier : un jeton statique, une signature HMAC sur le corps du message, ou aucune vérification pour les sources qui ne peuvent pas signer. Une option Listes d'adresses IP autorisées permet de restreindre davantage l'accès des appelants ; l'adresse de l'appelant est extraite de la connexion réseau, et non d'un en-tête, ce qui empêche toute falsification. Les livraisons en double sont détectées et traitées une seule fois. Voir Authentification.
  • Fonctions de transformation. Le code JavaScript que vous écrivez pour Fonctions de transformation s'exécute dans un environnement isolé soumis à des limites de temps et de mémoire, sur une infrastructure distincte de celle des serveurs de l'application. Il n'a jamais accès aux identifiants de l'application ni à votre jeton d'accès Shopify, et ses requêtes sortantes sont vérifiées par rapport à des plages d'adresses réseau privées avant toute connexion.
  • Requêtes sortantes. Les URL vers lesquelles l'application effectue des appels en votre nom, pour Interrogation programmée d'URL et pour Appel d'un webhook depuis Shopify Flow, sont vérifiées avant l'établissement de la connexion : les adresses de bouclage, les adresses « link-local », les métadonnées cloud et les adresses de réseaux privés sont refusées, y compris en cas de redirection.
  • Notre équipe. L'accès aux systèmes de production se fait exclusivement via Google Cloud IAM, à l'aide de comptes individuels. Les outils de maintenance internes ne sont pas exposés à Internet.

Comment nous assurons la mise à jour de l'application

  • Chaque modification est analysée avant sa mise en production. Le pipeline effectue des vérifications de type et des analyses de code, des tests statiques de sécurité des applications (SAST), la détection des secrets, l'analyse des vulnérabilités des dépendances et l'analyse des images de conteneurs. Notre critère de publication est l'absence totale de vulnérabilités connues dans les dépendances et dans l'image.
  • Environnement d'exécution et système d'exploitation. L'image du conteneur, Node.js sur sa base Alpine Linux, est recompilée à chaque nouvelle version, ce qui permet de bénéficier en permanence des correctifs pour l'environnement d'exécution et le système d'exploitation. La plateforme Kubernetes gérée veille à ce que les nœuds sous-jacents soient toujours à jour.
  • Plateforme Shopify. Nous suivons de près les versions de l'API Shopify ainsi que les avis de sécurité concernant les bibliothèques d'applications Shopify, et nous appliquons les mises à jour sans délai. L'application fonctionne avec une version à jour de l'API Admin.
  • Contrôles de sécurité. Nous procédons à un contrôle interne complet de chaque itinéraire, chemin de données et requête de base de données à intervalles réguliers, le dernier ayant eu lieu en octobre 2026.
  • Surveillance. La disponibilité est surveillée 24 heures sur 24 et publiée sur notre page d'état ; les erreurs déclenchent des alertes. Les journaux d'exploitation sont conservés pendant 30 jours au maximum et ne contiennent jamais de jetons ni de secrets.

Conservation et suppression

  • L'historique des envois est conservé tant que l'application est installée, ce qui vous permet de consulter et de réécouter les appels ; vous pouvez également supprimer des entrées à tout moment. Les en-têtes susceptibles de contenir des identifiants sont masqués avant l'enregistrement d'un envoi.
  • Lorsque vous désinstallez l'application, son accès à votre boutique est immédiatement supprimé. La demande « shop/redact » d'Shopify, qui intervient 48 heures après la désinstallation, efface les données restantes de la boutique, y compris tout ce que vos fonctions de transformation avaient stocké.
  • Shopify
  • La liste des sous-traitants et le calendrier complet de conservation des données figurent dans la privacypolicy. Vous pouvez demander un accord de traitement des données signé à l'adresse workflow-webhooks.app/dpa.

Signaler un problème de sécurité

Si vous pensez avoir identifié une faille de sécurité ou si vous souhaitez remplir un questionnaire de sécurité, veuillez envoyer un e-mail à support@codecreationlabs.com. Les rapports de sécurité sont traités en priorité et font l'objet d'une réponse rapide.