Projet · Phase 4.1

Phase 4 (1/3) — Le registre d'images : Harbor

Tu as fabriqué une image, mais elle ne vit que sur une VM. Où la stocker pour la déployer ailleurs — et comment savoir si elle est sûre ? On installe Harbor, un registre privé, avec son scanner de vulnérabilités.

⏱ ~2 hNiveau intermédiairePrérequis : Phase 3Pratique · TP
L’idée reçue

« Mon image est construite, elle est prête à être déployée n’importe où. »

Sur quelle machine ? Ton image n’existe que localement, sur la VM où tu l’as construite. Pour la déployer ailleurs (bientôt : sur Kubernetes), il lui faut un entrepôt central accessible par le réseau : un registre. On va installer le nôtre, privé, avec en prime un scanner de sécurité.

Ce module ajoute une VM dédiée, harbor, derrière le pare-feu. Attention aux ressources : le serveur bare-metal est partagé, et Kubernetes (Phase 5) en demandera beaucoup. On reste donc sobre — une seule VM Harbor, bien dimensionnée.

À la fin de ce module, tu sauras…

  • Expliquer le rôle d’un registre d’images privé
  • Installer Harbor via son script, en activant le scanner Trivy
  • Pousser (push) et récupérer (pull) une image sur ton registre
  • Scanner une image et lire son rapport de vulnérabilités

01Préparer la VM Harbor

Expérience 1

Une VM dédiée, avec Docker

Crée une VM harbor (Debian 13) sur le LAN, réserve-lui une IP fixe dans OPNsense (ex. 192.168.10.20), et installe-y Docker — exactement comme à la Phase 3 (dépôt officiel, clé GPG). Harbor a besoin de Docker et du plugin Compose.

Manipule
docker --version
docker compose version
Les deux répondent : la VM est prête à héberger Harbor.
Comprends pourquoi Harbor tourne sur Docker

Harbor est lui-même un ensemble de conteneurs (base de données, API, interface web, scanner…). Son installateur les orchestre avec Docker Compose. C’est un bon exemple concret de ce que tu as appris en Phase 3 : une application réelle = plusieurs services conteneurisés.

02Télécharger l’installateur

Expérience 2

Récupérer le script d’installation

Harbor se déploie via un installateur officiel (script). Récupère la dernière version stable depuis la page des releases Harbor, par exemple :

Manipule
cd /opt
sudo wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-online-installer-v2.11.1.tgz
sudo tar xzvf harbor-online-installer-v2.11.1.tgz
cd harbor
Tu obtiens un dossier harbor contenant install.sh et un modèle de configuration harbor.yml.tmpl. Adapte le numéro de version à la dernière release disponible.
Comprends online vs offline installer

L’installateur online télécharge les images Harbor au moment de l’installation (plus léger). L’offline les embarque (utile sans accès Internet fiable). Ici, la VM a Internet via OPNsense, donc l’online suffit.

03Configurer Harbor

Expérience 3

Le fichier harbor.yml

Manipule
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml

Les réglages essentiels à ajuster :

CléValeur
hostnamel’IP ou le nom de la VM (ex. 192.168.10.20)
harbor_admin_passwordun mot de passe fort
bloc httpsà configurer (ou commenter pour un premier test en HTTP interne)
!
Note sécurité. En production, Harbor doit être en HTTPS. Pour un premier test sur le LAN, on peut démarrer en HTTP, mais on activera TLS ensuite — la gestion des certificats fera partie de la phase de mise en production.

04Installer — avec Trivy

Expérience 4

Lancer l’installation en activant le scanner

Manipule
sudo ./install.sh --with-trivy
Observe
[Step 5]: starting Harbor ...
✔ ----Harbor has been installed and started successfully.----
Le script génère la configuration, télécharge les images, et démarre tous les conteneurs Harbor plus Trivy. Vérifie : docker compose ps dans le dossier harbor liste les services (core, database, registry, portal, trivy…).
Comprends c’est quoi Trivy ?

Trivy est un scanner de vulnérabilités. Le flag –with-trivy l’installe comme composant de Harbor : il analyse chaque image poussée et signale les failles connues (CVE) de ses paquets. La sécurité de la chaîne d’approvisionnement — la supply chain — devient ainsi automatique.

05Première connexion & projet

Expérience 5

Ouvrir l’interface et créer un projet

Depuis debian-gui, ouvre http://192.168.10.20 dans le navigateur. Connecte-toi (admin + le mot de passe défini). Crée un projet nommé soria — un espace de nommage pour tes images.

Ton registre privé est en ligne, avec une interface web. Il ne reste qu’à y envoyer ta première image.
Comprends un « projet » Harbor

Un projet Harbor regroupe des images sous un même préfixe et des mêmes règles d’accès (public/privé, quotas, politiques de scan). Tes images s’appelleront 192.168.10.20/soria/mon-image:tag.

06Pousser ton image SORIA Web

Expérience 6

push, puis pull — la preuve

Sur la VM où tu as construit l’image (Phase 3), connecte-toi au registre, étiquette et pousse :

Manipule
docker login 192.168.10.20
docker tag soria-web:2.0 192.168.10.20/soria/soria-web:2.0
docker push 192.168.10.20/soria/soria-web:2.0
Observe
L’image apparaît dans le projet soria de l’interface Harbor. Pour prouver qu’elle est réutilisable ailleurs, supprime-la localement puis récupère-la depuis le registre :
Manipule
docker rmi 192.168.10.20/soria/soria-web:2.0
docker pull 192.168.10.20/soria/soria-web:2.0
Comprends tag = adresse dans le registre

Le docker tag réétiquette l’image avec l’adresse du registre : registre/projet/nom:tag. C’est cette adresse complète qui dit à Docker pousser et récupérer. Kubernetes utilisera exactement la même adresse pour tirer l’image (Phase 5).

07Scanner l’image (Trivy)

Expérience 7

Voir les vulnérabilités

Dans l’interface Harbor, ouvre le projet soria → l’image → clique Scan (ou active le scan automatique). Trivy analyse l’image et affiche un rapport.

Observe
Un tableau des vulnérabilités par gravité (Critical, High, Medium…), paquet par paquet. C’est concret : tu vois la sécurité de ton image, pas juste « ça marche ».
Comprends pourquoi ça change tout

Sans scanner, on déploie des images en aveugle. Trivy rend visible le risque — et permet des politiques : par exemple, empêcher le déploiement d’une image ayant des failles « Critical ». La sécurité entre dans le flux, au lieu d’être un contrôle après coup.

Ce que tu retiens

Un registre privé (Harbor) est l’entrepôt central de tes images : on y push et pull par une adresse registre/projet/nom:tag. Installé via son script avec Trivy, il scanne automatiquement les vulnérabilités. C’est la pièce qui relie la fabrication d’images (Phase 3) à leur déploiement (Phase 5).

Mini-projet

Ton registre en service

À faire

  1. Installe Harbor sur sa VM dédiée, avec –with-trivy.
  2. Crée le projet soria.
  3. Pousse ton image SORIA Web, puis prouve le pull après suppression locale.
  4. Scanne l’image et note le nombre de vulnérabilités par gravité.
  5. Prends un snapshot de la VM harbor nommé harbor-ok.
  6. Documente dans BookStack : à quoi sert un registre, et ce que Trivy t’a montré.
Fil rouge — Tes images ont un entrepôt. Mais le code source d’où elles proviennent, lui, vit encore « en vrac » sur une VM. Au module suivant, on met en place une vraie gestion du code : Git & GitHub, depuis une machine de management.

?Auto-évaluation

1. À quoi sert un registre d’images ?

À stocker et distribuer les images par le réseau, pour les déployer sur d’autres machines (ex. Kubernetes).

2. Que fait le flag –with-trivy à l’installation ?

Il installe le scanner de vulnérabilités Trivy comme composant de Harbor, qui analyse alors les images poussées.

3. Que signifie l’adresse 192.168.10.20/soria/soria-web:2.0 ?

registre (192.168.10.20) / projet (soria) / nom d’image (soria-web) : tag (2.0) — l’adresse complète pour push et pull.

Connecte-toi pour enregistrer ta progression.

Suite → Phase 4 (2/3) — Le code : Git & GitHub