GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Mengindeks Dependensi Gambar Docker Anda Dengan Syft

Syft adalah utilitas CLI yang menghasilkan Software Bill of Materials (SBOM) untuk gambar kontainer. SBOM adalah katalog dependensi yang digunakan oleh gambar Anda. Ini memberi Anda visibilitas ke "materi" yang membentuk sistem file gambar Anda.

Memproduksi SBOM dapat membantu Anda mengidentifikasi rantai pasokan paket yang terlalu rumit yang menempatkan Anda pada risiko serangan kebingungan ketergantungan. Mendistribusikan SBOM di samping gambar Anda memberi tahu pengguna tentang apa yang ada di bawah permukaan. Ini memberikan titik awal yang berguna saat memperketat keamanan rantai pasokan.

Syft dikembangkan oleh Anchore yang juga menawarkan mesin pemindai kontainer lengkap. Syft CLI mampu mengekstrak daftar paket dari gambar menggunakan sistem operasi populer dan bahasa pemrograman. Gambar Docker dan OCI didukung.

Menginstal Syft

Skrip penginstalan tersedia untuk mengunduh biner Syft terbaru dan menambahkannya ke jalur Anda:

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

Pengguna Mac juga bisa mendapatkan Syft dari Homebrew dengan menambahkan anchore/syft repositori dan menginstal syft paket.

Setelah Anda mendapatkan Syft di sistem Anda, jalankan syft di terminal Anda untuk menampilkan perintah yang tersedia. Anda dapat membuat penyelesaian untuk shell Anda dengan menjalankan syft completion .

Gunakan syft version untuk menemukan versi penginstalan Anda. Periksa halaman tag GitHub secara berkala untuk menemukan rilis baru, lalu gunakan kembali skrip penginstalan untuk mengunduh setiap pembaruan.

Memindai Gambar

Fungsionalitas Syft saat ini diekspos oleh satu sub-perintah, syft packages . Berikan tag gambar untuk menghasilkan SBOM untuk:

syft packages alpine:latest

Syft akan mengunduh gambar, memindai isinya, dan membuat katalog paket yang ditemukan. Outputnya akan ditampilkan sebagai tabel di terminal Anda. Setiap hasil menyertakan nama, versi, dan jenis paket yang terdeteksi.

Daftar paket untuk gambar ini pendek. Karena ini adalah gambar dasar Alpine, paket yang diinstal sengaja disederhanakan untuk memberikan permukaan sekecil mungkin. Gambar yang lebih besar dapat berisi ratusan atau ribuan paket dalam beberapa format berbeda. Akan sangat membantu untuk menggabungkan Syft dengan alat terminal Unix yang ada seperti grep dan awk untuk mengekstrak data yang Anda cari.

syft packages example-image:latest | grep example-package-to-find

Jenis Paket yang Didukung

Syft mendukung banyak format paket populer di seluruh sistem operasi dan bahasa pemrograman terkemuka. Daftar tersebut meliputi:

  • APK (Alpine), DEB (Debian), dan RPM Paket OS (Fedora).
  • Identifikasi distribusi Linux di Alpine, CentOS, Debian, dan RHEL.
  • Buka modul
  • Java diJAR , EAR , dan WAR variasi
  • Paket NPM dan Benang
  • Roda Piton dan Telur
  • Paket Ruby

Meskipun tidak semua bahasa tercakup, Anda tetap mendapat manfaat dari pemindaian tingkat OS terlepas dari tumpukan pilihan aplikasi Anda.

Mengubah Format Output

Format keluaran default disebut table . Itu membuat tabel hasil berbasis kolom di terminal Anda, membuat baris baru untuk setiap paket yang terdeteksi. Format alternatif yang dapat dibaca manusia adalah text yang menyajikan daftar paket dengan Version dan Type bidang bersarang di bawah setiap bagian.

Syft juga mendukung beberapa format terprogram:

  • json – Simpan data paket ke struktur JSON.
  • cyclonedx – Laporan CycloneDX dalam format XML.
  • spdx dan spdx-json – Laporan yang kompatibel dengan SPDX dalam format nilai tag atau JSON.

