Mon CV
← Retour aux projets
⚙️ Atelier Professionnel · BTS SIO SLAM

🔬 Prototype GSB Frais et DMZ

🏢 Client : Galaxy Swiss Bourdin (GSB) 👑 Rôle : Chef de projet SLAM 🤝 Projet SLAM + SISR · Approche AGILE 🛠️ Django · Python · SQLite · Cisco · pfSense

📋 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

🖥️ Mission SISR — Infrastructure réseau

  • Schéma réseau : DMZ, LAN, Wi-Fi visiteurs, pare-feu
  • Configuration routeur Cisco21 : VLANs, routing inter-VLAN
  • Configuration switch HP21 : ports access/trunk, isolation
  • Préparation du serveur : Python 3, pip, déploiement Django
  • Wi-Fi sécurisé : SSID, WPA2/WPA3, séparation réseau
  • Pare-feu pfSense : règles de filtrage LAN ↔ DMZ ↔ Internet
  • Portail captif et journalisation (conformité CNIL)
  • Hébergement de l'application dans la DMZ

💻 Mission SLAM — 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 sur serveur SISR via SSH
  • 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() et etat_frais(), et résolution du problème de connexion MySQL (mysqlclient manquant).
  • 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 champ mdp limité à 20 caractères (insuffisant pour le hash ~88 caractères), développement du script migration_passwords.py pour 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 :

Models — models.py Reproduction exacte de la structure de la BDD GSB : Visiteur, FicheFrais, FraisForfait, LigneFraisForfait, LigneFraisHorsForfait, État.
Views — views.py 3 contrôleurs principaux : connexion() pour l'auth sécurisée, gerer_frais() pour la saisie du mois courant, etat_frais() pour la consultation de l'historique.
Templates Interface responsive avec Bootstrap : page de connexion, saisie des frais forfaitaires et hors forfait, consultation des fiches par mois.

L'application est entièrement accessible depuis swiss-galaxyc.com et fonctionne sur ordinateur, tablette et smartphone.

🔒 Sécurité applicative

Faille critique 1 — Mots de passe stockés en clair L'ancien système comparait les mots de passe directement en base, en violation de l'OWASP Top 10 et du RGPD.
✅ Résolu : implémentation de check_password (PBKDF2-SHA256) + script migration_passwords.py pour tous les comptes existants
Faille critique 2 — Taille du champ mot de passe insuffisante Le champ mdp était limité à 20 caractères, tronquant le hash (~88 caractères) et rendant l'authentification impossible après sécurisation.
✅ Résolu : champ porté à 128 caractères + migration Django (makemigrations / migrate)

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 :

Décision stratégique Héberger en interne est une décision stratégique engageant la gouvernance de l'entreprise, pas une simple décision opérationnelle.
Responsabilité RGPD L'entreprise devient responsable de traitement (art. 4 RGPD) : registre des traitements, AIPD, notification CNIL sous 72h en cas de violation.
Sanctions encourues Responsabilité pénale (jusqu'à 5 ans / 300 000 €), sanctions CNIL (jusqu'à 4 % du CA mondial), responsabilité civile.
SLA interne Document formalisant les engagements de qualité de service : valeur probatoire pour l'accountability RGPD et la sécurisation de la responsabilité employeur.
Outils collaboratifs Leur usage doit être encadré par une charte informatique, respecter le RGPD et faire l'objet de contrats de sous-traitance si externalisés (art. 28 RGPD).

🛠️ Environnement technique

Django (Python) SQLite ORM Django Bootstrap GitHub Kanboard SSH Gunicorn / Nginx Cisco (VLANs) pfSense PBKDF2 / SHA256 OWASP RGPD DMZ

💻 Code Source du Projet

assadakh/gsb_frais Public

Prototype Django développé en AP6 — Application de gestion des frais GSB avec authentification sécurisée (PBKDF2), interface responsive et déploiement en DMZ.

Python
HTML
Voir le code sur GitHub

📊 Bilan

✅ Projet terminé — Application opérationnelle

Le prototype est entièrement fonctionnel et accessible depuis swiss-galaxyc.com. 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

Chef de projet SLAM Django / Python ORM Django Architecture MVT Sécurité applicative PBKDF2 / Hachage Audit OWASP Migration de données Déploiement SSH GitHub / Versioning Gestion AGILE Coordination SLAM/SISR RGPD / CEJM Documentation technique