Traduit avec l’IA à partir de la version anglaise du 30 octobre 2026. Lire l’original
La sécurité chez LightInventory
Où se trouvent vos données, quel accès Google nous demandons, comment fonctionnent la connexion, les rôles et l’historique à altération détectable, et nos prestataires.
Dernière mise à jour : 30 octobre 2026
Vos données de stock restent dans votre propre feuille Google Sheets. LightInventory lit et écrit ce fichier en votre nom, ne conserve aucune copie de son contenu sur nos serveurs et ne stocke que ce dont il a besoin pour faire fonctionner votre compte. Cette page explique précisément comment cela fonctionne, contre quoi nous nous protégeons et où se situent les limites.
Où se trouvent vos données
Les données métier (articles, emplacements, mouvements de stock, prix, notes, propositions soumises à validation et valeurs avant et après de votre historique) se trouvent uniquement dans des feuilles de calcul de votre compte Google. Nos serveurs lisent les valeurs des cellules en mémoire pour afficher les pages, comparer les modifications, créer les exports et écrire vos mises à jour. Ces valeurs ne sont enregistrées ni dans notre base de données, ni dans nos journaux, ni dans nos rapports d’erreur. Une suite de tests automatisés vérifie qu’aucune table, aucune ligne de journal et aucun événement d’erreur ne contient de valeurs de cellules.
Nous stockons en revanche les données nécessaires au fonctionnement de votre compte :
| Ce que nous stockons | Pourquoi | Protection |
|---|---|---|
| Utilisateurs, profils, organisations, adhésions, rôles, invitations (uniquement une empreinte de chaque jeton d’invitation) | Connexion et gestion de l’équipe | Chiffrés au repos par le fournisseur de la base de données |
| Facteurs de connexion : clés publiques des clés d’accès, secrets TOTP, codes de récupération hachés | Authentification multifacteur | Les secrets TOTP sont en plus protégés par chiffrement d’enveloppe, avec des clés conservées dans un service de gestion de clés |
| Jeton d’actualisation Google de la feuille de calcul connectée | Lire et écrire dans votre fichier | Protégé par chiffrement d’enveloppe ; jamais envoyé au navigateur ni écrit dans les journaux |
| Métadonnées de la feuille de calcul : identifiant du fichier, identifiants des onglets, version du schéma, mode de verrouillage | Retrouver et vérifier votre fichier | Ne contiennent aucune valeur de cellule |
| Empreintes de lignes (empreintes à clé de chaque ligne) | Détecter les modifications faites directement dans la feuille | À clé, donc impossibles à reconvertir en valeurs |
| Chaîne d’empreintes d’audit : numéros de séquence, identifiants d’entrée, empreintes, identifiant de l’auteur, type d’action, heure | Prouver que votre historique n’a pas été modifié | Ne contient aucune valeur |
| Références de facturation de notre prestataire de paiement | Abonnements et factures | Ne contiennent aucun numéro de carte |
| Événements de sécurité : tentatives de connexion, refus d’autorisation, adresse IP, navigateur | Détecter les abus | Adresse IP supprimée après 90 jours, événements supprimés après 1 an |
Notre propre système fonctionne à Londres. La base de données (Supabase, région eu-west-2), les serveurs d’application (Vercel, région lhr1) ainsi que nos clés de chiffrement et nos ancrages d’historique (Google Cloud, région europe-west2) y sont tous rattachés. Les e-mails transactionnels constituent la seule exception documentée, présentée dans la section infrastructure et sous-traitants.
L’accès Google que nous demandons
LightInventory demande deux choses à Google. Lors de la connexion avec Google, il demande votre profil de base : openid, email et profile. Lorsque vous connectez une feuille de calcul, il demande séparément une seule autorisation Drive : drive.file.
Concrètement, drive.file permet à une application de travailler uniquement avec les fichiers que vous créez avec elle ou que vous choisissez pour elle. Google le décrit comme un accès aux fichiers que vous ouvrez avec une application, ou que l’utilisateur partage avec une application à l’aide de l’API Google Picker (Champs d’application de l’API Google Drive). Google le classe parmi les champs d’application non sensibles.
Ce que cela signifie pour vous :
- LightInventory ne peut ni lister, ni ouvrir, ni rechercher le reste de votre Google Drive. Un fichier que vous n’avez jamais créé avec LightInventory ni choisi dans le sélecteur de fichiers Google lui est invisible.
- Nous ne demandons jamais le champ d’application plus large
spreadsheets, ni aucun champ d’application donnant accès à tout Drive. - Après chaque autorisation, nous vérifions que Google a renvoyé exactement l’accès demandé.
- Vous pouvez retirer cet accès à tout moment depuis votre compte Google. Consultez Révoquer l’accès Google de LightInventory.
Seule la personne qui connecte la feuille de calcul accorde cet accès, et cette personne doit être propriétaire du fichier. Les membres de votre équipe ne sont jamais ajoutés au fichier dans Google. Ils travaillent via l’application, avec les rôles que vous leur attribuez.
Connexion et sessions
Chaque utilisateur se connecte avec deux facteurs, dans toutes les formules, à chaque ouverture de session.
- Premier facteur : la connexion avec Google, ou une adresse e-mail et un mot de passe. Les mots de passe doivent comporter au moins 12 caractères et sont comparés à des listes de mots de passe divulgués. La connexion avec Google ne compte que comme premier facteur, jamais comme les deux.
- Second facteur : une clé d’accès, l’option par défaut, qui résiste à l’hameçonnage, ou un code TOTP issu d’une application d’authentification. Chaque utilisateur enregistre au moins deux méthodes et reçoit 10 codes de récupération à usage unique.
Pour les Propriétaires et les Administrateurs, une connexion résistante à l’hameçonnage est exigée par défaut : le TOTP est donc désactivé pour ces rôles, sauf si le propriétaire modifie ce paramètre. Les clés de sécurité physiques fonctionnent comme des clés d’accès. Un lien envoyé par e-mail permet de réinitialiser un mot de passe, mais il ne remplace jamais le second facteur.
L’authentification multifacteur est vérifiée à deux endroits indépendants : dans le code de notre serveur et dans les règles d’accès de la base de données elle-même. Une session qui n’a validé que le premier facteur ne peut rien lire, même si elle interroge directement la base de données.
| Paramètre de session | Valeur |
|---|---|
| Déconnexion après inactivité | 60 minutes |
| Durée maximale d’une session | 24 heures |
| Nouvelle validation du second facteur pour les actions sensibles | Dans les 5 dernières minutes |
| Tentatives de second facteur échouées avant blocage | 10, avec des délais de 30 secondes à 1 heure |
Les actions sensibles comprennent les changements de rôle, les modifications de facturation, la connexion ou la déconnexion d’une feuille de calcul, les exports, les annulations groupées, les modifications des méthodes de connexion et la suppression de l’organisation. Vous pouvez voir vos sessions actives et mettre fin à n’importe laquelle d’entre elles. Nous vous envoyons un e-mail lorsqu’un nouvel appareil se connecte, lorsqu’une méthode de connexion est ajoutée ou supprimée, et lorsque des codes de récupération sont utilisés.
Rôles, emplacements et validations
Chaque organisation dispose de cinq rôles : Propriétaire, Administrateur, Approbateur, Éditeur et Lecteur. Les Éditeurs et les Lecteurs peuvent être limités à certains emplacements : l’équipe d’un magasin ne voit et ne modifie ainsi que son propre stock.
| Capacité | Propriétaire | Administrateur | Approbateur | Éditeur | Lecteur |
|---|---|---|---|---|---|
| Voir les articles, le stock et l’historique | Oui | Oui | Oui | Ses emplacements | Ses emplacements |
| Enregistrer des mouvements | Oui | Oui | Oui | Ses emplacements | Non |
| Valider des demandes | Oui | Oui | Oui, sauf les siennes | Non | Non |
| Annulation groupée | Oui | Oui | Non | Non | Non |
| Gérer les membres | Oui | Oui | Non | Non | Non |
| Connecter la feuille de calcul, supprimer l’organisation | Oui | Non | Non | Non | Non |
Les autorisations sont lues en direct à chaque requête : retirer quelqu’un ou changer son rôle prend effet dès sa prochaine action. Toute requête est refusée, sauf si une règle l’autorise. Chaque rôle est expliqué dans Équipe et rôles.
Les validations sont facultatives. Lorsqu’elles sont activées, une organisation peut exiger une validation pour des modifications comme les changements de prix ou les ajustements de stock. La modification proposée est écrite dans un onglet protégé de votre feuille de calcul, et personne ne peut valider sa propre demande. Pour en savoir plus, consultez la présentation de la piste d’audit.
Un historique à altération détectable
Chaque modification faite via LightInventory est écrite sous forme d’entrée d’historique dans un onglet Log protégé de votre feuille de calcul, dans la même mise à jour Google que la modification elle-même. Le stock n’est jamais modifié comme un nombre. Il est calculé à partir d’une liste de mouvements où l’on ne fait qu’ajouter, et une annulation est une nouvelle entrée de sens inverse, pas une suppression.
« À altération détectable » signifie que si quelqu’un modifie ou supprime une entrée passée, la vérification le révèle. Cela ne signifie pas que la modification est impossible. Voici comment cela fonctionne :
- Une chaîne à clé. Chaque entrée reçoit un code calculé à partir de son contenu et du code de l’entrée précédente, avec HMAC-SHA256 et une clé secrète propre à votre organisation, que seul LightInventory détient. Modifier une entrée rompt la chaîne à partir de ce point. Comme la clé est secrète, personne ne peut discrètement recalculer les codes après une modification.
- Une copie de la chaîne, sans valeurs. Nous conservons les codes de la chaîne, jamais vos valeurs, dans une table de base de données qui refuse les modifications et les suppressions.
- Des ancrages quotidiens hors de notre base de données. Une fois par jour, une empreinte unique de la dernière position de la chaîne de chaque organisation est écrite dans un bucket Google Cloud Storage soumis à une règle de conservation verrouillée de 7 ans. Une fois verrouillée, cette règle ne peut être ni raccourcie ni supprimée. Un attaquant capable de modifier notre base de données ne pourrait toujours pas réécrire ces ancrages.
- Une vérification chaque nuit. Chaque nuit, et chaque fois que le propriétaire le demande, nous recalculons la chaîne à partir de votre onglet
Loget la comparons à notre copie et au dernier ancrage. En cas de divergence, chaque membre voit un avertissement d’intégrité, et le Propriétaire et les Administrateurs reçoivent un e-mail.
La limite, c’est la propriété. Le propriétaire d’un fichier Google peut toujours le modifier, le déverrouiller, le copier ou le supprimer ; Google ne permet d’exclure personne. La chaîne ne peut pas l’empêcher, mais elle le rend visible. Google enregistre aussi les écritures de notre application sous le compte du propriétaire, car nous écrivons avec son autorisation. Notre onglet Log enregistre le véritable membre de l’équipe.
Modifications faites directement dans la feuille
Par défaut, vos onglets gérés sont protégés afin que seul le propriétaire puisse les modifier dans Google Sheets, et les éditeurs du fichier ne peuvent pas le partager à leur tour. Un verrouillage strict facultatif met le fichier en lecture seule dans Google jusqu’à ce que le propriétaire le déverrouille délibérément.
Comme le propriétaire peut toujours faire des modifications, LightInventory les détecte également. Chaque fois que l’application lit votre feuille, elle compare chaque ligne à son empreinte enregistrée. Une vérification en arrière-plan s’exécute aussi pour les organisations que personne ne consulte. Lorsqu’une ligne a été modifiée en dehors de l’application, celle-ci l’enregistre en attribuant la modification au mieux à partir des données de révision de Google, puis applique la règle de votre organisation : bloquer la modification jusqu’à ce qu’un Propriétaire ou un Administrateur l’adopte ou rétablisse la valeur, l’accepter et l’enregistrer dans le journal, ou la mettre en attente de validation. Les modifications de mouvements passés ou d’entrées d’historique sont toujours signalées.
Chiffrement et secrets
- En transit : tout le trafic passe par HTTPS. Les navigateurs reçoivent l’instruction d’utiliser uniquement HTTPS (HSTS avec préchargement), et nos pages appliquent une Content Security Policy stricte.
- Au repos : notre base de données est chiffrée au repos par son fournisseur. Votre feuille de calcul est stockée et chiffrée par Google.
- Jetons et clés : les jetons d’actualisation Google, les secrets TOTP et les clés d’historique de chaque organisation sont chiffrés en AES-256-GCM avec une nouvelle clé pour chaque enregistrement. Cette clé est elle-même protégée par une clé principale dans Google Cloud KMS à Londres, qui ne quitte jamais KMS et change chaque année. KMS s’exécute dans un projet cloud distinct doté de ses propres contrôles d’accès, et nos serveurs y accèdent sans aucun identifiant de longue durée stocké.
- Aucun accès de l’assistance à votre feuille. Il n’existe aucune fonctionnalité permettant à notre personnel de se connecter à votre place, ni aucun outil d’assistance qui ouvre votre feuille de calcul. L’accès à notre base de données de production exige deux personnes et est journalisé.
Infrastructure et sous-traitants
| Prestataire | Rôle | Région |
|---|---|---|
| Supabase | Base de données et authentification (données système uniquement) | Londres (eu-west-2) |
| Vercel | Hébergement de l’application et pare-feu ; réseau de diffusion de contenu | Fonctions à Londres (lhr1) ; CDN mondial |
| Google Cloud | Gestion des clés et ancrages d’historique (données système uniquement) | Londres (europe-west2) |
| Resend | E-mails transactionnels (invitations, alertes de sécurité et de facturation) | États-Unis |
| Stripe | Facturation et paiements | Sans région imposée |
| Cloudflare | DNS avec DNSSEC, et le CAPTCHA des formulaires de connexion | Réseau mondial |
Les API Sheets et Drive de Google traitent votre feuille de calcul en tant que votre propre prestataire. Les e-mails que nous envoyons ne contiennent jamais vos données de stock. Pour les prestataires établis aux États-Unis, les transferts sont couverts par le EU-US Data Privacy Framework et son extension britannique, ou par des clauses contractuelles types.
Notre accord de traitement des données (DPA) est conçu pour donner aux clients un préavis d’au moins 30 jours avant tout nouveau sous-traitant, ainsi qu’un droit d’opposition. La liste complète des sous-traitants et l’accord seront publiés au lancement.
Signaler une vulnérabilité
Si vous découvrez un problème de sécurité, écrivez à support@lightinventory.com en indiquant les étapes pour le reproduire. Merci de ne pas accéder aux données d’autres personnes ni de perturber le service, et de nous contacter avant tout test actif, car nos conditions n’autorisent pas les tests de sécurité sans permission. Nos coordonnées destinées aux chercheurs en sécurité sont également publiées dans un format lisible par machine dans security.txt. Une politique complète de divulgation responsable sera publiée avant le lancement.
État d’avancement
LightInventory prépare son lancement. Avant le lancement, le plan prévoit un test d’intrusion externe portant sur la connexion, l’isolation entre clients, l’autorisation Google, les webhooks et l’injection dans les feuilles de calcul, ainsi qu’une auto-évaluation complète au regard de l’OWASP Application Security Verification Standard 5.0. Cette page présentera ces évaluations indépendantes lorsqu’elles existeront. D’ici là, elle décrit une conception, pas une certification.
Consultez ce que LightInventory stocke pour la liste complète, et les tarifs pour le contenu de chaque formule.