Le contexte
Une société de gestion fait migrer le portail de ses investisseurs (environ 200 comptes) d’une plateforme cloud vers une base de données auto-hébergée sur un serveur privé, par un prestataire indépendant. L’envoi aux investisseurs est annoncé sous deux semaines. Le fonds veut un avis indépendant avant d’ouvrir.
Le code lu est un instantané daté ; le compte d’accès de l’associé n’est pas utilisé ; aucune donnée personnelle n’est consultée. L’indépendance vis-à-vis du prestataire est écrite dans le rapport.
Ce qui a été fait
- Un protocole d’audit versionné : dix champs par constat, huit phases, douze garde-fous vérifiés par le code. Quatre niveaux de preuve (directe rejouable, d’historique, déclarative, déductive) ; aucune conclusion de gravité haute ne repose sur une déclaration seule.
- Un modèle de risque explicite, RA = RI × RC × RD, avec un risque d’audit fixé à 5 % : là où l’isolation des données est en jeu, le test est exhaustif, pas échantillonné.
- Des preuves rejouables par script : isolation par compte, fonctions serveur sans jeton, ports ouverts, second facteur. Deux modèles d’IA ont travaillé le dossier : un auteur, un critique, sous relecture humaine.
- Puis la reprise : forge sur GitHub, intégration continue, pipeline de déploiement qui planifie, applique et garde les migrations avec sauvegarde avant écriture ; lots de sécurité ; filigrane nominatif gravé côté serveur sur chaque document consulté ; recette fiche par fiche sur des comptes de test, en production, avec autorisation écrite et nettoyage prouvé.
- Un dossier final impersonnel, 140 points, chaque reprise située et sourcée, publié pour le fonds et, dans une version contradictoire, pour le prestataire.
Ce que ça a donné
- Au 12/10/2026 : 18 déploiements en une journée, tous réussis, 9 migrations appliquées par le pipeline ; plus aucune écriture manuelle sur le serveur.
- Isolation vérifiée sur 16 comptes de test : la vue de chacun est exactement celle attendue, 0 accès sans droit, 0 document manquant. 9 fonctions serveur testées sans jeton : 9 refus.
- Filigrane : 58 documents gravés, 0 échec, 911 pages sur 911 portant la mention du lecteur.
- 1 338 tests dans le dépôt repris ; 121 contrôles de cohérence rejoués avant toute publication du dossier.
- La mise en service a été décalée par le fonds : l’audit a montré ce qui manquait avant d’exposer 200 investisseurs. C’est son rôle.
Ce qu’on retient
Un audit n’est utile que s’il est rejouable et s’il débouche sur des décisions datées. La reprise vaut par ce qu’elle institue : un pipeline, des tests, une recette, un journal. Pas par le volume de code.