Recherche de site Web

Comment la signature d'image Docker va évoluer avec Notary v2


Les images Docker signées renforcent la confiance et la sécurité de l'écosystème en permettant aux utilisateurs de vérifier que les images qu'ils téléchargent proviennent bien de vous. Malgré les avantages évidents de la signature, l'adoption par les utilisateurs de Docker a été lente et elle n'est pas activée par défaut.

Maintenant, une nouvelle version du système de signature Notary cherche à changer cela. Un groupe de travail multi-fournisseurs a été créé en décembre 2019 pour améliorer l'expérience de signature d'image et résoudre plusieurs des problèmes liés à la mise en œuvre d'origine. Notary v2 a été lancé sous forme alpha en octobre 2021. Voici comment il rend la signature plus compatible avec les modèles d'utilisation modernes des conteneurs.

C'est quoi Notaire ?

Notary est un projet que Docker a lancé en 2015 avant d'en faire don à la Cloud Native Computing Foundation (CNCF). La version v2 est guidée par un groupe intersectoriel qui comprend Docker, Microsoft, Google et Amazon.

Notary, également connu sous le nom de Docker Content Trust, fournit les mécanismes qui signent et vérifient vos images de conteneur. L'itération actuelle fonctionne en ajoutant votre clé publique à votre registre, en signant votre image avec l'homologue privé de la clé, puis en poussant l'image signée vers le registre. D'autres utilisateurs peuvent vérifier l'image en demandant au registre de faire correspondre sa clé publique aux données qu'ils ont extraites. Toutes ces fonctionnalités sont intégrées à la CLI Docker existante sous le groupe de commandes docker trust.

Les problèmes avec la v1

La version originale de Notary a été développée avant la prolifération des registres Docker observée aujourd'hui. Il est avant tout conçu pour Docker Hub, alors qu'aujourd'hui, vous utilisez peut-être des registres de nombreux fournisseurs différents. GitHub, GitLab et les plates-formes de déploiement cloud populaires ont toutes commencé à proposer des registres intégrés.

Notaire travaille actuellement en tandem avec le greffe. Si vous souhaitez l'utiliser avec un registre privé, vous devez également déployer votre propre serveur Notary. Cela rend difficile l'utilisation de la signature d'image dans des environnements qui ne reposent pas sur Docker Hub.

v1 ne fonctionne pas non plus entre les registres. Les données de signature sont perdues lorsque vous extrayez une image publique, puis que vous la transférez vers un registre privé sans serveur Notary associé. Vous ne pouvez pas vérifier si la version privée reste la même que l'original tant qu'elle est au repos dans votre registre. De même, l'architecture actuelle de Notary n'offre pas de prise en charge des réseaux privés et des environnements isolés qui doivent être physiquement isolés du monde extérieur.

La nouvelle architecture v2

La prochaine génération de notaires ramène le design à la planche à dessin pour créer une expérience plus simple et plus universellement applicable. L'un des objectifs du projet est d'atteindre à terme un état où les vérifications de signature d'image sont activées par défaut, une mesure qui aiderait à protéger beaucoup plus d'utilisateurs contre une éventuelle falsification d'image.

Les données de signature seront désormais poussées et extraites avec les données d'image, supprimant l'étape distincte. Tout ce qui est nécessaire pour vérifier une image se déplacera à côté d'elle, maintenant sa disponibilité lorsqu'elle est poussée vers un autre registre ou utilisée dans un environnement isolé.

Notary v2 ne se limite pas non plus à la signature d'images de conteneurs. Il fonctionne avec n'importe quel artefact stocké dans un registre compatible OCI. Vous pouvez désormais signer les ressources qui accompagnent vos images, telles que les listes de dépendance dans les nomenclatures logicielles (SBOM) et les résultats des moteurs d'analyse d'images. Cela renforce la confiance dans l'ensemble de votre pipeline de déploiement en mettant en évidence les tentatives non autorisées de modification des audits et de la documentation à l'appui.

Signataires multiples et promotion de signature

Un autre domaine dans lequel Notary v1 échoue est lorsqu'il s'agit d'approuver une image à utiliser dans votre propre environnement. Il ne prend en charge qu'une seule signature par image ; Si une image Docker Hub est signée par son fournisseur, vous ne pouvez pas ajouter votre propre signature pour marquer l'image comme adaptée à votre organisation.

Notary v2 ajoute également la prise en charge de ce flux de travail. En tant qu'utilisateur d'image en aval, vous pouvez ajouter de nouvelles signatures à une image (ou à tout autre artefact) que d'autres en aval de la chaîne pourront vérifier. Par exemple, cela signifie que vous pourrez vérifier les affirmations suivantes concernant une image identifiée comme ubuntu:latest :

  • L'image a été publiée sur Docker Hub par Canonical et n'a pas été altérée depuis.
  • L'image a été signée pour être utilisée par votre organisation.
  • L'image n'a pas changé depuis qu'elle a été mise en cache dans le registre Docker privé de votre serveur CI.

Notary v2 est capable de maintenir la confiance dans l'ensemble de l'écosystème, au lieu de se limiter principalement à des extractions d'images immédiates depuis Docker Hub. Cela vous encourage à remettre en question l'hypothèse traditionnelle selon laquelle les images sont sûres car elles sont extraites directement de Docker Hub. L'utilisation de plusieurs signatures vous permet de valider cette déclaration, puis de l'enregistrer comme votre propre sceau d'approbation.

Utiliser Notary v2 aujourd'hui

Notary v2 n'est pas encore prêt pour une utilisation générale. Néanmoins, la première alpha est disponible en téléchargement. Le composant de signature et de vérification est appelé notation. Il est actuellement incomplet et proposé en tant que binaire autonome qui fonctionne indépendamment de la CLI Docker.

Téléchargez Notation depuis sa page de versions GitHub, extrayez l'exécutable et placez-le quelque part sur votre chemin. Commencez par générer un certificat de signature de test pour votre propre usage :

notation cert generate-test --default "my-certificate"

Vous pouvez maintenant signer des images. Le notaire ne fonctionne actuellement qu'avec des images dans un registre. Vous pouvez utiliser Docker pour démarrer rapidement un registre compatible sur localhost : 5000 :

docker run -d -p 5000:5000 ghcr.io/oras-project/registry:v0.0.3-alpha

Créez et transférez votre image dans votre registre, puis utilisez Notation pour la signer :

docker build -t localhost:5000/my-image:latest .
docker push localhost:5000/my-image:latest
notation sign --plain-http localhost:5000/my-image:latest

Vous avez maintenant ajouté votre signature à l'image. Essayez de le vérifier en utilisant la commande verify :

notation verify --plain-http localhost:5000/my-image:latest

Cela générera une erreur car la commande cert generate-test n'enregistre pas automatiquement la clé publique du certificat généré. Comme Notation ne connaîtra pas la clé utilisée pour signer l'image, la validation échouera. Vous pouvez rectifier cela en ajoutant la clé publique de votre certificat à Notation, puis en essayant à nouveau de vérifier votre image :

notation cert add --name "my-certificate" ~/.config/notation/certificate/my-certificate.crt
notation verify --plain-http localhost:5000/my-image:latest

Cette fois, Notation devrait émettre le hachage de signature SHA256 de l'image, indiquant que la vérification a réussi. Vous devriez maintenant pouvoir extraire et vérifier l'image sur une autre machine sur laquelle Notation est installé. N'oubliez pas d'ajouter la clé publique de votre certificat à votre deuxième installation Notation.

Le drapeau --plain-http dans les commandes ci-dessus permet à Notation d'utiliser HTTP pour se connecter au registre. Cela est nécessaire pour ces exemples où un registre Docker a été créé localement à des fins de test. Vous devez omettre cet indicateur lors de la connexion à un véritable registre sécurisé par TLS.

Quelle est la prochaine étape pour le notaire et la notation ?

Notary v2 est toujours en cours de développement et de nouvelles fonctionnalités apparaîtront dans les futures versions de Notation. La révocation des certificats, les politiques de vérification spécifiques à l'environnement et la prise en charge des registres sans prise en charge d'ORAS sont toutes sur la feuille de route.

Il n'y a actuellement aucun délai indiqué pour une version stable. Une fois arrivé, Notary v2 ajoutera enfin une signature accessible, résiliente et évolutive à l'écosystème d'images de conteneurs. Cela devrait rendre la vérification de signature utilisable dans de nombreux autres scénarios, réduisant ainsi le risque de falsification par câble et d'utilisation d'images non autorisées.

Une fois déployée à plus grande échelle, vos systèmes de déploiement pourront vérifier si une image est une version officielle de son fournisseur, si elle est approuvée pour une utilisation dans votre organisation et si elle a obtenu un résultat d'analyse de sécurité approprié signé avec le même clé. Cela ajoutera une couche bienvenue de protection et de transparence supplémentaires pour les organisations soucieuses de la sécurité qui gèrent des conteneurs dans des environnements à haut risque.

Articles connexes: