Cette page est un résumé vivant des contrôles de sécurité en place sur l'ensemble des SaaS FerrLabs. Elle complète le DPA (engagements juridiques) et la page sous-traitants (prestataires tiers).
Identité et authentification
- Mots de passe hashés avec argon2id (paramètres OWASP : mémoire ≥ 64 MiB, temps ≥ 3 itérations, parallélisme = 4).
- JWT de session signés HMAC, à durée courte, transportés en cookies HTTP-only SameSite=Lax dans les navigateurs et en tokens Bearer dans le CLI FerrFlow.
- Authentification à deux facteurs (TOTP) [À COMPLÉTER — disponible / planifiée].
- Modèle clients OAuth : chaque app (FerrVault, FerrTrack, FerrGrowth, FerrFleet admin, …) s'authentifie auprès de l'IdP central
auth.ferrlabs.comavec son propreclient_idet ses redirect URIs enregistrées. - Rate-limit des connexions échouées : 5 → 60 s, 10 → 5 min, 20 → 1 h.
Protection des données
- En transit : TLS 1.3 uniquement, suites de chiffrement modernes, HSTS activé avec preload.
- Au repos : chiffrement au niveau stockage sur tous les volumes persistants.
- Secrets FerrVault : en plus chiffrés avec des clés AES-256-GCM par-vault dérivées d'une master key serveur détenue hors de la base applicative ([À COMPLÉTER — KMS / Vault]).
- Adresses IP persistées en base : hashées HMAC-SHA256 avec un sel serveur, jamais en clair.
- Sauvegardes : snapshots Postgres quotidiens, conservation 30 jours, chiffrés, exercices de restauration [À COMPLÉTER — trimestriels].
Réseau et infrastructure
- La production tourne sur un cluster Kubernetes opéré par FerrLabs en UE (cf. mentions légales).
- Ingress public via Traefik avec routage strict par host ; aucun service n'est exposé par défaut.
- Pods en non-root, root filesystem en lecture seule, capabilities droppées.
- Images de conteneur pulled depuis
ghcr.io/ferrlabs/*et signées pour vérification d'intégrité [À COMPLÉTER — sigstore / cosign]. - Les secrets dans le cluster sont gérés par FerrVault (operator pulled depuis FerrVault vers les Secrets Kubernetes natifs) — on mange notre propre dogfood.
Sécurité applicative
- Content-Security-Policy stricte sur toutes les surfaces web :
default-src 'self', aucun script tiers, aucune iframe inline. - Headers de sécurité défense en profondeur : HSTS, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin.
- Tokens anti-CSRF sur toutes les requêtes modifiantes des apps.
- Isolation multi-tenant appliquée au niveau API (chaque requête scoped par tenant ID ; tests d'intégration vérifient que les accès cross-tenant sont refusés).
- Monitoring des dépendances : Dependabot sur chaque repo, Cargo audit et pnpm audit en CI.
Logging et monitoring
- Logs applicatifs centralisés dans [À COMPLÉTER — Loki / OpenObserve / …], conservation 30 jours, accès restreint.
- Actions administratives auditées (qui a fait quoi, quand) — visibles aux Responsables dans les audit logs des produits (FerrVault audit, FerrTrack activity, …).
- Statut en direct : status.ferrlabs.com.
Divulgation coordonnée de vulnérabilités
Si vous pensez avoir découvert une vulnérabilité dans un service FerrLabs, contactez security@ferrlabs.com. Clé PGP : [À COMPLÉTER — empreinte ou lien vers security.txt].
Nous nous engageons à :
- Accuser réception sous 48 heures ;
- Évaluer et trier le signalement sous 7 jours ;
- Fournir un point d'avancement au moins tous les 14 jours jusqu'à résolution ;
- Créditer le rapporteur dans la divulgation publique (avec son accord).
Merci de ne pas divulguer publiquement avant que nous ayons eu une opportunité raisonnable de corriger (90 jours par défaut ; plus court pour les vulnérabilités critiques activement exploitées).
Notification de violation de données
En cas de violation de données personnelles, FerrLabs notifie la CNIL sous 72 heures (article 33 RGPD) et les Responsables affectés sans retard injustifié, avec les informations requises par l'article 34 RGPD.
Roadmap conformité
- SOC 2 Type II : [À COMPLÉTER — planifié pour …]
- ISO/IEC 27001 : [À COMPLÉTER]
- HDS (hébergement de données de santé) : hors périmètre.
English version: Security.