Aujourd’hui, les déploiements d’applications sont de plus en plus présents et volumineux. Les entreprises font face à de nouveaux challenges pour gérer leurs artefacts…
Pour vous présenter tout ça, nous allons parcourir ensemble les points suivants :
1. Qu’est-ce qu’Harbor ?
2. Qu’elle est sa mission principale ?
3. Où s’intègre-t-elle dans la chaîne de CI/CD ?
4. Quels sont ses principes fondamentaux ?
5. Quelle est son architecture ?
6. Qu’est-ce que Trivy ?
Qu’est-ce que Harbor ?
Harbor est une registry privée open source, appartenant à VMware et soutenue par la CNCF. Il supporte les images de conteneurs, les images OCI et les Helm Charts.
Ses fonctions sont les suivantes :
- Sécuriser les images avec des politiques de sécurité et un modèle RBAC
- S’assurer qu’elles sont scannées et dépourvues de vulnérabilités
- Les signer afin de valider leur authenticité
Harbor est donc un produit clé dans l’environnement du cloud.
Qu’elle est la mission principale portée par Harbor ?
« Être la registry cloud native pour Kubernetes la plus sécurisée, performante, évolutive et disponible. »
Comment ? En remplissant les conditions de conformité, de performance et d’interopérabilité pour vous aider à gérer vos artefacts de manière cohérente et sécurisée sur les plateformes on-premise ou cloud native (telles Kubernetes ou Docker).
Où s’intègre Harbor dans la chaîne de CI/CD ?
Dans la chaîne d’outils DevOps, Harbor se positionne au niveau des étapes de tests et de livraison. Il intervient dans la phase de tests en scannant et en signant les images, puis dans la phase de livraison en tant que dépôt d’images de confiance.
Quels sont les principes fondamentaux de Harbor ?
Déploiement de Harbor Hosting
Le déploiement de Harbor se fait on-premise afin de s’intégrer au mieux à vos outils et services hébergés dans vos serveurs ou votre datacenter.
Multi-tenant : comment contrôler les accès de vos utilisateurs ?
Harbor fournit un modèle RBAC flexible vous permettant d’administrer les utilisateurs et leurs permissions.
De plus, les projets sont isolés les uns des autres et peuvent ainsi être adaptés aux besoins des utilisateurs : vous pouvez définir un rôle différent pour chacun, pour chaque projet.
Politique de sécurité
Vous pouvez paramétrer différentes options, que ce soit au niveau global ou au niveau d’un projet.
Tout d’abord, en définissant les permissions des utilisateurs, vous choisissez qui a le droit de pousser et de tirer des images.
Si vous souhaitez limiter l’espace disque occupé par un projet, vous pouvez spécifier un quota afin d’empêcher les utilisateurs de remplir l’intégralité du volume de stockage disponible. Harbor vous permet également de définir une politique de rétention et de supprimer automatiquement les images trop vieilles ou de ne conserver que les X dernières images.
Vous pouvez également choisir de rendre une image stable immutable et ainsi empêcher un utilisateur de l’écraser.
Grâce à Notary (soutenu par la CNCF), vous pouvez signer vos images comme étant de confiance et en vérifier la provenance.
Pour finir, il vous est possible de choisir le niveau de vulnérabilités acceptable pour une mise en production d’applications : critique, haut, moyen, bas ou aucun.
Sécurité et conformité : comment Harbor garantie l’intégrité des images de vos conteneurs ?
Harbor vous permet de fédérer vos utilisateurs à partir de n’importe quel fournisseur d’identité, que ce soit un AD ou un OIDC*. De plus, si vous avez besoin de partager l’accès à vos projets à différentes sociétés, vous pouvez créer des « invités limités ». Ceux-ci auront alors des droits très restreints : ils pourront tirer vos images mais pas en pousser, et ils ne pourront pas voir les logs ou les autres membres d’un projet.
Parlons des scans d’images : en connectant un scanneur à votre registry Harbor, vous pouvez analyser toutes vos images et ainsi corriger leurs éventuelles vulnérabilités. Vous avez toutefois la possibilité de déclarer, globalement ou par projet, des exceptions pour certaines CVEs pour lesquelles vous n’avez pas encore de solution, vous permettant tout de même d’exploiter les images concernées.
Enfin, comme écrit plus haut, Harbor fournit des logs. Toute opération effectuée par les utilisateurs est enregistrée.
Modularité : comment profiter de la complémentarité offerte par la registry Harbor ?
Harbor est nativement compatible avec les outils et services déjà déployés dans votre infrastructure.
Grâce aux webhooks, vous pouvez facilement intégrer Harbor à vos outils de CI/CD ou à des outils de reporting, des bases de données, Slack, etc. via des callbacks HTTP. Par exemple, vous pouvez être notifié lorsqu’un scan est terminé ou a échoué, lorsqu’une image est uploadée ou supprimée…
Harbor fournit également une API REST, vous permettant d’effectuer tout ce qui est faisable dans l’interface utilisateur.
La 3ème option est l’utilisation de comptes robot, afin d’exécuter des actions dans Harbor dans votre CI/CD par exemple.
Vous pouvez répliquer vos images vers une autre registry : utilisez Harbor pour scanner vos images puis répliquez-les automatiquement là où elles doivent être exécutées.
Vous choisissez quel scanneur utiliser, soit à partir de la liste de scanneurs officiellement compatibles (Clair, Anchore, Trivy, CSP, DoSec, Sysdig, TensorSecurity), soit en utilisant votre propre scanneur.
Quelle est l’architecture de Harbor ?
Le déploiement s’effectue via Docker Compose ou un Helm Chart.
La communication entre les différents services est sécurisée via SSL.
Trivy
Trivy est le scanneur par défaut dans Harbor. Il est simple, rapide, complet et parfaitement adapté à la CI. Il sait faire du deep scanning, c’est-à-dire qu’il ne scanne pas seulement les layers du haut d’une image mais également ceux du milieu, lui permettant d’identifier les librairies et leur version.
Il est capable de détecter des paquets spécifiques à :
- Des OS : Alpine, RHEL, CentOS, Oracle, Debian, Amazon Linux, open SUSE, Photon OS, Distroless, etc.
- Des langages : Bundler, Composer, Pipenv, Poetry, npm, Cargo, NuGet, Maven et Go
* OIDC : OpenID Connect est une simple couche d’authentification basée sur le protocole OAuth2, qui autorise les clients à vérifier l’identité d’un utilisateur final en se basant sur l’authentification fournie par un serveur d’autorisation, tel Google ou Microsoft Azure.
Vous avez besoin d’en savoir plus ? Par ici