Boutiques · 8 min · publié le 7 mai 2025

Clés API Magento oubliées : elles survivent au mot de passe

Une intégration ERP, un vieux connecteur marketplace, un token OAuth de 2019 : ils survivent au mot de passe admin. Révoquez toutes les clés que vous ne pouvez pas nommer. Puis seulement, changez le mot de passe humain.

Réponse directe

Une intégration ERP ou un vieux connecteur. Révoquez toutes les clés que vous ne pouvez pas nommer. Puis changez le mot de passe admin.

clé api magento integration magento pirate access token magento

Pourquoi le mot de passe ne suffit pas

Magento (et Adobe Commerce) sépare l'humain (admin + ACL) et la machine (Integrations OAuth, tokens REST, clés dans `env.php`). Changer `admin123` laisse le token ERP vivant. C'est le piège le plus cher après un « on a tout sécurisé ». L'ordre : inventaire et révocation des clés, invalidation des sessions admin, puis nouveau mot de passe. Inverser = le token recrée un admin pendant que vous tapez le nouveau secret.

Cadre incident : Magento Magecart, guide. Même idée côté Presta (webservice) et Woo (REST keys).

Une intégration « inactive » dans l'écran n'est pas toujours un token mort. Vérifiez, révoquez, ne supposez pas.

Où Magento range les secrets

System → Extensions → Integrations (OAuth consumers, callbacks). System → Extensions → API (selon version). Tokens dans les tables `oauth_*`. `app/etc/env.php` : crypt key, credentials DB, parfois cache Redis, files. Magento 1 : `local.xml`, admin users API. Les extensions (ERP, PIM, marketplace) ajoutent leurs propres tables et fichiers `etc/`.

Les CI/CD (deployer, Bitbucket) et les laptops freelance ont des copies de `env.php`. Un roll dans l'admin sans tourner ces copies, et l'ancien secret revient au prochain deploy. Listez les consommateurs humains : qui a le repo ?

Inventaire : nommer ou tuer

Pour chaque intégration : à quoi elle sert, qui l'a demandée, quelles ressources ACL (orders, customers, cms, users). Ce que personne ne revendique : révoquer. Ce que l'ERP revendique : roll (nouveau secret, MAJ côté ERP le même jour, test d'un flux). Un « on verra lundi pour l'ERP » laisse une porte ouverte le week-end.

Les access tokens personnels d'un développeur parti : morts. Les sandbox mélangés à la prod : séparés et rollés.

  • Integrations : responsable nommé ou révocation.
  • ACL de chaque token lue (write vs read).
  • Date de dernière utilisation si les logs la donnent.

Tokens en env.php et hors admin

La crypt key Magento protège des secrets en base. Si `env.php` a fuité (git public, backup web, voisin), partez du principe que des valeurs déchiffrables ont pu l'être. Tournez la crypt key est une opération délicate (données déjà chiffrées) : ne le faites pas à 23 h sans procédure. En urgence : révoquez les tokens applicatifs, tournez DB password, restreignez l'accès au fichier.

Les `.env` Docker, les secrets Kubernetes, les variables chez l'hébergeur : même inventaire. Migration — un zip Magento voyage aussi mal.

Ce qu'une clé oubliée a déjà pu faire

Lire commandes et clients (RGPD). Écrire un CMS block (skimmer). Créer un admin. Pousser un prix. Exporter un flux. La clé `read` n'est pas « inoffensive » : c'est une exfiltration possible. Le constat données dépend de ce que le token permettait, pas de ce que vous « croyez qu'ils ont fait ».

Les journaux API Magento / le WAF / les access.log sur `/rest/` datent. Exportez avant rotation des logs hébergeur.

Roll sans casser l'ERP

Prévenez l'équipe qui opère l'ERP / le PIM une heure avant. Nouveau secret, test d'un GET inoffensif, puis cutover. Un roll à froid un samedi sans la personne qui connaît le connecteur = commandes qui ne partent plus, et la tentation de « remettre l'ancienne clé une minute ». Cette minute est le dossier.

Documentez le nouveau secret dans un gestionnaire, pas dans un email. Révoquez l'ancien tout de suite, pas « quand on sera sûrs » trois semaines.

Webhooks et callbacks liés

Les integrations ont une callback URL. Si elle pointe vers un hôte inconnu, l'OAuth dance peut servir un tiers. Les webhooks PSP sont un autre tiroir — webhooks paiement — à faire dans la même vacation. Les cron Magento qui poussent vers une URL : listez `cron_schedule` et les configs d'export.

Relire à J+7 : la clé qui revient

Un deploy, un module « reconfigure », un backup d'`env.php` remis par erreur. Relistez les integrations. Un token nouveau sans ticket interne = incident. Service : Magento. Déclaration : créer un compte.

  • Plus aucune intégration innommable.
  • ERP recollé le jour du roll.
  • env.php et copies hors git public.
  • Contrôle à J+7.

Adobe Commerce Cloud et les clés hors admin

Sur Cloud, des variables d'environnement, des integrations Fastly, des clés New Relic, un utilisateur SSH git : l'admin Magento n'est pas le seul tiroir. Après un incident, passez aussi par le panel Cloud / le projet git. Un token CI qui déploie `env.php` avec l'ancienne intégration ramène la porte. Coordonnez-vous avec l'équipe qui merge.

Les webhooks Adobe / les apps marketplace installées en « integration » apparaissent parfois ailleurs que System → Integrations. Inventaire Complet : `bin/magento integration:list` (selon version), tables oauth, panel Cloud. Magento Magecart.

Un store view B2B avec son propre ERP : deux jeux de clés. Un roll « global » oublié du website US laisse une porte. Listez par website. Boutique B2B si les grilles partent par API.

Questions fréquentes

On n'a pas d'ERP. On est concernés ?

+
Oui. Un connecteur compta, un plugin d'avis, un outil de feed Google, une app mobile, un prestataire SEO « qui avait besoin d'une clé ». Inventoriez.

Une clé read-only clients, je peux la garder ?

+
Seulement si vous la nommez, la tournez, et assumez le risque RGPD. « Read-only » n'est pas « pas une fuite ». Après incident, le défaut est révocation.

Composer / packagist a besoin d'une clé Magento ?

+
Les clés marketplace Adobe pour télécharger des packages ne sont pas des tokens REST boutique. Distinguez-les. Tournez les clés marketplace si le poste qui les avait est compromis ; ce n'est pas le même tiroir que les orders API.

Magento 1 encore. Même discours ?

+
Oui, en plus fragile (fin de vie). Users API SOAP/REST, `local.xml`. Planifiez la sortie ; pendant l'incident, révoquez quand même.

Le token est dans un mot de passe d'un prestataire qui ne répond plus.

+
Révoquez. Ils appelleront. C'est moins grave qu'une porte ouverte « le temps qu'ils reviennent de congés ».
À lire ensuite
Magento piraté (Magecart) Guide Magento Webhooks de paiement Employé PrestaShop (même idée) Magento (service) Déclarer mon site