Aller au contenu

Harbor : registre d'artefacts cloud-native

Mise à jour :

Logo Harbor

Harbor s’est imposé comme le registre d’artefacts cloud-native de référence. Bien plus qu’un simple registre d’images de conteneurs, Harbor (version 2.14 en 2025) gère désormais les Helm charts, les SBOM (Software Bill of Materials) et même les modèles d’IA via l’intégration CloudNativeAI. Projet CNCF graduated, Harbor offre aux équipes DevSecOps une plateforme robuste pour le stockage, la distribution et la sécurisation des artefacts dans les pipelines CI/CD modernes.

Fonctionnalités d’Harbor

Harbor offre un ensemble complet de fonctionnalités pour la gestion sécurisée des artefacts cloud-native. Ces fonctionnalités répondent aux exigences des environnements DevSecOps modernes.

Gestion multi-artefacts

Harbor gère désormais bien plus que des images de conteneurs :

  • Images de conteneurs : Docker, OCI, images multi-architectures
  • Helm charts : stockage et distribution des charts Kubernetes
  • SBOM (depuis v2.11) : génération et stockage des Software Bill of Materials pour la traçabilité et la conformité
  • Artefacts IA/ML (depuis v2.13) : support CloudNativeAI (CNAI) pour stocker et versionner des modèles d’intelligence artificielle

Sécurité et scan de vulnérabilités

Harbor intègre Trivy comme scanner de vulnérabilités par défaut. Chaque artefact poussé peut être automatiquement scanné pour détecter les CVE connues. Les politiques de sécurité permettent de bloquer le pull d’images vulnérables.

Contrôle d’accès et authentification moderne

  • RBAC : gestion fine des droits par projet, avec rôles personnalisables
  • OIDC avec PKCE : intégration SSO moderne (Keycloak, Azure AD, Okta)
  • LDAP/Active Directory : authentification d’entreprise
  • Robot accounts : comptes de service pour les pipelines CI/CD

Réplication et haute disponibilité

Harbor supporte la réplication d’artefacts entre registres (push/pull), facilitant les architectures multi-datacenter et hybrid cloud. Les adaptateurs de réplication permettent de synchroniser avec d’autres registres (Docker Hub, GCR, ECR, ACR, Quay…).

Audit et conformité

Depuis les versions récentes, Harbor propose :

  • Logs d’audit détaillés : suivi de toutes les actions (push, pull, delete)
  • Content Trust : signature des images avec Notary
  • Politiques de rétention : nettoyage automatique des anciens tags
  • Quotas : limitation de l’espace de stockage par projet

Historique

Harbor a débuté comme un projet interne chez VMware, conçu pour répondre aux besoins spécifiques de gestion et de sécurité des images de conteneurs au sein de l’entreprise. À l’époque, les solutions existantes ne répondaient pas entièrement aux exigences de sécurité, de performance et de gestion à grande échelle. Harbor a été développé pour combler ce vide, offrant une plateforme robuste et sécurisée pour la gestion des images de conteneurs.

Au fil du temps, Harbor a gagné en popularité et en reconnaissance dans la communauté des développeurs et des administrateurs systèmes, principalement pour sa capacité à sécuriser efficacement les images de conteneurs. En réponse à cette demande croissante, VMware a décidé de rendre Harbor open source, permettant ainsi à une communauté plus large de contribuer au projet et de l’améliorer.

Ce passage à l’open source a marqué un tournant pour Harbor. Le projet a été adopté par la Cloud Native Computing Foundation (CNCF), un organisme qui soutient des projets clés dans l’écosystème des technologies cloud natives. L’inclusion d’Harbor dans le giron de la CNCF a renforcé sa crédibilité et sa visibilité, attirant encore plus de contributeurs et d’utilisateurs.

L’évolution d’Harbor a été marquée par plusieurs mises à jour majeures, qui ont introduit de nouvelles fonctionnalités et améliorations, telles que la gestion fine des accès, le scan des vulnérabilités, la réplication des images et la compatibilité avec d’autres outils et standards de l’écosystème cloud natif.

Aujourd’hui, Harbor est reconnu comme une solution de référence pour la gestion sécurisée des images de conteneurs. Son histoire témoigne de l’importance d’une communauté active et engagée dans le développement de solutions open source répondant aux besoins changeants des professionnels du DevOps et de la sécurité informatique.

Installation et Configuration d’Harbor

Harbor peut être installé de deux manières :

  • Docker Compose : idéal pour les environnements de test ou les petites installations (VM, serveur dédié)
  • Helm sur Kubernetes : recommandé pour la production et les environnements cloud-native

Prérequis système

Configuration matérielle et logicielle requise :

RessourceMinimumRecommandé
CPU2 cores4 cores
RAM4 Go8 Go
Disque40 Go160 Go

