GNU/Linux >> Belajar Linux >  >> Linux

DevSecOps:Pemindaian gambar di saluran Anda menggunakan pemindai quay.io

Menurut Sysdig 2021 Container Security and Usage Report, keamanan container menjadi perhatian yang berkembang bagi banyak organisasi. Namun, masih ada beberapa celah. Pemindaian gambar container dan container yang diistimewakan adalah dua aspek yang paling penting.

Wadah tanpa akar Podman (lihat Menjalankan Podman tanpa akar sebagai pengguna non-root dan wadah Tanpa akar dengan Podman:Dasar-dasarnya) dan OpenShift Container Platform keduanya menerapkan prinsip hak istimewa paling rendah secara default, yang membantu administrator menerapkan praktik terbaik keamanan. Penawaran registry container Red Hat quay.io dan Red Hat quay membantu administrator dan pengembang menggabungkan pemindaian kerentanan gambar ke dalam pipeline CI/CD mereka.

[ Anda mungkin juga senang membaca: Peningkatan integrasi systemd dengan Podman 2.0 ]

Red Hat mengelola quay.io, registri kontainer publik yang dihosting. Individu atau perusahaan dapat menggunakan registri untuk menyimpan dan berbagi gambar kontainer (dalam organisasi atau masyarakat umum). Red Hat Universal Base Images (UBI) didasarkan pada RHEL dan menawarkan cara untuk membuat dan membagikan gambar aplikasi Anda secara bebas.

Registri memiliki pemindai keamanan bawaan yang memeriksa kerentanan gambar, memberikan detail tentang paket dalam gambar, dan mengidentifikasi kerentanan dengan perbaikan terkait. Ini mengatur kerentanan ke dalam kategori tingkat keparahan Rendah, Sedang, dan Tinggi. Ini juga menyediakan metadata seperti nomor CVE dan tautan ke kesalahan yang terkait dengan kerentanan. Seiring bertambahnya usia gambar kontainer, CVE baru ditemukan, jadi untuk artikel ini, kita akan melihat versi UBI yang lebih lama. Misalnya, pada saat penulisan artikel ini, salah satu build spesifik ubi8 (8.2-299) memiliki output berikut yang menyoroti 178 paket (10 paket dengan dampak Tinggi) dan 38 kerentanan (10 Tinggi).

UI quay.io menyediakan informasi yang terkait dengan kerentanan dalam format yang mudah digunakan. Seseorang dapat menelusuri daftar paket, memeriksa paket yang terpengaruh, dan melihat detail kerentanan. Namun, dengan organisasi yang berfokus pada DevSecOps, informasi ini bermanfaat untuk mendapatkan informasi ini dengan cepat dan menggunakannya sebelum setiap penerapan untuk memastikan bahwa hanya gambar aman yang masuk ke lingkungan produksi.

Artikel ini mengasumsikan beberapa keakraban dasar dengan konsep quay.io seperti repositori, akun robot, dan tugas umum seperti pembuatan gambar (menggunakan DockerFiles) dan penandaan gambar. Jika Anda tertarik untuk mempelajari lebih lanjut tentang konsep ini, Anda dapat merujuk ke Panduan Pengguna quay.io.

Untuk mendapatkan informasi pemindaian melalui baris perintah, gunakan skopeo dan jq perintah. Skopeo memungkinkan pengguna untuk tidak hanya memeriksa gambar tanpa mengunduhnya ke mesin lokal terlebih dahulu, tetapi juga mendukung penyalinan gambar dari satu repositori (lokal atau jarak jauh) ke yang lain.

Perintah berikut akan mengambil metadata gambar yang mirip dengan docker inspect perintah yang dieksekusi terhadap gambar lokal:

# IMAGE_NAME='app-sre/ubi8-ubi'
# IMAGE_TAG='8.2-299'
# skopeo inspect docker://quay.io/$IMAGE_NAME:$IMAGE_TAG

Untuk mendapatkan intisari unik gambar, kita dapat mengurai output json yang diterima menggunakan jq perintah.

# IMAGE_DIGEST=`skopeo inspect docker://quay.io/$IMAGE_NAME:$IMAGE_TAG | jq -r .Digest`

Dengan ringkasan, Anda bisa mendapatkan laporan keamanan untuk gambar dengan membuat kueri ke quay.io API. Kita dapat menyimpan output (file json) dalam file lokal dan menggunakan jq untuk memfilter konten yang diinginkan.

# curl -o `basename $IMAGE_NAME`.json https://quay.io/api/v1/repository/$IMAGE_NAME/manifest/$IMAGE_DIGEST/security?vulnerabilities=true

Misalnya, untuk mendapatkan informasi yang berkaitan dengan kerentanan tingkat keparahan tinggi dengan ID Penasehat terkait, URL Penasihat, Nama Paket, versi yang Terpengaruh, dan versi yang berisi perbaikan, perintah berikut dapat digunakan:

jq '.data.Layer.Features[]' `basename $IMAGE_NAME`.json | jq -c '{"Name":.Name,"Version":.Version,"Advisory":.Vulnerabilities[]} | select(.Advisory.Severity=="High") | {"Advisory":.Advisory.Name,"Link":.Advisory.Link,"PACKAGE":.Name,"CURRENT VERSION":.Version,"FIXED IN VERSION":.Advisory.FixedBy }'

Perintah tersebut menghasilkan output seperti berikut yang menunjukkan bahwa gambar UBI ini (app-sre/ubi8-ubi) memiliki 10 notifikasi pemberitahuan:

{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-tools","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3658","Link":"https://access.redhat.com/errata/RHSA-2020:3658","PACKAGE":"librepo","CURRENT VERSION":"1.11.0-2.el8","FIXED IN VERSION":"0:1.11.0-3.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-libs","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-common","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus-daemon","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}
{"Advisory":"RHSA-2020:2755","Link":"https://access.redhat.com/errata/RHSA-2020:2755","PACKAGE":"libnghttp2","CURRENT VERSION":"1.33.0-1.el8_0.1","FIXED IN VERSION":"0:1.33.0-3.el8_2.1"}
{"Advisory":"RHSA-2020:5476","Link":"https://access.redhat.com/errata/RHSA-2020:5476","PACKAGE":"openssl-libs","CURRENT VERSION":"1:1.1.1c-15.el8","FIXED IN VERSION":"1:1.1.1g-12.el8_3"}
{"Advisory":"RHSA-2020:3658","Link":"https://access.redhat.com/errata/RHSA-2020:3658","PACKAGE":"python3-librepo","CURRENT VERSION":"1.11.0-2.el8","FIXED IN VERSION":"0:1.11.0-3.el8_2"}
{"Advisory":"RHSA-2020:2637","Link":"https://access.redhat.com/errata/RHSA-2020:2637","PACKAGE":"gnutls","CURRENT VERSION":"3.6.8-10.el8_2","FIXED IN VERSION":"0:3.6.8-11.el8_2"}
{"Advisory":"RHSA-2020:3014","Link":"https://access.redhat.com/errata/RHSA-2020:3014","PACKAGE":"dbus","CURRENT VERSION":"1:1.12.8-9.el8","FIXED IN VERSION":"1:1.12.8-10.el8_2"}

[ Kursus gratis:Tinjauan Teknis Satelit Red Hat. ] 

Menutup

Di bagian selanjutnya dari rangkaian artikel ini, saya memasukkan informasi dari artikel ini ke dalam alur sampel untuk membuat keputusan yang tepat tentang apakah akan melanjutkan dengan gambar ini dan menerapkan aplikasi ke dalam produksi.


Linux
  1. Cara Menulis Teks Pada Gambar menggunakan Perintah Linux

  2. Menggunakan 'Rufus' untuk meletakkan gambar ISO Anda pada stik USB

  3. Apa yang ada di dalam gambar/wadah Docker?

  1. Bangun wadah Anda sendiri di Linux

  2. Komit data dalam wadah mysql

  3. Ubuntu:Menggunakan curl untuk mengunduh gambar

  1. Mempercepat pembuatan gambar container dengan Buildah

  2. Menemukan perangkat jahat di jaringan Anda menggunakan Nmap

  3. Cara meringankan beban pada registri kontainer Anda menggunakan Quay.io