Membina pakej Golang menggunakan Spring Boot 3 bootBuildImage?

PHPz
Lepaskan: 2024-02-06 08:33:13
ke hadapan
838 orang telah melayarinya

使用 Spring Boot 3 bootBuildImage 构建 Golang 包?

Kandungan soalan

Saya menggunakan spring boot v3.1.5 dan menggunakan bootBuildImage untuk membina imej saya. Selepas mengimbas imej saya, saya dapati banyak CVE yang berkaitan dengan golang. Setakat yang saya faham, beberapa pakej binaan golang digunakan semasa proses pembinaan imej.

Adakah cara untuk menyelesaikan masalah ini? Bolehkah saya mengkonfigurasi spring untuk mengelak daripada menggunakan pakej ini?

Saya cuba mengkonfigurasi buildpack yang digunakan tetapi tidak berjaya. Saya mahu mempunyai fail berkaitan sifar golang dalam imej yang saya buat.


Jawapan betul


Sangat bagus!

Tidak, itu tidak betul. Apabila anda membina aplikasi Java, ia hanya menggunakan pakej binaan berkaitan Java. Ia tidak menggunakan sebarang pek binaan Go. Anda boleh melihat senarai pakej binaan yang digunakan dalam output binaan. Ia kelihatan seperti ini. Pek binaan yang disenaraikan dalam instrumentasi ialah satu-satunyayang dipanggil.

===> 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
Salin selepas log masuk

Apa yang mungkin mengelirukan anda ialah semua Paketo buildpacks sendiri ditulis dalam Golang. Jadi jika anda memilih imej buildpack seperti gcr.io/paketo-buildpacks/bellsoft-liberica,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main Inilah yang dipanggil semasa instrumentasi dan binaan, dan apa sebenarnya yang diperlukan untuk membina pakej.

Selain itu, buildpack melakukan beberapa operasi sebelum masa jalan aplikasi dimulakan, seperti mengkonfigurasi tetapan JVM, yang dilakukan oleh lapisan bernama helper 的单独二进制文件(构建包映像的同一目录)执行。与 main 不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper 二进制文件。如果您使用 dive 查看应用程序映像,您可以看到添加 helper Binari dan mengesahkan ini.

Pengimbas anda akan melihat binari ini dan mengimbasnya seperti yang lain. Ia dapat memberitahu daripada perduaan versi Golang yang mencipta perduaan itu, dan dari situ ia memberitahu anda bahawa perduaan mungkin terdedah kepada sebarangCVE yang diketahui untuk versi Go atau lebih tinggi itu.

Pengimbas tidak mempunyai pengetahuan tentang kegunaan binari atau sama ada ia sebenarnya terdedah kepada mana-mana CVE. Saya tidak tahu CVE yang anda maksudkan, tetapi saya boleh memberitahu anda bahawa memandangkan binari Paketo buildpack helper 二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helper ialah CLI, ia berjalan dan biasanya membaca argumen/pembolehubah persekitaran dan kemudian mencetak beberapa teks berstruktur. Itu sahaja, biasanya tiada pelayan, rangkaian atau HTTP diperlukan.

Jika anda mempunyai spesifiksoalan tentang CVE dan kesannya, anda boleh bertanya pada Paketo Slack, tetapi jangan hanya membuang senarai CVE dalam pengimbas di sana dan mengharapkan seseorang menyemak semula segala-galanya untuk anda. Sila ambil perhatian bahawa projek ini ialah projek OSS dan orang ramai akan bertindak balas dengan suci hati dan mengikut masa yang dibenarkan. Jika anda memerlukan lebih banyak bantuan atau mahukan masa respons yang terjamin, maka anda perlu mempertimbangkan untuk membuat kontrak dengan penyedia pakej binaan komersial.

Fail Golang tidak boleh dipadam, ia pada dasarnya adalah pakej binaan.

Apa yang boleh anda lakukan:

  1. Pastikan pembina dan pek bina anda dikemas kini. Projek Paketo memotong keluaran baharu setiap minggu, dan kami secara aktif memastikan Go dikemas kini supaya keluaran baharu mengandungi semua pembetulan terkini.

  2. Semak CVE yang dilaporkan, jika anda mengikuti perkembangan terkini sepatutnya tidak banyak. Memandangkan konteks di mana binari pakej dibina (lihat di atas), ia kemungkinan besar tidak relevan, dan anda kemudian boleh memberitahu pengimbas untuk mengabaikannya. Mereka sepatutnya pergi tidak lama lagi kerana 1. )

  3. Memandangkan anda menggunakan alat binaan Spring Boot, sila pastikan anda telah melihat pengumuman ini dan telah menggunakan perubahan yang diperlukan. Jika anda tidak melakukan ini, anda pasti akan mendapat banyak CVE kerana anda akan mempunyai pakej binaan yang sangat lama.

Atas ialah kandungan terperinci Membina pakej Golang menggunakan Spring Boot 3 bootBuildImage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan