Files
cesizen-individuel/Plan_Oral_Bloc3_CESIZen.md

63 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan d'oral — Soutenance CESIZen · Activité 3
**Apprenant :** Adam Marzuk · **Bloc :** INFCDAAL3 — Déployer et sécuriser les applications informatiques
**Format :** 20 min de présentation + ~10 min de questions/réponses
**Support :** `CESIZen_Soutenance_Bloc3.pptx` (14 slides) + **démo live des outils** (Gitea + Coolify)
**Dossier :** `Dossier_Bloc3_CESIZen.docx` · **Guide outils :** `MIGRATION_GITEA.md`
**En ligne :** https://cesizen.cleanows.fr · API https://api.cesizen.cleanows.fr
> Objectif du jury : évaluer le **plan de déploiement**, le **plan de maintenance** et le **plan de sécurisation**, ainsi que la **démonstration** des outils de versioning et de ticketing réellement configurés.
---
## Déroulé minuté (20 min)
| Temps | Slide(s) | Sujet | Messages clés à dire |
|---|---|---|---|
| **0:00 – 1:30** | 1 — 2 | **Introduction** | Se présenter. Rappeler CESIZen (plateforme de santé mentale, Ministère). Annoncer que l'Activité 3 porte sur le **déploiement** et la **sécurisation**, avec 3 livrables + une démo d'outils. Présenter le sommaire. |
| **1:30 – 3:00** | 3 | **Contexte & périmètre** | Situer après Act. 1 (conception) et Act. 2 (dev/test). Prototype = API Laravel + web Next.js + mobile Expo + PostgreSQL. Les 3 livrables : plan de déploiement, de maintenance, de sécurisation. |
| **3:00 – 4:30** | 4 | **Architecture technique** | Architecture **découplée** : 1 API REST, 2 clients. Une seule logique métier → testabilité, évolutivité. Conteneurisation Docker = environnements reproductibles. |
| **4:30 – 7:00** | 5 — 6 | **Plan de déploiement + CI/CD** | Les **3 environnements** (dev local / test = CI / prod = Coolify). Détailler le schéma. Puis **Gitea** (versioning souverain) + **Gitea Actions** (29 tests à chaque push) + **Coolify** (déploiement continu sur merge, HTTPS, migrations auto). Insister : « la prod est **réellement en ligne**. » |
| **7:00 – 9:30** | 7 — 8 | **Plan de maintenance** | Ticketing **Gitea Issues** : gabarits incident/évolution, labels, jalons, Kanban. Cycle de vie d'un ticket + **SLA du contrat** (bloquant/majeur/mineur). Maintenance évolutive (analyse : doc, délai, coût). **Veille** : sécurité (CVE/CERT-FR), dépendances (audit en CI), réglementation (CNIL). |
| **9:30 – 13:00** | 9 — 10 — 11 | **Plan de sécurisation** ⭐ | (Partie la plus notée — 8 pts.) Vulnérabilités **OWASP** avec mesures en place. **Matrice de criticité** (gravité × probabilité) → R1 fuite de données, R7 chiffrement au repos, R2 injection prioritaires. Actions **préventives / correctives** + chiffrement (TLS, bcrypt, AES, JWT). Assumer les axes d'amélioration (chiffrement colonne, headers de sécurité). |
| **13:00 – 14:30** | 12 — 13 | **RGPD & gestion de crise** | Données de santé = **sensibles (art. 9)**. Consentement, droits (export/anonymisation), soft delete, audit immuable, hébergement UE/HDS. **Escalade** N1→N4, notification **CNIL < 72 h**. |
| **14:30 – 18:30** | démo | **🎬 Démo des outils** | Sur Gitea : commits/branches/tags → ouvrir une **PR** → 3 jobs de CI **verts** → créer une **issue** (gabarit incident) + labels + Kanban → **merge** → montrer **Coolify** qui déploie → rafraîchir le site en ligne. 🛟 Si un outil plante : montrer les captures du dossier / `MIGRATION_GITEA.md`. |
| **18:30 – 20:00** | 14 | **Conclusion** | Synthèse : chaîne de déploiement complète et en prod, maintenance cadrée, sécurité par les risques + RGPD. Remercier, ouvrir les questions. |
**Repère de rythme :** checkpoint à **14:30** (début démo). Si retard : raccourcir la maintenance (garder SLA + veille) et garder 4 min de démo + 1 min de conclusion. ⚠️ **Prépare les onglets AVANT d'entrer** : Gitea (dépôt + une PR prête), Coolify (tableau de bord), le site en ligne.
---
## Préparation aux questions / réponses (~10 min)
### Déploiement
**Q. Pourquoi trois environnements alors qu'un seul est réellement déployé ?**
> Le sujet demande de décrire dev/test/prod et d'en déployer **un** réellement : c'est la production, en ligne sur Coolify. Le dev tourne en local (docker-compose), le test correspond au runner de CI (base SQLite en mémoire). Chacun a un rôle distinct dans le cycle de vie.
**Q. Qu'est-ce qui est automatisé exactement ?**
> Deux choses : l'**intégration continue** (Gitea Actions lance les 29 tests + le lint à chaque push) et le **déploiement continu** (un merge sur main déclenche, via webhook, le build des images et le redéploiement Coolify — migrations, seed et génération des secrets étant faits par l'entrypoint au démarrage).
**Q. Comment gérez-vous les secrets et le rollback ?**
> Les secrets de prod (APP_KEY, JWT_SECRET) ne sont **pas versionnés** : ils sont générés au premier démarrage par l'entrypoint. Le rollback consiste à redéployer le tag de la version précédente depuis Coolify.
### Maintenance
**Q. Pourquoi Gitea plutôt que GitHub ou Jira ?**
> Gitea réunit dépôt Git, ticketing et CI/CD dans un outil **souverain et auto-hébergé**, cohérent avec un projet ministériel (données maîtrisées, pas de dépendance SaaS hors UE), léger et gratuit.
**Q. Comment respectez-vous les délais de correction ?**
> La sévérité déclarée dans le gabarit d'issue déclenche le SLA correspondant (bloquant critique = prise en compte 1 h / correction 3 h, etc.). Le Kanban et les jalons donnent au Ministère une visibilité temps réel.
### Sécurisation
**Q. Quelles sont les vraies faiblesses de sécurité aujourd'hui ?**
> Honnêtement : pas encore de chiffrement applicatif au repos des notes de santé, pas d'en-têtes HSTS/CSP, et une politique de mot de passe limitée à 8 caractères. Ce sont mes actions correctives prioritaires — elles figurent dans le plan (R7 notamment).
**Q. Comment calculez-vous la criticité ?**
> Criticité = gravité × probabilité, sur une échelle de 1 à 25. Ça hiérarchise les actions : R7 (chiffrement au repos, 12) et R2 (injection, 9) passent avant R8 (erreur de déploiement, 2).
**Q. Que se passe-t-il en cas de fuite de données de santé ?**
> Escalade N3 : le chef de projet et le DPO sont mobilisés, notification à la **CNIL sous 72 h** (art. 33 RGPD), information des personnes concernées, isolation et préservation des preuves, puis retour d'expérience.
### Général
**Q. Qu'est-ce qui prouve que ce n'est pas que de la théorie ?**
> La production est **en ligne** (cesizen.cleanows.fr), les outils sont configurés (je les montre en démo), les 29 tests tournent en CI, et l'audit de sécurité est réellement alimenté dans l'application.