Heim > Backend-Entwicklung > Golang > Golang-Pakete mit Spring Boot 3 bootBuildImage erstellen?

Golang-Pakete mit Spring Boot 3 bootBuildImage erstellen?

PHPz
Freigeben: 2024-02-06 08:33:13
nach vorne
879 Leute haben es durchsucht

使用 Spring Boot 3 bootBuildImage 构建 Golang 包?

Frageninhalt

Ich verwende Spring Boot v3.1.5 und bootBuildImage, um mein Image zu erstellen. Nachdem ich meine Bilder gescannt hatte, fand ich viele CVEs für Golang. Soweit ich weiß, werden während des Image-Erstellungsprozesses mehrere Golang-Build-Pakete verwendet.

Gibt es eine Möglichkeit, dieses Problem zu lösen? Kann ich Spring so konfigurieren, dass die Verwendung dieser Pakete vermieden wird?

Ich habe versucht, das verwendete Buildpack zu konfigurieren, aber ohne Erfolg. Ich möchte keine Golang-bezogenen Dateien in dem von mir erstellten Bild haben.


Richtige Antwort


Sehr gut!

Nein, das ist nicht korrekt. Wenn Sie eine Java-Anwendung erstellen, verwendet diese nur Java-bezogene Buildpakete. Es werden keine Go-Buildpacks verwendet. Sie können die Liste der verwendeten Build-Pakete in der Build-Ausgabe sehen. Es sieht aus wie das. Die in der Instrumentierung aufgeführten Buildpacks sind die „einzigen“, die aufgerufen werden.

===> 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
Nach dem Login kopieren
Was Sie vielleicht verwirren könnte, ist, dass

alle

Paketo-Buildpacks selbst in Golang geschrieben sind. Wenn Sie also ein Buildpack-Image wie auswählen, wird dies während der Instrumentierung und des Builds aufgerufen und was tatsächlich zum Erstellen des Pakets erforderlich ist. gcr.io/paketo-buildpacks/bellsoft-liberica,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main Darüber hinaus führt das Buildpack einige Vorgänge aus, bevor die Anwendungslaufzeit gestartet wird, z. B. das Konfigurieren von JVM-Einstellungen, die von einer Ebene namens

Binary ausgeführt werden, und bestätigt dies.

helper 的单独二进制文件(构建包映像的同一目录)执行。与 main 不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper 二进制文件。如果您使用 dive 查看应用程序映像,您可以看到添加 helperIhr Scanner erkennt diese Binärdatei und scannt sie wie alles andere. Anhand einer Binärdatei lässt sich erkennen, welche Version von Golang diese Binärdatei erstellt hat, und von dort aus erfahren Sie, dass die Binärdatei möglicherweise für alle

bekannten CVEs für diese Version von Go oder höher anfällig ist.

Der Scanner weiß nicht, wofür die Binärdatei verwendet wird oder ob sie tatsächlich für CVEs anfällig ist. Ich weiß nicht, auf welches CVE Sie sich beziehen, aber ich kann Ihnen sagen, dass das Paketo-Buildpack , da es sich bei der Binärdatei um eine CLI handelt, ausgeführt wird, normalerweise Argumente/Umgebungsvariablen liest und dann strukturierten Text ausgibt. Das war's, normalerweise ist kein Server, Netzwerk oder HTTP erforderlich.

Wenn Sie helper 二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helperspezifische

Fragen zu CVEs und deren Auswirkungen haben, können Sie auf Paketo Slack nachfragen, aber werfen Sie dort nicht einfach die CVE-Liste in den Scanner und erwarten Sie, dass jemand alles für Sie noch einmal überprüft. Bitte beachten Sie, dass es sich bei diesem Projekt um ein OSS-Projekt handelt und die Leute in gutem Glauben und im Rahmen der Zeit antworten. Wenn Sie weitere Hilfe benötigen oder eine garantierte Reaktionszeit wünschen, sollten Sie einen Vertrag mit einem kommerziellen Build-Paket-Anbieter in Betracht ziehen.

Golang-Dateien können nicht gelöscht werden, es handelt sich im Wesentlichen um Build-Pakete.

Was Sie tun können:

Halten Sie Ihre Builder und Buildpacks auf dem neuesten Stand. Das Paketo-Projekt veröffentlicht jede Woche neue Versionen und wir halten Go aktiv auf dem neuesten Stand, sodass neue Versionen alle aktuellen Korrekturen enthalten.
  1. Suchen Sie nach gemeldeten CVEs. Wenn Sie auf dem Laufenden bleiben, sollten es nicht viele sein. Angesichts des Kontexts, in dem die Paketbinärdateien erstellt werden (siehe oben), sind sie höchstwahrscheinlich irrelevant, und Sie können den Scanner dann anweisen, sie zu ignorieren. Sie sollten bald gehen, denn 1. )
  2. Da Sie die Spring Boot-Build-Tools verwenden, stellen Sie bitte sicher, dass Sie
  3. diese Ankündigung
  4. gesehen und die erforderlichen Änderungen vorgenommen haben. Wenn Sie dies nicht tun, werden Sie auf jeden Fall viele CVEs erhalten, da Sie über sehr alte Build-Pakete verfügen.

Das obige ist der detaillierte Inhalt vonGolang-Pakete mit Spring Boot 3 bootBuildImage erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage