🔬 Prototype GSB Frais et DMZ
📋 Contexte
Dans la continuité des travaux d'hébergement interne déjà menés, le laboratoire GSB souhaitait renforcer son architecture réseau et moderniser son application de gestion des frais. L'objectif était double : mettre en place une DMZ sécurisée avec un accès Wi-Fi contrôlé et conforme à la CNIL, et développer un prototype moderne de l'application GSB-Frais accessible depuis ordinateur, tablette et smartphone.
Le projet a été conduit en approche AGILE avec des stand-up meetings hebdomadaires, un suivi via Kanboard et une communication via Discord et Google Drive.
🎯 Périmètre du projet
💻 Application web
- Choix du framework Django (Python)
- Mise en place GitHub, Kanboard, Discord
- Modèles Django + ORM (Visiteur, FicheFrais, FraisForfait…)
- Authentification sécurisée (PBKDF2-SHA256)
- Vues : connexion, saisie des frais, consultation historique
- Interface responsive (Bootstrap)
- Migration MySQL → SQLite, nettoyage des dépendances
- Déploiement via SSH sur le serveur de production
- Rédaction du guide technique pour futurs développeurs
👤 Ma contribution personnelle
J'ai assuré le pilotage de l'équipe SLAM (30 % de contribution sur le projet global) et pris en charge les développements les plus critiques :
- Pilotage SLAM et choix technologiques Proposition et argumentation du choix de Django comme framework, mise en place de l'environnement collaboratif (GitHub, Kanboard, Discord, Google Drive), organisation de l'équipe et coordination avec les SISR tout au long du projet.
-
Développement de l'application
Création du projet Django, configuration de
settings.py, développement des modèles ORM (Visiteur, FicheFrais, FraisForfait, LigneFrais…), développement des 3 vues principales :connexion(),gerer_frais()etetat_frais(), et résolution du problème de connexion MySQL (mysqlclientmanquant). -
Sécurisation complète de l'authentification
Audit et refonte du système d'auth : abandon de la comparaison en clair au profit de
check_password(PBKDF2-SHA256), correction du champmdplimité à 20 caractères (insuffisant pour le hash ~88 caractères), développement du scriptmigration_passwords.pypour hacher automatiquement tous les mots de passe existants en base. À l'issue : 100 % des comptes conformes OWASP. -
Nettoyage de la stack et déploiement
Suppression des dépendances MySQL obsolètes, migration vers SQLite, configuration de
ALLOWED_HOSTS, déploiement sur le serveur SISR via SSH (installation Python 3, pip, transfert du code,requirements.txt), et accompagnement technique pour la configuration Apache. - Rédaction du guide technique Rédaction d'un guide complet à destination des futurs développeurs : contexte, choix techniques, architecture MVT, ORM, sécurité implémentée, procédure de déploiement (dev et production avec Gunicorn/Nginx).
🏗️ Architecture de l'application (MVT)
L'application respecte le pattern Modèle-Vue-Template de Django :
connexion() pour l'auth sécurisée, gerer_frais() pour la saisie du mois courant, etat_frais() pour la consultation de l'historique.
L'application est entièrement accessible depuis swiss-galaxyc.com et fonctionne sur ordinateur, tablette et smartphone.
🔒 Sécurité applicative
L'ancien système comparait les mots de passe directement en base, en violation de l'OWASP Top 10 et du RGPD.
Le champ
mdp était limité à 20 caractères, tronquant le hash (~88 caractères) et rendant l'authentification impossible après sécurisation.
Autres protections en place : protection CSRF sur tous les formulaires ({% csrf_token %}), contrôle de session via est_connecte(), protection contre les injections SQL via l'ORM Django.
⚖️ Partie juridique — CEJM
Le projet incluait une analyse juridique approfondie des implications liées à l'hébergement interne des intranets par le laboratoire GSB :
💻 Code Source du Projet
assadakh/gsb_frais Public
Application Django développée — Application de gestion des frais GSB avec authentification sécurisée (PBKDF2), interface responsive et déploiement en DMZ.
📊 Bilan
Le prototype est entièrement fonctionnel et accessible depuis swiss-galaxyc.com sur l'intranet sio.lan. Il répond à tous les objectifs du cahier des charges : authentification sécurisée, saisie et consultation des fiches de frais, interface responsive, déploiement dans une DMZ sécurisée.
Ce projet m'a permis de monter en compétence sur la sécurité applicative (PBKDF2, OWASP, RGPD), la gestion de projet AGILE en condition réelle, et le déploiement d'une application Django en production dans une infrastructure réseau sécurisée. Ma contribution s'est élevée à 30 % du travail total de l'équipe.
🎓 Compétences mobilisées
Compétences issues du référentiel BTS SIO mobilisées dans ce projet :
- Exploitation des référentiels, normes et standards adoptés par le prestataire informatique
- Mise en place et vérification des niveaux d'habilitation associés à un service
- Vérification du respect des règles d'utilisation des ressources numériques
- Traitement des demandes concernant les applications
- Analyse des objectifs et des modalités d'organisation d'un projet
- Planification des activités
- Évaluation des indicateurs de suivi d'un projet et analyse des écarts
- Test d'intégration et d'acceptation d'un service
- Déploiement d'un service
- Accompagnement des utilisateurs dans la mise en place d'un service