Programmation Réseaux


Module 1 : Fondations DevOps – Versioning et collaboration avec Git & GitHub

Partie théorique

  • Pourquoi versionner : traçabilité, retour arrière, travail d’équipe. VCS centralisé vs distribué.
  • Modèle interne de Git : commits, arbre, blobs, graphe (DAG), références et HEAD. Les trois zones : working directory, index (staging), dépôt.
  • Local vs distant : remote, origin/upstream, clone, fetch vs pull, push, fork.
  • Branches et stratégies de branching : GitHub Flow, GitFlow, trunk-based.
  • Intégration des changements : merge (fast-forward, 3-way) vs rebase, origine des conflits.
  • Qualité de l’historique : commits atomiques, Conventional Commits, tags et versionnement sémantique.
  • Collaboration sur GitHub : issues, labels, milestones, Pull Requests, revue de code, CODEOWNERS.
  • Gouvernance et sécurité : protection de branches (rulesets), status checks obligatoires, commits signés, gestion des secrets (.gitignore, secret scanning).

Travaux pratiques

Module 2 : Fondamentaux des API REST et de l’embarqué

Partie théorique

  • De la CLI manuelle à l’API : limites de la configuration à la main, plan de gestion des équipements.
  • Principes REST : ressources, verbes HTTP ↔ CRUD, codes de statut, stateless, idempotence.
  • Formats et protocoles : JSON, JSON-RPC (ubus, eAPI) vs REST.
  • Authentification (Basic, token, clé API), TLS et validation des certificats.
  • Bonnes pratiques client : sessions, timeouts, gestion d’erreurs. Secrets hors du dépôt (.env, lien avec le Module 1).

Travaux pratiques

Module 3 : Standards industriels (YANG) et approche Cloud/SDN

Partie théorique

  • Programmabilité réseau : plans de gestion, de contrôle et de données. Limites de SNMP et de la CLI.
  • Modélisation des données avec YANG : modules, containers, lists, leafs. Modèles natifs vs OpenConfig.
  • NETCONF : datastores (running, candidate), opérations (get-config, edit-config, commit), transport SSH, encodage XML.
  • RESTCONF : correspondance avec YANG, encodage JSON, différences avec NETCONF.
  • Télémétrie : pull vs push (streaming). Notion de SDN : contrôleur, interfaces northbound/southbound.

Travaux pratiques

Module 4 : Approche NetDevOps et Orchestration globale

Partie théorique

  • Infrastructure as Code appliquée au réseau : approche déclarative vs impérative.
  • État désiré, idempotence et dérive de configuration (config drift).
  • Source de vérité et inventaire ; templating (YAML, Jinja2).
  • Automatiser sans API moderne : SSH/CLI, parsing, limites du screen scraping.
  • Orchestration multi-constructeurs : exécution parallèle, modèle de tâches et d’inventaire (Nornir).

Travaux pratiques

Module 5 : NetSecDevOps et Sécurité Automatisée

Partie théorique

  • DevSecOps appliqué au réseau : shift-left, étapes d’un pipeline CI/CD (lint, validation, tests, déploiement).
  • Firewall-as-Code : tests de non-régression sur les flux, revue et déploiement contrôlés (lien avec les PR et les status checks du Module 1).
  • Zero Trust : principes, ZTNA vs VPN classique, réseau overlay WireGuard, moindre privilège.
  • SOAR : cycle détection → décision → réponse, playbooks, webhooks, risque de faux positifs.
  • Micro-segmentation Kubernetes : NetworkPolicy, default deny, sélecteurs de labels, rôle du CNI.
  • Compliance-as-Code : benchmarks de sécurité (CIS), audit continu, rapports automatisés.

Travaux pratiques

  • TP 15 : CI/CD & Firewall-as-Code (FaC) avec FortiGate Intégration de la configuration d’un pare-feu dans un pipeline DevOps (GitLab CI, GitHub Actions ou Jenkins). Automatisation de la validation syntaxique, exécution de tests de non-régression sur les ouvertures de flux réseau, et déploiement continu des règles via l’API REST FortiOS.
  • TP 16 : Déploiement Zero Trust Network Access (ZTNA) avec NetBird Automatisation d’une architecture réseau overlay sécurisée (basée sur WireGuard). Utilisation des API REST (par exemple, avec NetBird) pour provisionner dynamiquement des pairs, gérer les clés de routage, et appliquer des politiques de contrôle d’accès strictes entre les serveurs.
  • TP 17 : Réponse Automatisée aux Incidents (Auto-Remédiation) Création d’un script Python agissant comme un outil SOAR (Security Orchestration, Automation, and Response). Écoute d’alertes de sécurité réseau (via un webhook depuis un IDS/IPS) et interaction avec l’API REST d’OPNsense pour blacklister ou isoler dynamiquement une adresse IP compromise.
  • TP 18 : Micro-segmentation et Sécurité des Réseaux Kubernetes Automatisation de la sécurité réseau pour les environnements cloud-native. Déploiement programmatique de Network Policies Kubernetes en Python pour restreindre les flux de trafic entrants et sortants, isolant ainsi efficacement les communications inter-microservices.
  • TP 19 : Compliance-as-Code (Audit Réseau Continu) Développement d’un scanner d’audit en Python qui interroge régulièrement l’API d’un équipement (MikroTik, Cisco) pour vérifier que la configuration respecte les normes de sécurité de l’entreprise : détection des services d’administration exposés sur internet, vérification de la robustesse des tunnels IPsec, et génération d’un rapport automatisé.