déployer Modèle de sécurité

Modèle de sécurité

Ce que socAdmin protège, comment, et ce qui reste de votre responsabilité.

Identifiants de base de données

  • Stockés chiffrés au repos avec AES-256-GCM, par utilisateur.
  • La clé de chiffrement est générée au premier démarrage et conservée dans socadmin.db.
  • Jamais écrits dans les logs.

Comptes et sessions

  • Mots de passe hashés avec bcrypt, politique de 10+ caractères avec majuscules, minuscules, un chiffre et un caractère spécial.
  • 5 échecs de connexion pour le même email et la même IP bloquent la connexion pendant 15 minutes.
  • Tokens d’accès de courte durée (15 minutes) et tokens de rafraîchissement (7 jours), renouvelés à chaque utilisation, stockés dans des cookies HttpOnly.
  • Les changements et réinitialisations de mot de passe révoquent les tokens de rafraîchissement de l’utilisateur.
  • Chaque installation obtient un chemin API aléatoire et non devinable.

Requêtes

  • Protection CSRF sur chaque requête qui modifie un état.
  • En-têtes de sécurité sur chaque réponse : Content-Security-Policy, X-Frame-Options: DENY, et HSTS lorsque le serveur est en HTTPS.
  • Une limite générale de 200 requêtes API par minute et par IP.
  • Une whitelist IP optionnelle, gérée par les administrateurs.
  • Les en-têtes de proxy (X-Forwarded-For, X-Real-IP) sont ignorés sauf si la requête provient d’un TRUSTED_PROXY, empêchant les clients d’usurper leur IP.

Accès réseau depuis socAdmin

socAdmin se connecte à l’hôte saisi par l’utilisateur, ce qui pourrait être exploité pour atteindre des services internes. Pour limiter cela :

  • Les adresses de métadonnées cloud (169.254.0.0/16) et les adresses link-local sont toujours bloquées.
  • Sous Docker, les plages loopback et privées (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) sont bloquées sauf si ALLOW_PRIVATE_NETWORKS=true.
  • Les noms d’hôtes tels que les noms de services Compose sont autorisés.

Logs d’audit

socAdmin écrit une ligne par événement pertinent pour la sécurité sur la sortie standard : connexions et échecs, connexions aux bases de données, requêtes (durée, nombre de lignes, succès), imports, exports, modifications d’administration et de sécurité.

Les logs ne contiennent jamais de mots de passe, tokens, emails, texte de requête ou données de lignes.

2026-10-18T09:12:44Z [AUTH] action=login user_id=1 ip=203.0.113.7
2026-10-18T09:12:51Z [CONNECT] user_id=1 ip=203.0.113.7 type=mysql target=mysql:3306 status=ok

Conteneur

  • S’exécute en tant qu’utilisateur non-root socadmin.
  • Fonctionne avec un système de fichiers racine en lecture seule (read_only: true plus un tmpfs sur /tmp).
  • L’état persistant se trouve uniquement dans /data.

Votre responsabilité

  • Servez socAdmin en HTTPS et ne l’exposez pas directement sur internet.
  • Donnez aux utilisateurs de base de données socAdmin uniquement les privilèges dont ils ont besoin.
  • Maintenez l’image à jour.
  • Protégez et sauvegardez /data.

Consultez la page Mise en production pour la configuration.