Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

AutoDeploy-DevSecOps-Platforme

🛡️ Plateforme DevSecOps qui déploie automatiquement des dépôts GitHub sur une VM via SSH, analyse la sécurité avec Bandit, Semgrep, Trivy, ZAP et Nuclei, calcule un score de sécurité, et propose un chatbot IA local (Ollama) pour interpréter les vulnérabilités et propose des solutions.

📸 Screenshots

Écran de connexion (Login)

Cette image illustre l'interface d'authentification sécurisée conçue pour restreindre l'accès à la plateforme.

image

Tableau de bord général (Dashboard)

Cette capture d'écran présente la vue d'ensemble du dashboard avec la liste des déploiements et le design général de l'interface.

image image

Page de détails d'un déploiement

Cette image illustre la console de logs en temps réel et les onglets interactifs permettant de consulter directement les rapports de vulnérabilités.

image

Widget du Chatbot IA en cours d'utilisation

Cette capture d'écran montre une discussion avec le chatbot DevSecOps fournissant un guide de remédiation interactif.

image

Résultat d'un déploiement (36/100)

Cette capture d'écran montre le dashboard avec un score en rouge affichant le score de 36/100 et le statut "terminé".

image

La figures ci-dessous présentent le résultat détaillé D'un scanner principal exécutés sur cette application. Le rapport OWASP ZAP, illustré en Figure Rapport OWASP ZAP : alertes détectées sur l'application test-autodeploy, a détecté plusieurs alertes de sécurité sur l'application AutoDeploy en cours d'exécution, réparties en alertes de niveau moyen et faible, notamment des en-têtes HTTP de sécurité manquants.

image

Processus de compilation et d'isolement Docker

Dès que les fichiers sont décompressés sur la machine virtuelle cible, le script analyse la structure du projet pour détecter un fichier Docker Compose.

Si un tel fichier est présent, le serveur lance la compilation et le démarrage en arrière-plan (docker compose up -d --build). J'ai programmé une boucle de surveillance qui interroge régulièrement l'état de santé du conteneur en utilisant les API Docker. Le script s'assure que le conteneur ne s'arrête pas prématurément (statut exited ou dead) et qu'il passe bien à l'état actif (running ou healthy), garantissant que l'application est prête à fonctionner.

image

Détection de port et validation de l'accessibilité HTTP

Les applications déployées par les développeurs peuvent écouter sur différents ports réseau. Pour automatiser le test dynamique de sécurité (DAST) en staging ou simplement valider le fonctionnement en production, mon script doit connaître précisément le port de l'application :

L'orchestrateur analyse le fichier de configuration Docker Compose pour lire les redirections de ports définies par le développeur. En cas de conflit (si deux projets utilisent le même port), mon script réécrit dynamiquement le fichier sur la VM de staging pour attribuer un port libre trouvé dans une plage définie de (9000 à 9999). Enfin, le script envoie des requêtes curl sur ces ports jusqu'à ce que l'application réponde avec un code de succès (code HTTP 200), confirmant sa disponibilité réseau.

image

✨ Fonctionnalités

  • Déploiement automatique via webhook GitHub ou manuellement depuis le dashboard
  • Environnements multiples : staging et production sur des VMs séparées
  • Pipeline de sécurité intégré (SAST + DAST) après chaque déploiement :
    • 🔍 Bandit — Analyse statique Python
    • 🔍 Semgrep — SAST multi-langage
    • 🔍 pip-audit / npm audit — Vulnérabilités des dépendances
    • 🐳 Trivy — Scan des images Docker
    • 🌐 OWASP ZAP — Scan DAST de l'application déployée
    • Nuclei — Tests DAST avec templates communautaires
  • Score de sécurité calculé automatiquement (0–100) après chaque scan
  • Dashboard interactif — liste des déploiements, logs en temps réel, scores, rapports
  • Chatbot IA local (Ollama) — analyse les vulnérabilités, explique les CVEs, génère des recommandations de correction
  • Rapports PDF/HTML exportables
  • Authentification par session avec bcrypt
  • Double base de données : PostgreSQL (principal) + SQLite (legacy/fallback)

🏗️ Architecture

┌─────────────────────────────────────────────────────┐
│                   Votre machine locale               │
│                                                     │
│  ┌─────────────────┐     ┌────────────────────────┐ │
│  │  Flask App      │────▶│  PostgreSQL             │ │
│  │  (app.py)       │     │  (déploiements, scores, │ │
│  │                 │     │   historique chat)      │ │
│  │  Dashboard HTML │     └────────────────────────┘ │
│  │  Chatbot IA     │                                │
│  └────────┬────────┘     ┌────────────────────────┐ │
│           │   SSH/SFTP   │  Ollama (LLM local)     │ │
│           │              │  llama3 / autre modèle  │ │
│           │              └────────────────────────┘ │
└───────────┼─────────────────────────────────────────┘
            │
            ▼ SSH
┌─────────────────────────────────────────────────────┐
│                 VM de staging/production             │
│                                                     │
│  Git clone ──▶ Docker build ──▶ Docker run          │
│                                                     │
│  Scans sécurité : Bandit, Semgrep, Trivy,           │
│                   ZAP, Nuclei, pip-audit             │
│                                                     │
│  Rapports JSON/HTML stockés dans VM_LOGS_PATH       │
└─────────────────────────────────────────────────────┘

🔧 Technologies utilisées

Catégorie Technologies
Backend Python 3.10+, Flask
Base de données PostgreSQL, SQLite
Déploiement SSH (Paramiko), Docker, Docker Compose
Sécurité SAST Bandit, Semgrep, pip-audit, npm audit
Sécurité DAST OWASP ZAP, Nuclei, Trivy
IA locale Ollama (llama3 )
Génération PDF ReportLab
Frontend HTML/CSS/JS vanilla (template Jinja2)

📄 License

See the LICENSE file for the license and usage conditions.

About

🛡️ Plateforme DevSecOps qui déploie automatiquement des dépôts GitHub sur une VM via SSH, analyse la sécurité avec Bandit, Semgrep, Trivy, ZAP et Nuclei, calcule un score de sécurité, et propose un chatbot IA local (Ollama) pour interpréter les vulnérabilités et propose des solutions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors