Mises à jour des données de sécurité en air-gap (ClamAV, Grype, EPSS, CISA KEV)¶
repod n'a besoin d'aucune connexion internet pour son fonctionnement de base — auto-hébergé, l'upload manuel fonctionne entièrement hors-ligne. L'accès internet n'est utilisé que par une poignée de fonctionnalités optionnelles, dont la plus importante est de garder à jour le pipeline de scan CVE. Quatre sources de données se rafraîchissent depuis internet :
| Source | Ce que c'est | Rafraîchie par | Chemin local (par défaut) |
|---|---|---|---|
| Signatures ClamAV | Base de signatures antivirus | freshclam |
/var/lib/clamav |
| Base de vulnérabilités Grype | Base de correspondance CVE (grype db update, cron security_sync_daily) |
grype db update |
/repos/grype-db |
| Scores EPSS | Exploit Prediction Scoring System (FIRST.org) | services/cve_enrichment.py |
/repos/security/epss_cache.json |
| CISA KEV | Catalogue des vulnérabilités connues exploitées | services/cve_enrichment.py |
/repos/security/kev_cache.json |
Si votre instance repod n'a aucun accès internet, aucune de ces 4 sources ne peut s'auto-rafraîchir. Ce guide couvre le flux pris en charge : un hôte relais (n'importe quelle machine avec accès internet) récupère les données fraîches, vous les transférez hors-ligne (USB, disque, ou tout ce qu'autorise votre politique de sécurité), et vous les importez sur l'instance air-gap. Le même schéma déjà utilisé pour le cache amont, appliqué ici au pipeline de sécurité plutôt qu'au contenu des paquets.
1. Récupérer sur l'hôte relais¶
L'hôte relais a besoin de Docker et d'un checkout de ce dépôt — il n'a pas besoin d'être une installation repod complète, et il n'a pas besoin d'accès internet vers le site air-gap, seulement vers le monde extérieur.
git clone <your-repod-repo> && cd repod
bash scripts/security-data-transfer.sh fetch ./security-data-2026-08.tar.gz
Ceci exécute freshclam, grype db update, et le propre
services/cve_enrichment.py de repod (rafraîchissement EPSS + KEV),
chacun dans un conteneur éphémère de l'image backend repod
elle-même — pas une réimplémentation artisanale. Ce point compte : il
garantit que les fichiers exportés sont, à l'octet près, ce qu'une
instance repod normalement connectée aurait produit (mêmes versions
d'outils, même format de fichier de cache), donc aucune dérive de format
à craindre à l'import.
Si une image backend a déjà été construite localement (docker compose
build backend), le script la réutilise. Sinon il en construit une
depuis ./backend — cela peut prendre plusieurs minutes (la
compilation Nuitka fait partie du build backend normal), ce qui est
attendu la première fois.
Un échec partiel (par ex. l'amont de Grype brièvement injoignable) n'interrompt pas toute la récupération — chacune des 3 étapes est indépendante, et le script avertit puis continue, en empaquetant tout ce qui a réussi. Vérifiez la sortie console avant le transfert si vous avez besoin que les 4 sources soient à jour.
2. Transférer¶
Déplacez security-data-2026-08.tar.gz vers le site air-gap via tout
support hors-ligne autorisé par votre politique de sécurité (clé USB,
disque à écriture unique, etc.) — la même étape de remise que dans
le guide du cache amont.
3. Importer sur l'instance air-gap¶
Depuis le checkout repod sur l'hôte air-gap :
Ceci extrait l'archive directement dans les mêmes répertoires hôtes que
docker-compose.yaml monte déjà dans le conteneur backend
(./repos/clamav-db, ./repos/grype-db, ./repos/security) — aucune
manipulation manuelle de chemin nécessaire sur un déploiement standard.
Surchargez d'abord les variables d'environnement
CLAMAV_HOST_DIR/GRYPE_HOST_DIR/SECURITY_HOST_DIR si votre
déploiement les mappe ailleurs.
ClamAV a besoin d'un redémarrage pour prendre en compte les nouvelles
signatures — clamd les charge en mémoire une seule fois au démarrage
du conteneur :
Grype et EPSS/KEV sont relus depuis le disque à chaque scan/requête — aucun redémarrage n'est nécessaire pour ceux-là.
4. Maintenir à jour¶
Répétez les étapes 1 à 3 périodiquement (par ex. chaque semaine pour
ClamAV/Grype, qui changent souvent ; EPSS/KEV peuvent attendre plus
longtemps entre deux rafraîchissements) sur le relais, transférez, puis
importez. Il n'existe pas de mode delta/incrémental — chaque exécution
récupère à nouveau l'état complet actuel des 4 sources, ce que
freshclam/grype db update font déjà de façon incrémentale contre
leur propre amont de toute façon ; l'archive elle-même est toujours un
instantané complet, jamais un diff.
Ce que ce guide ne couvre pas¶
Ce guide traite spécifiquement des 4 sources de données du pipeline CVE ci-dessus. Pour l'air-gap du contenu des paquets lui-même (mirroring de dépôt APT/RPM/APK), voir le guide du cache amont à la place — les deux sont indépendants et généralement utilisés ensemble sur un déploiement entièrement air-gap.