Logiciels requis :

  • Docker Engine 20.10.10+ ou supérieur
  • Docker Compose v1.18+ ou Docker Compose v2 (plugin docker-compose)
  • OpenSSL (pour la génération de certificats)

Ports réseau à ouvrir :

PortProtocoleUsage
443HTTPSPortail Harbor et API (défaut)
80HTTPRedirection vers HTTPS
4443HTTPSDocker Content Trust (optionnel)

Téléchargement et Installation

Téléchargez l’installeur depuis le dépôt officiel GitHub. Deux options :

  • Online installer : léger, télécharge les images depuis Docker Hub
  • Offline installer : contient les images pré-construites (recommandé pour les environnements isolés)
Terminal window
# Télécharger Harbor v2.14.0
cd /opt
wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-offline-installer-v2.14.0.tgz
# Vérifier l'intégrité (optionnel mais recommandé)
wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-offline-installer-v2.14.0.tgz.asc
gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 644FF454C0B4115C
gpg -v --keyserver hkps://keyserver.ubuntu.com --verify harbor-offline-installer-v2.14.0.tgz.asc
# Extraire l'archive
tar xzvf harbor-offline-installer-v2.14.0.tgz
cd harbor

Configuration de Harbor

Copiez le template de configuration et éditez-le :

Terminal window
cp harbor.yml.tmpl harbor.yml
vi harbor.yml

Paramètres essentiels à configurer dans harbor.yml :

# Configuration file of Harbor
# Nom d'hôte ou IP publique (jamais localhost)
hostname: registry.example.com
# Configuration HTTPS (obligatoire en production)
https:
port: 443
certificate: /chemin/vers/cert.pem
private_key: /chemin/vers/key.pem
# Mot de passe admin (à changer impérativement)
harbor_admin_password: VotreMotDePasseSecurise
# Répertoire de stockage des données
data_volume: /data
# Configuration de Trivy pour le scan de vulnérabilités
trivy:
ignore_unfixed: false
security_check: vuln,config,secret
skip_update: false
insecure: false

Lancement de l’Installation

Lancez le script d’installation avec l’option --with-trivy pour activer le scan de vulnérabilités :

Terminal window
# Installation avec Trivy (recommandé)
sudo ./install.sh --with-trivy
# Ou installation basique sans Trivy
sudo ./install.sh

Le script vérifie les prérequis, génère les fichiers de configuration et démarre les conteneurs Docker.

Une fois l’installation terminée, le message suivant s’affiche :

✔ ----Harbor has been installed and started successfully.----

Vous pouvez accéder à l’interface web d’Harbor via https://registry.example.com (ou l’URL configurée dans hostname).

Installation via Helm (Kubernetes)

Pour un déploiement sur Kubernetes, utilisez le chart Helm officiel :

Terminal window
# Ajouter le dépôt Helm Harbor
helm repo add harbor https://helm.goharbor.io
helm repo update
# Installer Harbor avec persistence et ingress
helm install harbor harbor/harbor \
--namespace harbor \
--create-namespace \
--set expose.type=ingress \
--set expose.ingress.hosts.core=harbor.example.com \
--set expose.tls.enabled=true \
--set externalURL=https://harbor.example.com \
--set persistence.enabled=true \
--set trivy.enabled=true

Consultez la documentation Helm Harbor pour les options avancées (HA, stockage S3, Redis externe…).

Premier accès et configuration initiale

Lors du premier accès à Harbor, connectez-vous avec les identifiants par défaut :

  • Utilisateur : admin
  • Mot de passe : Harbor12345

Harbor web interface

Dans les projets, créez le projet monprojet

Gestion des Images de Conteneurs avec Harbor

La gestion des images de conteneurs dans Harbor est un processus qui allie simplicité et sécurité. Pour illustrer cela, nous allons détailler l’intégration d’une image de conteneur simple, en commençant par la création de l’image avec un Dockerfile, puis son stockage dans Harbor.

Création d’une Image de Conteneur Simple

Dockerfile Basique: Commençons par créer un Dockerfile simple pour une application web basique. Voici un exemple de Dockerfile qui installe un serveur web Nginx.

# Utilisation d'une image de base Nginx
FROM nginx:alpine
# Copie d'un fichier HTML personnalisé dans le serveur web
COPY index.html /usr/share/nginx/html/
# Exposition du port 80
EXPOSE 80

index.html:

Créez un fichier index.html simple. Par exemple:

<!DOCTYPE html>
<html>
<head>
<title>Bienvenue sur mon site web</title>
</head>
<body>
<h1>Ceci est une page d'accueil servie par Nginx dans un conteneur Docker!</h1>
</body>
</html>

Construire et Taguer l’Image

  1. Construire l’Image: Ouvrez un terminal et naviguez vers le dossier contenant le Dockerfile et le fichier index.html. Exécutez la commande suivante pour construire l’image :

    Terminal window
    docker build -t monserveurweb:0.1 .
  2. Taguer l’Image pour Harbor: Après la construction, taguez l’image pour votre registre Harbor.

    Terminal window
    docker tag monserveurweb:0.1 registry.harbor.local/monprojet/monserveurweb:0.1

