Skip to content

NIS2 / SecNumCloud

Type de document : Preuve de conformité
Réglementations : Directive NIS2 (UE) 2022/2555 · SecNumCloud (ANSSI)
Version Repod : 1.x
Date : 2026-05-23

Version complète en anglais

La matrice de conformité complète est disponible en anglais : NIS2 & SecNumCloud Compliance →


Vue d'ensemble NIS2

La directive NIS2 (Network and Information Security, version 2) est entrée en vigueur dans les États membres de l'UE le 18 octobre 2024. L'article 21 exige des mesures techniques et organisationnelles proportionnées aux risques, couvrant :

  • Analyse de risques et politiques de sécurité des SI
  • Gestion des incidents
  • Continuité d'activité
  • Sécurité de la chaîne d'approvisionnement ← directement adressé par Repod
  • Gestion des vulnérabilités
  • Contrôle d'accès
  • Cryptographie

Repod adresse les exigences de sécurité de la chaîne d'approvisionnement et de gestion des vulnérabilités pour les organisations distribuant des paquets Linux en interne.


Matrice de conformité Article 21

Sécurité de la chaîne d'approvisionnement

Exigence Statut Comment Repod y répond
Vérifier l'intégrité des logiciels avant déploiement Vérification SHA-256 par rapport à l'index Packages.gz source
Scanner les vulnérabilités connues avant déploiement Scan CVE Grype (NVD, GitHub Advisory, CISA KEV) à chaque upload
Bloquer / réviser les paquets vulnérables Politique CVE configurable : block (quarantaine) ou review (file RSSI)
Maintenir un inventaire logiciel SBOM CycloneDX 1.5 + SPDX 2.3 par paquet et par dépôt
Tracer qui a introduit quel composant Audit trail immuable : upload journalisé avec user, rôle, horodatage, IP
Signature GPG des paquets distribués Signature GPG intégrée ; vérifiée par apt/dnf côté client
Analyse antivirus des artefacts ClamAV avec mise à jour quotidienne des signatures

Contrôle d'accès

Exigence Statut Comment Repod y répond
Contrôle d'accès basé sur les rôles 5 rôles : reader, uploader, maintainer, auditor, admin
Moindre privilège CI/CD → uploader uniquement ; RSSI → auditor ; pas de sur-provisionnement
Séparation des responsabilités (approbation CVE) Seuls admin et maintainer peuvent approuver les paquets signalés
Authentification multifacteur MFA non implémenté en v1 — mitiger avec LDAP + MFA de l'IdP
Intégration annuaire d'entreprise LDAP / Active Directory avec mappage groupe → rôle

Gestion des vulnérabilités

Exigence Statut Comment Repod y répond
Détection des CVE sur les artefacts Grype v0.112.0 sur chaque upload et à la demande
Enrichissement contextuel (EPSS, KEV) Score EPSS + statut CISA KEV pour chaque CVE
SLA de traitement par sévérité Critique : 0 jour ; Haute : 30 j ; Moyenne : 90 j (configurables)
Processus de décision formalisé File de revue RSSI avec justification obligatoire et audit trail

Journalisation et audit

Exigence Statut Comment Repod y répond
Journalisation de toutes les actions sensibles 19 types d'événements en JSONL immuable
Rétention configurable Rétention par défaut 90 jours, modifiable
Accès restreint aux journaux Rôles admin, maintainer, auditor uniquement
Format interopérable avec SIEM JSONL — compatible Elastic, Splunk, Loki, QRadar

SecNumCloud (ANSSI)

Exigence Statut Implémentation
Inventaire des composants logiciels CycloneDX 1.5 + SPDX 2.3
Journaux d'audit JSONL immuable, rétention configurable
Contrôle d'accès RBAC, moindre privilège
Séparation des environnements ⚠️ Conteneurs Docker — isolation réseau à renforcer
Chiffrement des données au repos Volume /repos non chiffré par défaut — gérer au niveau OS/infrastructure
Chiffrement en transit ⚠️ Délégué au reverse proxy
Gestion des clés ⚠️ GPG intégré, secret JWT validé — HSM non inclus

Preuves exportables pour audit

TOKEN=$(curl -s -X POST http://localhost:8000/auth/token \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"VotreMotDePasse!"}' | jq -r .access_token)

# 1. SBOM complet du dépôt (CycloneDX)
curl -H "Authorization: Bearer $TOKEN" \
  "http://localhost:8000/sbom/export?format=cyclonedx" \
  -o repod-sbom-$(date +%Y%m%d).cdx.json

# 2. Journal d'audit du mois
for day in $(seq -f "%02g" 1 31); do
  file="/opt/repod/repos/audit/$(date +%Y-%m)-$day.jsonl"
  [ -f "$file" ] && cat "$file"
done > audit-$(date +%Y-%m).jsonl

# 3. Toutes les décisions CVE
grep '"action":"SECURITY_DECISION"' \
  /opt/repod/repos/audit/*.jsonl | python3 -m json.tool