Aller au contenu principal
Version: 1.0.0

Cert-IX MVP1 — Matrice de Conformité de Base (38 Services)

Date : 2026-02-22
Périmètre : Niveau minimum de conformité pour le lancement sur les flux critiques
Remédiation estimée : 2–4 jours (validé ci-dessous)


Table des Matières

  1. Matrice de Conformité des Services (38 services)
  2. Flux Critiques & Dépendances
  3. Synthèse des Écarts P0/P1/P2
  4. Plan de Remédiation par Flux
  5. Stratégie de Tests E2E par Flux
  6. Gel des Contrats d'Événements Kafka
  7. Critères Go/No-Go
  8. Calendrier

1. Matrice de Conformité des Services

Légende

SymboleSignification
Implémenté et vérifié
⚠️Partiellement implémenté / nécessite un renforcement
Manquant / non implémenté
N/ANon applicable pour ce type de service

Dimensions de Conformité

#DimensionCode
AAuthentification/Autorisation & Contrôle d'AccèsAUTHN
BJournalisation d'Audit (qui/quoi/quand + traceId)AUDIT
CGestion des Secrets (aucun secret codé en dur)SECRETS
DChiffrement en Transit (TLS) + au ReposCHIFFR
EValidation des Entrées/Assainissement + Limitation de DébitENTREE
FSupervision/Alertes (santé, logs, APM)SUPERV

1.1 Services d'Administration

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
1admin-backendP1✅ JWT+Passport, RBAC via rbac.service, liste noire de tokens (Redis)✅ Middleware authAuditLogger, session.service.createAuditLog, persisté en BDD⚠️ Variables d'env via validation Joi ; DB_SSL par défaut false⚠️ En-têtes Helmet ; DB_SSL=false par défaut ; cookie de session secure uniquement en prod✅ Middleware Joi validate sur toutes les routes⚠️ Logger Winston ; aucun agent APM détectéAucunPG (cert_ix_admin), Redis, BDD auth, BDD assets, BDD messages
2admin-uiP1✅ Auth JWT via API admin-backendN/A (frontend)✅ Aucun secret dans le code client✅ HTTPS via Nginx/Kong✅ DOMPurify, validation côté client⚠️ Elastic APM RUMConsommateur de l'API admin-backendadmin-backend

1.2 Services d'Authentification & d'Identité

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
3qr-auth-serviceP0✅ JWT+session, CSRF (Redis), WebAuthn, MFA, empreinte appareil, liste noire tokens, détection bots, réputation IP✅ Classe AuditLogger avec hachages inviolables (chaîne SHA-384), double écriture BDD+Kafka, tags conformité (SOC2/RGPD/PCI)⚠️ Variables d'env ; CSRF_ENCRYPTION_KEY retombe sur crypto.randomBytes (éphémère)⚠️ Kafka SSL configurable mais ssl: process.env.KAFKA_SSL === 'true' ; Redis TLS conditionnel✅ Validation Joi, intégration CAPTCHA, validation email, patterns injection SQL, limitation de débit (BDD, 10 req/15min auth)⚠️ Logs structurés ; pas d'APMProducteur : 50+ topics (événements auth, CSRF, sessions, sécurité)PG (cert_ix_auth), Redis, Kafka, captcha-service
4qr-auth-uiP1✅ Interface connexion/inscription/2FA/WebAuthnN/A (frontend)✅ Aucun secret côté client✅ HTTPS✅ Validation côté client, DOMPurify⚠️ Elastic APM RUMN/Aqr-auth-service
5otp-serviceP0✅ Auth JWT, support TOTP✅ Événements d'audit Kafka⚠️ Variables d'env via config✅ Kafka TLS, Redis TLS configurable✅ Limitation de débit (Redis)⚠️ Logger uniquementProducteur : événements OTPPG, Redis, Kafka
6captcha-serviceP1✅ Auth par clé API pour service-à-service✅ Événements d'audit Kafka⚠️ Variables d'env✅ Kafka TLS, serveur TLS✅ Validation de défi, limitation de débit⚠️ Logger uniquementProducteur : événements CAPTCHARedis, Kafka

1.3 Services Frontend Client

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
7client-dashboardP0✅ AuthContext avec JWT, gestion de session, CapabilityGate (par niveau), navigation basée sur les permissionsN/A (frontend)✅ Aucun secret ; stockage de token chiffré (CryptoJS)✅ HTTPS, en-têtes de sécurité dans layout.js✅ DOMPurify sur toutes les entrées, Joi côté client✅ Elastic APM RUMN/Aqr-auth-service, toutes les API backend via Kong
8client-verifier-uiP1✅ Vérification d'email par tokenN/A (frontend)✅ Aucun secret✅ HTTPS✅ Validation des entrées⚠️ Elastic APM RUMN/Aqr-auth-service
9payment-uiP1✅ Auth par session depuis le flux de paiementN/A (frontend)✅ Aucun secret ; Stripe.js gère PCI✅ HTTPS, Stripe Elements (PCI DSS)✅ Validation Zod⚠️ Elastic APM RUMN/Acheckout-orchestration, Stripe

1.4 Services de Gestion des Actifs

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
10asset-management-serviceP0⚠️ Validation de permissions via Kafka (avec fallback auth) ; pas de middleware JWT direct⚠️ Service d'événements de sécurité ; audit via événements Kafka sur CRUD⚠️ Variables d'env ; service de chiffrement utilise une clé env⚠️ Kafka TLS configurable ; encryption.service.js pour données au repos⚠️ Limitation de débit dans la config ; validation dans les routes⚠️ Logger uniquementProducteur : événements CRUD actifs, sync quotas ; Consommateur : réponses permissionsPG (cert_ix_assets), Redis, Kafka
11asset-verification-serviceP1✅ Middleware auth JWT (Go)⚠️ Journalisation BDD des tentatives de vérification⚠️ Variables d'env ; clé HMAC dans env✅ Serveur TLS (Go), endpoints HTTPS✅ Validation des entrées sur les requêtes de vérification⚠️ Logs structurés GoProducteur : événements de vérificationPG (cert_ix_asset_verification), Redis
12assets-sync-serviceP1⚠️ Auth Kafka SCRAM pour le broker ; pas d'auth HTTP (interne)❌ Aucune journalisation d'audit trouvée⚠️ Variables d'env ; identifiants Kafka SCRAM✅ Kafka TLS via config SCRAM⚠️ Validateur de confiance pour l'intégrité des données❌ Aucune supervisionConsommateur : événements actifs ; Producteur : événements de syncPG, Kafka

1.5 Services de Vulnérabilités & Scan

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
13vulnerability-management-service (Go)P0✅ Middleware auth JWT avec isolation par tenant⚠️ Audit dans la couche service ; pas de table d'audit dédiée⚠️ Variables d'env ; validation de config✅ Serveur TLS, BDD TLS, Kafka TLS✅ Validation des requêtes, middleware de sécurité (CORS, en-têtes)⚠️ Logs structurés GoProducteur : événements vulnérabilités ; Consommateur : événements scan, réponses capacitésPG (cert_ix_vulnerabilities), Redis, Kafka, ES
14vulnerability-classifier-service (Go)P1✅ Middleware auth JWT⚠️ Suivi des scans via Redis⚠️ Variables d'env✅ TLS configurable⚠️ Validation basique⚠️ Logs GoConsommateur : résultats de scan ; Producteur : vulnérabilités classifiéesPG (cert_ix_vuln_classifier), Redis, Kafka
15vulnerability-policy-service (Go)P1✅ Middleware auth JWT⚠️ Audit au niveau config⚠️ Variables d'env✅ TLS configurable⚠️ Validation de modèle⚠️ Logs GoConsommateur : événements vulnérabilités ; Producteur : décisions de politiquePG (cert_ix_vuln_policy), Redis, Kafka
16vulnerability-remediation-service (Go)P1✅ Middleware auth JWT⚠️ Audit au niveau config⚠️ Variables d'env✅ TLS configurable✅ Validation de modèle, validation middleware auth⚠️ Logs GoConsommateur : événements vulnérabilités ; Producteur : tâches de remédiationPG (cert_ix_vuln_remediation), Redis, Kafka
17go-tools (9 moteurs de scan)P0✅ Middleware auth JWT (pkg/middleware/auth.go)pkg/scanner/audit.go — piste d'audit des scans avec rétention⚠️ Variables d'env via config✅ Serveur TLS, ES TLS✅ Limitation de débit (Redis), validation des entrées⚠️ Logs GoProducteur : résultats de scan ; Consommateur : requêtes de scanPG (cert_ix_tools_service), Redis, Kafka, ES
18scan-api-service (Go)P0✅ Auth JWT + auth par clé API (api_key_service)✅ Dépôt de journaux d'appels pour audit API⚠️ Variables d'env✅ TLS, Kafka TLS✅ Validation, limitation de débit⚠️ Logs GoProducteur : dispatch de scans vers les moteursPG, Redis, Kafka
19scan-worker-service (Go)P1❌ Service interne, pas d'auth HTTP (consommateur Kafka uniquement)❌ Aucune journalisation d'audit⚠️ Variables d'env⚠️ Kafka TLS configurable❌ Pas de validation d'entrée HTTP (Kafka uniquement)❌ Aucune supervisionConsommateur : tâches de scan ; Producteur : résultats de scanKafka

1.6 Services de Conformité & Audit

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
20compliance-guard-serviceP1❌ Aucun middleware d'auth trouvé❌ Aucune journalisation d'audit❌ Aucune gestion des secrets❌ Aucune config TLS❌ Aucune validation❌ Aucune supervisionN/Aasset-verification-service
21compliance-management-service (Go)P1⚠️ Références auth dans la couche service✅ Journal d'activité dans le service, producteur Kafka⚠️ Variables d'env✅ TLS configurable✅ Validation au niveau dépôt⚠️ Logs GoProducteur : événements de conformitéPG, Redis, Kafka
22compliance-management-service (Node, inutilisé)P2❌ Non utilisé❌ Non utilisé❌ Non utilisé❌ Non utilisé❌ Non utilisé❌ Non utiliséN/AN/A
23audit-evidence-serviceP1⚠️ Middleware de déchiffrement PQC uniquement⚠️ Audit dans le middleware❌ Aucune gestion des secrets❌ Aucune config TLS❌ Aucune validation❌ Aucune supervisionN/APG

1.7 Services de Paiement

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
24payment-processing-service (Go)P0✅ Middleware auth, vérification d'existence utilisateur❌ Aucune journalisation d'audit trouvée⚠️ Variables d'env ; Vault AppRole configuré mais non intégré dans le code✅ Serveur TLS, BDD TLS, Redis TLS, Kafka TLS✅ Middleware de limitation de débit, validation OTP⚠️ Logs GoProducteur : événements de paiement ; Consommateur : événements OTPPG, Redis, Kafka, Stripe
25checkout-orchestration-service (Go)P0⚠️ Auth au niveau config ; pas de middleware JWT sur les routes⚠️ Événements d'audit Kafka⚠️ Variables d'env ; Vault configuré mais non intégré✅ TLS, BDD TLS, Kafka TLS, Redis TLS✅ Limitation de débit (Redis), validation du checkout⚠️ Logs GoProducteur : événements checkout ; Consommateur : données de plansPG, Redis, Kafka
26invoice-service (Go)P1❌ Aucun middleware d'auth trouvé❌ Aucune journalisation d'audit⚠️ Variables d'env ; Vault configuré mais non intégré✅ Serveur TLS, BDD TLS❌ Pas de limitation de débit, pas de validation d'entrée❌ Aucune supervisionConsommateur : événements de paiement ; Producteur : événements de facturationPG, Kafka, R2 (Cloudflare)
27account-provisioning-service (Go)P1⚠️ Auth dans le service de provisionnement❌ Aucune journalisation d'audit⚠️ Variables d'env ; Vault configuré mais non intégré✅ Serveur TLS, BDD TLS❌ Pas de limitation de débit❌ Aucune supervisionConsommateur : événements d'abonnement ; Producteur : événements de provisionnementPG (cert_ix_subscription), Kafka

1.8 Services Agent & Télémétrie

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
28agent-gateway-service (Go)P1✅ Auth d'enregistrement agent, JWT✅ Audit dans le service agent + dépôt⚠️ Variables d'env✅ TLS, Kafka TLS✅ Validation, limitation de débit⚠️ Logs GoProducteur : événements agentPG, Redis, Kafka
29agent-ingestion-gateway (Go)P1⚠️ Auth au niveau config⚠️ Audit au niveau config⚠️ Variables d'env✅ TLS configurable⚠️ Validation au niveau config⚠️ Logs GoProducteur : télémétrie vers KafkaKafka, Redis
30agent-stream-processor (Go)P2❌ Pas d'auth (consommateur Kafka interne)⚠️ Audit dans les processeurs⚠️ Variables d'env✅ TLS configurable⚠️ Validation au niveau config⚠️ Logs GoConsommateur : télémétrie ; Producteur : données traitéesPG, Kafka, Redis
31bits (bitcollector + sentinel)P2⚠️ mTLS pour agent-vers-gateway ; sentinel a auth ES⚠️ Sentinel a un audit basé sur ES⚠️ Variables d'env + config YAML⚠️ TLS configurable pour connexions ES⚠️ Validation basique❌ Aucune supervisionAgent → Gateway (HTTP)agent-gateway, ES

1.9 Services de Support

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
32email-serviceP0⚠️ Auth Kafka pour le broker ; pas d'auth HTTP (interne)✅ Journalisation d'audit email, config de sécurité⚠️ Variables d'env ; clé API SendGrid dans env✅ Serveur TLS, Kafka TLS✅ Limitation de débit, validation de sécurité email⚠️ LoggerConsommateur : événements auth, réinitialisation mot de passe, plan gratuit, etc.Kafka, SendGrid, PG
33notification-serviceP1⚠️ Middleware de déchiffrement PQC uniquement⚠️ Audit dans le middleware❌ Aucune gestion des secrets❌ Aucune config TLS trouvée❌ Pas de limitation de débit❌ Aucune supervisionConsommateur : événements de notificationKafka
34bobby-serviceP2❌ Aucune auth trouvée❌ Aucun audit❌ Aucune gestion des secrets❌ Pas de TLS❌ Aucune validation❌ Aucune supervisionN/AAPI IA/LLM
35nvd-serviceP2❌ Aucune auth trouvée❌ Aucun audit❌ Aucune gestion des secrets❌ Pas de TLS❌ Aucune validation❌ Aucune supervisionN/AAPI NVD
36subscription-service (Go)P0✅ Auth JWT, isolation par tenant✅ Suivi d'utilisation, audit dans les services⚠️ Variables d'env✅ TLS, BDD TLS, Kafka TLS, Redis TLS✅ Validation, limitation de débit⚠️ Logs GoProducteur : réponses capacités, événements quotas ; Consommateur : requêtes capacités, plan gratuit, sync quotasPG (cert_ix_subscription), Redis, Kafka
37teams-management-service (Go)P1✅ Auth JWT⚠️ Champs d'audit au niveau modèle⚠️ Variables d'env✅ TLS configurable⚠️ Validation de modèle⚠️ Logs GoProducteur : événements d'équipePG, Redis, Kafka
38quota-sync-service (Go)P1❌ Pas d'auth (consommateur Kafka interne)❌ Aucune journalisation d'audit⚠️ Variables d'env⚠️ Kafka TLS configurable❌ Pas de validation (interne)❌ Aucune supervisionConsommateur : événements sync quotas ; Producteur : sync quotas abonnementPG, Kafka

1.10 Services Statiques/Contenu

#ServiceCriticitéA:AUTHNB:AUDITC:SECRETSD:CHIFFRE:ENTREEF:SUPERVRôle KafkaDépendances
docs (Docusaurus)P2N/A (statique)N/AN/A✅ HTTPS via NginxN/A⚠️ APM RUMN/ANginx
cert-ix-blogP2⚠️ Connexion admin pour gestion du blog❌ Aucun audit⚠️ Variables d'env✅ HTTPS⚠️ Validation basique⚠️ APM RUMN/AMongoDB
cert-ix-v1-landing-site-v1P2N/A (statique + API messages)❌ Aucun audit⚠️ Variables d'env✅ HTTPS⚠️ Validation basique⚠️ APM RUMN/APG (API messages)

2. Flux Critiques & Dépendances

Flux 1 : Inscription & Connexion Utilisateur (P0)

client-dashboard → qr-auth-ui → qr-auth-service → captcha-service

PG (cert_ix_auth) + Redis

Kafka → email-service (email de vérification)
Kafka → subscription-service (activation plan gratuit)
Kafka → account-provisioning-service (configuration tenant)

Services : qr-auth-service, qr-auth-ui, client-dashboard, captcha-service, email-service, subscription-service, account-provisioning-service
Topics Kafka : cert-ix.auth.user.registered.success, cert-ix.subscription.plan.free.request, cert-ix.subscription.plan.free.activated

Flux 2 : Scan de Vulnérabilités (P0)

client-dashboard → Kong → scan-api-service → Kafka → go-tools (9 moteurs)

Kafka → vulnerability-management-service

Kafka → vulnerability-classifier-service
Kafka → vulnerability-remediation-service
Kafka → vulnerability-policy-service

Services : client-dashboard, scan-api-service, go-tools, vulnerability-management-service, vulnerability-classifier-service
Topics Kafka : cert-ix.scans.{engine}.{priority}, cert-ix.scan-results, cert-ix.scans.events

Flux 3 : Gestion des Actifs (P0)

client-dashboard → Kong → asset-management-service → Kafka (vérification permissions)

PG (cert_ix_assets) + Redis

Kafka → quota-sync-service → subscription-service
Kafka → assets-sync-service

Services : client-dashboard, asset-management-service, quota-sync-service, subscription-service, assets-sync-service
Topics Kafka : cert-ix.asset.created/updated/deleted, cert-ix.quota.sync.assets

Flux 4 : Paiement & Abonnement (P0)

client-dashboard → payment-ui → checkout-orchestration-service → payment-processing-service → Stripe

Kafka → invoice-service
Kafka → account-provisioning-service
Kafka → subscription-service

Services : payment-ui, checkout-orchestration-service, payment-processing-service, invoice-service, account-provisioning-service, subscription-service
Topics Kafka : cert-ix.payment.*, cert-ix.checkout.*, cert-ix.subscription.*

Flux 5 : Conformité & Audit (P1)

client-dashboard → Kong → admin-backend → compliance-management-service (Go)
→ audit-evidence-service
→ compliance-guard-service → asset-verification-service

Services : admin-backend, compliance-management-service, audit-evidence-service, compliance-guard-service, asset-verification-service

Flux 6 : Télémétrie Agent (P2)

bits (bitcollector) → agent-gateway-service → agent-ingestion-gateway → Kafka → agent-stream-processor → PG

Services : bits, agent-gateway-service, agent-ingestion-gateway, agent-stream-processor


3. Synthèse des Écarts P0/P1/P2

P0 — BLOQUANT (À corriger impérativement avant le lancement)

IDServiceType d'ÉcartDescriptionEffort
P0-01asset-management-serviceAUTHNPas de middleware JWT direct — repose sur une vérification de permissions Kafka avec fallback qui accorde l'accès quand Kafka est indisponible4h
P0-02asset-management-serviceAUDITPas de piste d'audit structurée avec traceId/correlationId4h
P0-03checkout-orchestration-serviceAUTHNPas de middleware JWT sur les routes HTTP ; auth au niveau config uniquement3h
P0-04payment-processing-serviceAUDITAucune journalisation d'audit pour les opérations de paiement (exigence PCI DSS)4h
P0-05email-serviceAUTHNPas d'auth HTTP (service interne) — nécessite une auth service-à-service ou une vérification d'isolation réseau2h
P0-06admin-backendCHIFFRDB_SSL par défaut à false — doit être true par défaut en production1h
P0-07Tous les services GoSECRETSTous utilisent directement les variables d'env — vérifier qu'aucun secret n'est codé en dur dans docker-compose ou .env commité dans git2h
P0-08Tous les servicesSUPERVPas de tableau de bord centralisé de vérification de santé ; la plupart des services ont des endpoints de santé mais pas d'alertes4h
P0-09scan-worker-serviceAUDITAucune journalisation d'audit — l'exécution des scans doit être auditable3h
P0-10qr-auth-serviceSECRETSCSRF_ENCRYPTION_KEY retombe sur crypto.randomBytes éphémère — doit être une variable d'env persistante1h

P1 — IMPORTANT (À corriger pour le lancement, peut être reporté à J+2 si bloqué)

IDServiceType d'ÉcartDescriptionEffort
P1-01compliance-guard-serviceAUTHNPas d'auth, pas d'audit, pas de TLS, pas de validation — le service entier nécessite une base de sécurité6h
P1-02audit-evidence-serviceAUTHNUniquement middleware PQC ; pas d'auth JWT, pas de validation, pas de TLS4h
P1-03notification-serviceAUTHNUniquement middleware PQC ; pas d'auth, pas de TLS, pas de limitation de débit4h
P1-04invoice-serviceAUTHNPas de middleware d'auth, pas d'audit, pas de limitation de débit, pas de validation d'entrée4h
P1-05account-provisioning-serviceAUDITPas de journalisation d'audit pour le provisionnement de tenant3h
P1-06assets-sync-serviceAUDITPas de journalisation d'audit pour les opérations de synchronisation2h
P1-07quota-sync-serviceAUDITPas de journalisation d'audit, pas de supervision2h
P1-08admin-backendENTREEPas de middleware de limitation de débit (uniquement au niveau session)3h
P1-09Tous les services Node.jsCHIFFRLes valeurs par défaut Kafka SSL et Redis TLS varient — nécessitent des valeurs par défaut uniformes à true3h
P1-10Intégration VaultSECRETSVault AppRole configuré pour les services de paiement mais NON intégré dans le code Go — utilise toujours les variables d'env8h

P2 — POST-MVP

IDServiceType d'ÉcartDescriptionEffort
P2-01bobby-serviceTOUTAucune base de sécurité — service assistant IA8h
P2-02nvd-serviceTOUTAucune base de sécurité — récupérateur de données CVE4h
P2-03agent-stream-processorAUTHNPas d'auth (consommateur Kafka interne)2h
P2-04bitsSUPERVPas de supervision/alertes pour l'agent2h
P2-05cert-ix-blogAUDITPas de journalisation d'audit pour les actions admin2h
P2-06compliance-management-service (Node)TOUTInutilisé — devrait être supprimé ou marqué comme obsolète1h
P2-07Tous les servicesSUPERVAgent APM manquant dans la plupart des services backend8h

4. Plan de Remédiation par Flux

Flux 1 : Inscription & Connexion — Jour 1 (8h)

TâcheServiceID ÉcartEffortResponsable
Corriger CSRF_ENCRYPTION_KEY pour exiger une variable d'envqr-auth-serviceP0-101h
Vérifier que email-service est isolé réseau ou ajouter auth serviceemail-serviceP0-052h
Vérifier l'absence de secrets codés en dur dans docker-compose/.envTout le flux authP0-072h
Ajouter des alertes de vérification de santé pour les services du flux authqr-auth, captcha, emailP0-083h

Test de fumée : Inscription → vérification email → connexion → obtention JWT → accès tableau de bord → déconnexion

Flux 2 : Scan de Vulnérabilités — Jour 1-2 (10h)

TâcheServiceID ÉcartEffortResponsable
Ajouter la journalisation d'audit au scan-worker-servicescan-worker-serviceP0-093h
Vérifier la complétude de la piste d'audit du scan-api-servicescan-api-service2h
Ajouter des alertes de vérification de santé pour le flux scango-tools, scan-apiP0-082h
Vérifier que Kafka TLS est appliqué pour les topics de scanTous les services de scanP1-093h

Test de fumée : Créer un scan → dispatch vers le moteur → obtenir les résultats → visualiser dans le tableau de bord

Flux 3 : Gestion des Actifs — Jour 2 (8h)

TâcheServiceID ÉcartEffortResponsable
Ajouter un middleware JWT à asset-management-serviceasset-management-serviceP0-014h
Ajouter une journalisation d'audit structurée avec traceIdasset-management-serviceP0-024h

Test de fumée : CRUD actif → vérification de propriété → sync quotas → mise à jour abonnement

Flux 4 : Paiement & Abonnement — Jour 2-3 (11h)

TâcheServiceID ÉcartEffortResponsable
Ajouter un middleware JWT aux routes checkout-orchestrationcheckout-orchestrationP0-033h
Ajouter la journalisation d'audit à payment-processing-servicepayment-processingP0-044h
Corriger la valeur par défaut DB_SSL à true dans admin-backendadmin-backendP0-061h
Ajouter auth + audit à invoice-serviceinvoice-serviceP1-043h

Test de fumée : Sélection du plan → checkout → paiement Stripe → facture générée → abonnement actif

Flux 5 : Conformité & Audit — Jour 3 (6h)

TâcheServiceID ÉcartEffortResponsable
Ajouter une base de sécurité au compliance-guard-servicecompliance-guardP1-016h

Test de fumée : Lancer une vérification de conformité → visualiser les résultats → exporter les preuves

Transversal — Jour 3-4 (8h)

TâchePérimètreID ÉcartEffortResponsable
Uniformiser les valeurs par défaut Kafka SSL + Redis TLSTous les servicesP1-093h
Ajouter la limitation de débit à admin-backendadmin-backendP1-083h
Tableau de bord centralisé de vérification de santéTous les services P0P0-082h

5. Stratégie de Tests E2E par Flux

Principe : Tester par flux, pas par service

Chaque flux dispose d'un script de test de fumée qui valide la chaîne complète de bout en bout.

Flux 1 : Test E2E Auth

# scripts/e2e/test-auth-flow.sh
# 1. Obtenir le token CSRF
# 2. Obtenir le défi CAPTCHA
# 3. Inscrire l'utilisateur (POST /api/v1/register/individual)
# 4. Vérifier l'email (GET /api/v1/register/verify-email/:token)
# 5. Se connecter (POST /api/v1/auth/login)
# 6. Vérifier que le JWT fonctionne (GET /api/v1/auth/check-session)
# 7. Vérifier l'activation de l'abonnement (GET /api/v1/subscriptions/current)
# 8. Se déconnecter (POST /api/v1/auth/logout)
# 9. Vérifier que le token est en liste noire (GET /api/v1/auth/check-session → 401)
# CRITÈRE DE RÉUSSITE : Toutes les étapes retournent les codes de statut attendus