Pousser l’Image vers Harbor

  1. Connexion à Harbor: Connectez-vous à votre registre Harbor en utilisant Docker CLI.

    Terminal window
    docker login registry.harbor.local 10:38:18
    Username: admin
    Password:
    WARNING! Your password will be stored unencrypted in /home/bob/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    Login Succeeded

    Entrez vos identifiants Harbor lorsque vous y êtes invité.

  2. Pousser l’Image: Une fois connecté, poussez l’image vers Harbor.

    Terminal window
    docker push registry.harbor.local/monprojet/monserveurweb:0.1
    The push refers to repository [registry.harbor.local/monprojet/monserveurweb]
    9bb0e6b909e4: Pushed
    a34b395c0ca3: Pushed
    5e728486380e: Pushed
    b968c967e155: Pushed
    92ef9174e989: Pushed
    28c7b3c0b176: Pushed
    fbed1f6990ee: Pushed
    dd731ddf52be: Pushed
    9fe9a137fd00: Pushed
    0.1: digest: sha256:aacd787ab58757a824fa0b50ccdf89a63a5ed159b33ecd2149bac089fd1d43f2 size: 2196

Gestion dans Harbor

Une fois l’image poussée vers Harbor :

  • Scan automatique avec Trivy : Harbor utilise Trivy pour scanner l’image et détecter les vulnérabilités (CVE). Le scan peut être déclenché automatiquement à chaque push ou manuellement.
  • Consultation des résultats : dans l’interface web, visualisez les tags, les métadonnées, le SBOM généré et les résultats du scan de sécurité.
  • Politiques de sécurité : configurez des règles pour bloquer le pull d’images contenant des vulnérabilités critiques.
  • Déploiement : utilisez l’image dans vos environnements en référençant son tag Harbor.

Harbor trivy

Harbor et la CI/CD

L’intégration d’Harbor dans les pipelines de CI/CD (Continuous Integration/Continuous Deployment) joue un rôle important dans l’automatisation et la sécurisation des processus de déploiement des applications conteneurisées.

Intégration avec les Outils de CI/CD

Harbor peut être intégré avec divers outils de CI/CD tels que Jenkins, GitLab CI et Github Actions. Cette intégration permet d’automatiser le processus de construction, de test et de déploiement des images de conteneurs.

  • Automatisation du Pipeline: Dans un pipeline CI/CD, les images de conteneurs sont automatiquement construites et poussées vers Harbor à chaque commit dans le système de contrôle de version. Ceci assure que les images sont constamment mises à jour et prêtes pour le déploiement.
  • Scans de Sécurité Automatisés: Lorsqu’une image est poussée vers Harbor, elle peut être automatiquement scannée pour détecter des vulnérabilités, garantissant ainsi que seules les images sécurisées sont déployées dans les environnements de production.

Exemple de Workflow CI/CD avec Harbor

  1. Développement et Commit: Un développeur fait des modifications au code source et effectue un commit dans le système de contrôle de version.
  2. Déclenchement du Pipeline CI: Le commit déclenche le pipeline CI, où le code est construit et testé. Si les tests réussissent, une image de conteneur est construite.
  3. Push vers Harbor: La nouvelle image est poussée vers Harbor, où elle est stockée dans le registre de conteneurs.
  4. Scannage des Vulnérabilités: Harbor scanne automatiquement l’image pour des vulnérabilités. Si des problèmes sont détectés, ils sont signalés pour correction.
  5. Déploiement: Une fois l’image approuvée et sécurisée, elle est automatiquement déployée dans l’environnement de production ou de test, selon le pipeline.

Conclusion

Harbor s’est imposé comme le registre d’artefacts cloud-native de référence pour les équipes DevSecOps. Au-delà du simple stockage d’images, il offre un écosystème complet : scan de vulnérabilités avec Trivy, génération de SBOM pour la traçabilité, support des artefacts IA/ML, et intégration native dans les pipelines CI/CD.

Son architecture modulaire et ses options de déploiement (Docker Compose ou Helm/Kubernetes) le rendent adaptable à tous les environnements, du lab au multi-datacenter en production.

Pour aller plus loin

Après avoir maîtrisé Harbor, complétez votre expertise :

  • Scan de vulnérabilités : Approfondissez avec Trivy pour scanner images, IaC et SBOM
  • Supply Chain : Signez vos images avec Cosign
  • Orchestration : Déployez vos images avec Kubernetes
  • CI/CD : Intégrez Harbor dans GitLab CI ou GitHub Actions

Ressources

RessourceDescription
Site OfficielPage projet Harbor
Documentation v2.14Documentation officielle
GitHubCode source et releases
Helm ChartChart Helm officiel