Menggunakan salah satu laporan ini memungkinkan Anda mengarsipkan temuan ke file untuk referensi nanti:

syft packages alpine:latest -o json > alpine-packages.json

Format CycloneDX dan SPDX standar dapat membantu mengintegrasikan pemindaian Syft ke dalam saluran CI/CD Anda. Data dapat diakses oleh alat ekosistem lain yang berfungsi dengan daftar paket dan hasil SBOM.

Syft juga terintegrasi dengan Grype, pencari kerentanan sistem file kontainer mandiri Anchore. Data dari Syft dapat dimasukkan langsung ke Grype jika Anda menggunakan format output JSON.

syft packages example-image:latest -o json > sbom.json
grype sbom:./sbom.json

Grype akan membandingkan daftar paket dengan indeks kerentanan yang diketahui. Ini akan menyoroti paket yang berisi masalah, memberi Anda titik awal langsung untuk meningkatkan postur keamanan Anda.

Menggunakan Sumber Gambar Lain

Syft dapat menggunakan gambar dari sumber lain selain registri Docker publik. Anda dapat mereferensikan gambar yang sesuai dengan OCI, baik melalui tag registri atau sebagai tar gambar yang disimpan. Jalur ke arsip gambar dapat diserahkan langsung ke Syft:

docker image save my-image:latest > my-image.tar
syft packages ./my-image.tar

Syft juga bekerja dengan registry Docker pribadi. Ini menggunakan kredensial Anda yang ada di ~/.docker/config.json Anda berkas:

{
    "auths": {
        "registry.example.com": {
            "username": "",
            "password": ""
        }
    }
}

Meskipun Syft berfokus pada pemindaian gambar kontainer, Syft juga dapat membuat SBOM untuk jalur sistem file arbitrer. Anda dapat menggunakan Syft untuk mengindeks paket host Anda dengan memindai direktori yang biasanya berisi binari dan pustaka perangkat lunak:

syft packages dir:/usr/bin

Anda harus secara eksplisit menambahkan dir: skema jika Anda mereferensikan jalur di luar direktori kerja Anda. Jika tidak, Syft akan mencoba menafsirkannya sebagai referensi tag gambar.

Kesimpulan

Syft mengekstrak daftar paket dari gambar wadah Anda. Data yang dihasilkan bertindak sebagai SBOM untuk gambar Anda, meningkatkan kesadaran Anda tentang panjang rantai pasokan Anda.

Syft didistribusikan sebagai biner tunggal yang menghasilkan laporan dalam beberapa format berbeda. Ini dapat dengan mudah diintegrasikan ke dalam sistem CI/CD untuk mengunggah artefak SBOM sebagai bagian dari alur pembuatan gambar Anda. Hal ini meningkatkan akuntabilitas dan membantu jejak audit dengan merekam daftar perangkat lunak lengkap setiap gambar pada saat diproduksi.

Menambahkan pemindaian Syft ke alur kerja Anda membuat Anda tetap mendapat informasi tentang paket yang Anda gunakan. Setelah Anda mendapatkan informasi ini, Anda dapat mulai menilai setiap paket untuk menentukan apakah itu benar-benar dibutuhkan. Jika Anda menemukan banyak paket yang tidak digunakan oleh beban kerja Anda, pertimbangkan untuk beralih ke gambar dasar minimal dan hanya melapisi perangkat lunak penting di atasnya.


Docker
  1. Cara Menginstal Jenkins dengan Docker

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menyebarkan Aplikasi dengan Rancher

  1. Cara Menggunakan Dockerfile untuk Membangun Gambar Docker

  2. Cara Mengemas dan Mentransfer Gambar Docker Dari Satu Server ke Server Lainnya

  3. Cara Berbagi Gambar Docker Dengan Orang Lain

  1. Cara Memodifikasi Gambar Docker

  2. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  3. Cara melakukan perubahan pada gambar Docker