Flux 2 : Test E2E Scan

# scripts/e2e/test-scan-flow.sh
# 1. Connexion → obtenir JWT
# 2. Créer un actif (POST /api/v1/assets)
# 3. Vérifier la propriété (POST /api/v1/verification/proofs)
# 4. Lancer un scan (POST /api/v1/scans)
# 5. Interroger le statut du scan (GET /api/v1/scans/:id) jusqu'à complétion
# 6. Obtenir les résultats du scan (GET /api/v1/scans/:id/results)
# 7. Vérifier la création de vulnérabilité dans vuln-mgmt (GET /api/v1/vulnerabilities)
# CRITÈRE DE RÉUSSITE : Le scan se termine, les résultats sont disponibles, la vulnérabilité est synchronisée

Flux 3 : Test E2E Actifs

# scripts/e2e/test-asset-flow.sh
# 1. Connexion → obtenir JWT
# 2. Créer un actif (POST /api/v1/assets)
# 3. Lire l'actif (GET /api/v1/assets/:id)
# 4. Mettre à jour l'actif (PATCH /api/v1/assets/:id)
# 5. Vérifier la mise à jour du quota (GET /api/v1/subscriptions/current → usage)
# 6. Supprimer l'actif (DELETE /api/v1/assets/:id)
# 7. Vérifier la décrémentation du quota
# CRITÈRE DE RÉUSSITE : Le CRUD fonctionne, les quotas se synchronisent en moins de 30s

Flux 4 : Test E2E Paiement

# scripts/e2e/test-payment-flow.sh
# 1. Connexion → obtenir JWT
# 2. Obtenir les plans (GET /api/v1/plans)
# 3. Créer une session de checkout (POST /api/v1/checkout/sessions)
# 4. Simuler le webhook Stripe (POST /api/v1/webhooks/stripe)
# 5. Vérifier la mise à jour de l'abonnement (GET /api/v1/subscriptions/current)
# 6. Vérifier la création de la facture (GET /api/v1/invoices)
# CRITÈRE DE RÉUSSITE : Niveau d'abonnement mis à jour, facture existante

6. Gel des Contrats d'Événements Kafka

Topics Gelés (v1.0 — rétrocompatible)

Tous les schémas de topics ci-dessous sont gelés pour le MVP1. Tout changement doit être rétrocompatible (ajout de champs uniquement).

Pattern de TopicProducteurConsommateur(s)Version du Schéma
cert-ix.auth.user.registered.successqr-auth-serviceemail-service, subscription-servicev1.0
cert-ix.auth.user.login.successqr-auth-serviceemail-servicev1.0
cert-ix.subscription.plan.free.requestqr-auth-servicesubscription-servicev1.0
cert-ix.subscription.plan.free.activatedsubscription-serviceemail-servicev1.0
cert-ix.subscription.capability-requestvuln-mgmt-servicesubscription-servicev1.0
cert-ix.subscription.capability-responsesubscription-servicevuln-mgmt-servicev1.0
cert-ix.scans.{engine}.{priority}scan-api-serviceworkers go-toolsv1.0
cert-ix.scan-resultsgo-toolsresults-processorv1.0
cert-ix.scans.eventsgo-toolsvuln-mgmt-servicev1.0
cert-ix.asset.created/updated/deletedasset-mgmt-serviceassets-sync, quota-syncv1.0
cert-ix.quota.sync.assetsasset-mgmt-servicequota-sync-servicev1.0
cert-ix.subscription.quota.syncquota-sync-servicesubscription-servicev1.0
cert-ix.payment.*payment-processinginvoice-service, account-provisioningv1.0
cert-ix.checkout.*checkout-orchestrationpayment-processingv1.0

Règles de Versionnage des Schémas

  1. En-tête : Chaque message Kafka DOIT inclure l'en-tête schema-version: "1.0"
  2. Additif uniquement : De nouveaux champs peuvent être ajoutés ; les champs existants ne peuvent pas être supprimés ou renommés
  3. Tolérance du consommateur : Tous les consommateurs DOIVENT ignorer les champs inconnus
  4. Changements cassants : Nécessitent un nouveau topic (ex. : cert-ix.auth.user.registered.success.v2)

7. Critères Go/No-Go

Critères Go (TOUS doivent être remplis)

#CritèreMéthode de Vérification
1Tous les écarts P0 remédiésRevue de code + vérification de déploiement
2Les 4 tests de fumée E2E des flux passentScripts de test automatisés sur staging
3Aucun secret codé en dur dans aucun service déployéAudit grep des docker-compose, .env, code source
4TLS appliqué sur tous les endpoints externesTest curl -k contre Kong + tous les ports publics
5Kafka SSL activé pour tous les producteurs/consommateursAudit de config + test de connexion
6Redis TLS activé pour tous les servicesAudit de config + test de connexion
7Flux auth : inscription → connexion → accès → déconnexion fonctionne E2ETest de fumée Flux 1
8Flux scan : création → scan → résultats fonctionne E2ETest de fumée Flux 2
9Flux paiement : checkout → paiement → abonnement actif fonctionne E2ETest de fumée Flux 4
10Tous les services P0 ont des endpoints de santé qui répondentScript de vérification de santé
11Contrats d'événements Kafka gelés et documentésCe document
12Les journaux d'audit existent pour les événements auth (connexion/déconnexion/inscription)Vérification par requête BDD

Déclencheurs No-Go

  • Tout écart P0 non remédié
  • Tout test de fumée E2E de flux en échec
  • Secret codé en dur trouvé dans la configuration de production
  • TLS non appliqué sur un endpoint exposé à l'extérieur
  • Contournement d'authentification possible sur un service P0
  • Flux de paiement cassé (intégration Stripe)

8. Calendrier

Jour 1 (8h) — Flux Auth + Scan

HoraireTâcheServices
0-1hCorriger CSRF_ENCRYPTION_KEY, vérifier les secretsqr-auth-service
1-3hVérifier l'isolation de email-service, ajouter alertes de santéemail-service, captcha
3-6hAjouter la journalisation d'audit au scan-worker-servicescan-worker-service
6-8hVérifier Kafka TLS du flux scan, écrire tests de fumée Flux 1+2Tous les services de scan

Jour 2 (8h) — Flux Actifs + Paiement

HoraireTâcheServices
0-4hAjouter middleware JWT + audit à asset-management-serviceasset-management-service
4-7hAjouter JWT à checkout-orchestration, audit à payment-processingservices de paiement
7-8hCorriger la valeur par défaut DB_SSL, écrire tests de fumée Flux 3+4admin-backend

Jour 3 (8h) — Transversal + P1 Critiques

HoraireTâcheServices
0-3hUniformiser les valeurs par défaut Kafka SSL + Redis TLSTous les services
3-6hAjouter la limitation de débit à admin-backendadmin-backend
6-8hBase de sécurité pour compliance-guard-servicecompliance-guard

Jour 4 (4h) — Validation + Go/No-Go

HoraireTâcheServices
0-2hExécuter les 4 tests de fumée E2E sur stagingTous
2-3hCorriger les échecs des tests de fuméeSelon besoin
3-4hRevue finale Go/No-Go selon les critèresTous

Effort total estimé : ~28h (3,5 jours ouvrés)


Annexe : Graphe de Dépendances des Services

                    ┌─────────────────┐
│ client-dashboard│
│ (Next.js) │
└────────┬────────┘
│ HTTPS
┌────────▼────────┐
│ Kong Gateway │
│ (Proxy API) │
└────────┬────────┘

┌────────────────────┼────────────────────┐
│ │ │
┌─────▼─────┐ ┌───────▼───────┐ ┌──────▼──────┐
│qr-auth-svc│ │asset-mgmt-svc │ │scan-api-svc │
│ (Fastify) │ │ (Fastify) │ │ (Go) │
└─────┬─────┘ └───────┬───────┘ └──────┬──────┘
│ │ │
│ Kafka │ Kafka │ Kafka
▼ ▼ ▼
┌───────────┐ ┌───────────────┐ ┌──────────────┐
│email-svc │ │quota-sync-svc │ │go-tools (x9) │
│captcha-svc│ │assets-sync-svc│ │scan-worker │
└───────────┘ └───────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌───────────────┐ ┌──────────────┐
│subscription- │ │vuln-mgmt-svc │
│service (Go) │ │classifier-svc│
└───────┬───────┘ │policy-svc │
│ │remediation │
▼ └──────────────┘
┌───────────────┐
│payment-proc │
│checkout-orch │
│invoice-svc │
│acct-provision │
└───────────────┘

Annexe : Distribution des Types d'Écarts de Conformité

Type d'ÉcartNombre P0Nombre P1Nombre P2Total
AUTHN/AUTHZ3418
AUDIT3418
SECRETS2103
CHIFFREMENT1102
ENTRÉE0101
SUPERVISION1012
TOUT (base complète)0022
Total1011526