Maison > développement back-end > Golang > Construire des packages Golang à l'aide de Spring Boot 3 bootBuildImage ?

Construire des packages Golang à l'aide de Spring Boot 3 bootBuildImage ?

PHPz
Libérer: 2024-02-06 08:33:13
avant
865 Les gens l'ont consulté

使用 Spring Boot 3 bootBuildImage 构建 Golang 包?

Contenu de la question

J'utilise Spring Boot v3.1.5 et j'utilise bootBuildImage pour créer mon image. Après avoir numérisé mes images, j'ai trouvé de nombreux CVE pour Golang. D'après ce que je comprends, plusieurs packages de construction Golang sont utilisés pendant le processus de création d'image.

Existe-t-il un moyen de résoudre ce problème ? Puis-je configurer Spring pour éviter d’utiliser ces packages ?

J'ai essayé de configurer le buildpack utilisé mais sans succès. Je veux n'avoir aucun fichier lié à Golang dans l'image que je crée.


Bonne réponse


Très bien !

Non, ce n’est pas correct. Lorsque vous créez une application Java, elle utilise uniquement des packages de construction liés à Java. Il n’utilise aucun buildpack Go. Vous pouvez voir la liste des packages de build qu'il utilise dans la sortie de la build. Cela ressemble à ceci. Les buildpacks répertoriés dans l'instrumentation sont les seulsappelés.

===> DETECTING
6 of 26 buildpacks participating
paketo-buildpacks/ca-certificates   3.6.6
paketo-buildpacks/bellsoft-liberica 10.4.2
paketo-buildpacks/syft              1.39.0
paketo-buildpacks/executable-jar    6.8.2
paketo-buildpacks/dist-zip          5.6.7
paketo-buildpacks/spring-boot       5.27.5
Copier après la connexion

Ce qui peut vous dérouter, c'est que tous les buildpacks Paketo eux-mêmes sont écrits en Golang. Donc, si vous deviez sélectionner une image de buildpack comme gcr.io/paketo-buildpacks/bellsoft-liberica,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main, c'est ce qu'on appelle lors de l'instrumentation et de la construction, et ce qu'il faut réellement faire pour construire le package.

De plus, le buildpack effectue certaines opérations avant le démarrage du runtime de l'application, telles que la configuration des paramètres JVM, qui sont effectuées par une couche nommée helper 的单独二进制文件(构建包映像的同一目录)执行。与 main 不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper 二进制文件。如果您使用 dive 查看应用程序映像,您可以看到添加 helper Binary et le confirme.

Votre scanner verra ce binaire et le scannera comme toute autre chose. Il est capable de déterminer à partir d'un binaire quelle version de Golang a créé ce binaire, et à partir de là, il vous indique que le binaire peut être vulnérable à n'importe quel CVE connu pour cette version de Go ou supérieure. Le scanner n'a aucune connaissance de l'utilisation du binaire ou s'il est réellement vulnérable à des CVE. Je ne sais pas à quel CVE vous faites référence, mais je peux vous dire que étant donné que le binaire Paketo buildpack

est une CLI, il s'exécute et lit généralement les arguments/variables d'environnement, puis imprime du texte structuré. C'est tout, généralement aucun serveur, réseau ou HTTP n'est requis. helper 二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helper

Si vous avez des questions

spécifiques sur les CVE et leur impact, vous pouvez les poser sur Paketo Slack, mais ne vous contentez pas de jeter la liste CVE dans le scanner et d'attendre que quelqu'un revérifie tout pour vous. Veuillez noter que ce projet est un projet OSS et que les gens répondront de bonne foi et dans la mesure du temps possible. Si vous avez besoin de plus d'aide ou si vous souhaitez un temps de réponse garanti, vous voudrez peut-être envisager de passer un contrat avec un fournisseur de packages de construction commerciale.

Les fichiers Golang ne peuvent pas être supprimés, ce sont essentiellement des packages de build.

Ce que vous pouvez faire :

  1. Gardez vos constructeurs et buildpacks à jour. Le projet Paketo publie de nouvelles versions chaque semaine et nous maintenons activement Go à jour afin que les nouvelles versions contiennent tous les derniers correctifs.

  2. Vérifiez les CVE signalés, si vous vous tenez au courant, il ne devrait pas y en avoir beaucoup. Étant donné le contexte dans lequel les binaires du package sont construits (voir ci-dessus), ils ne sont probablement pas pertinents et vous pouvez alors demander au scanner de les ignorer. Ils devraient bientôt partir parce que 1. )

  3. Puisque vous utilisez les outils de build Spring Boot, assurez-vous d'avoir vu

    cette annonce et d'avoir appliqué les modifications requises. Si vous ne le faites pas, vous obtiendrez certainement beaucoup de CVE car vous aurez des packages de build très anciens.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal