Docker sekarang dikirimkan dengan dukungan pemindaian keamanan bawaan. Anda dapat memindai gambar container secara lokal untuk mengidentifikasi kemungkinan kerentanan. Ini mempercepat siklus pengembangan dengan memberikan umpan balik yang lebih cepat dibandingkan dengan pipeline CI dan layanan cloud.
scan
perintah tersedia secara default di Docker versi 20.10. Docker bermitra dengan Snyk untuk menghadirkan pemindaian keamanan ke CLI-nya. Prompt persetujuan satu kali akan muncul saat pertama kali Anda menjalankan perintah. Ketik “y” dan tekan enter untuk mengonfirmasi integrasi Snyk.
Selain menyetujui Snyk, pemindaian kontainer juga memerlukan login Docker Hub. Jalankan docker login
untuk memberikan nama pengguna dan kata sandi Anda sebelum Anda mulai memindai.
Coba jalankan docker scan --version
untuk memeriksa instalasi Anda. Anda akan melihat nomor versi scan
pengaya. Keluaran juga memberi nama penyedia pemindaian keamanan yang scan
akan menggunakan (saat ini Snyk). Penyedia tambahan dapat ditambahkan di masa mendatang.
Cara Kerja Pemindaian
docker scan
menerima nama gambar sebagai parameter. Ini akan memindai gambar terhadap database kerentanan kontainer Snyk. Berbagai masalah tercakup, mulai dari gambar dasar yang usang hingga eksploitasi terhadap pustaka perangkat lunak sumber terbuka yang Anda gunakan.
Snyk dapat menunjukkan kepada Anda Dockerfile
garis yang memperkenalkan kerentanan. Ini memberi Anda titik awal langsung saat Anda menyelesaikan setiap masalah. Hasilnya akan langsung muncul di terminal Anda setelah pemindaian selesai.
Basis data Snyk terus diperbarui dengan kerentanan baru. Jangan berasumsi bahwa gambar yang melewati pemindaian sekali akan selalu mendapatkan hasil yang sama di masa mendatang. Ini adalah praktik yang baik untuk memindai gambar secara teratur agar beban kerja Anda tetap aman.
Memindai Gambar
Cara paling sederhana untuk memindai gambar adalah dengan meneruskan tag ke docker scan
:
docker scan hello-world:latest
Pemindaian mungkin membutuhkan waktu beberapa detik untuk diselesaikan. Gambar yang lebih besar akan membutuhkan lebih banyak waktu. Hasilnya akan ditampilkan di terminal Anda setelah tersedia. Contoh keluaran dari pemindaian yang berhasil ditunjukkan di atas.
Meskipun mendapatkan semuanya dengan jelas mungkin menyenangkan, docker scan
output jauh lebih menarik ketika kerentanan terdeteksi. Berikut pemindaian yang menemukan beberapa masalah.
Setiap masalah memiliki deskripsi singkat, indikasi tingkat keparahannya, dan tautan untuk mendapatkan informasi lebih lanjut di situs web Snyk.
Pemindaian Lebih Lanjut
docker scan
memiliki lebih banyak fungsi daripada contoh dasar di atas. Anda dapat menyesuaikan perilaku pemindaian menggunakan beberapa tanda.
Bisa dibilang, flag yang paling berguna adalah --file
. Ini mengambil jalur ke Dockerfile
gambar . Saat Anda memberikan Dockerfile kepada Snyk, Snyk dapat melakukan analisis yang lebih detail berdasarkan kontennya. Beberapa fitur pemindaian, seperti deteksi gambar dasar yang ketinggalan zaman, hanya tersedia bila Anda menyediakan Dockerfile
gambar Anda .
docker scan hello-world:latest --file Dockerfile
Ini akan menghasilkan output seperti berikut:
Tested 100 dependencies for known issues, found 50 issues. According to our scan, you are currently using the most secure version of the selected base image.
Baris terakhir akan menunjukkan apakah gambar dasar Anda—FROM
instruksi di Dockerfile
. Anda —aman. Saran tag alternatif akan ditampilkan jika gambar sudah usang atau mengandung kerentanan yang telah diatasi.
Terkadang, Anda mungkin ingin menjalankan pemindaian yang mengabaikan kerentanan pada gambar dasar Anda. Lewati --exclude-base
bendera untuk mencapai ini. Ini berguna jika gambar dasar berisi banyak masalah dengan tingkat keparahan rendah dan tidak ada jalur pemutakhiran yang tersedia. Mengecualikan noise membantu Anda fokus pada masalah yang dapat diselesaikan dalam lapisan gambar Anda.
Menyesuaikan Hasil Pemindaian
docker scan
menerima beberapa opsi pemformatan berbeda. Sejauh ini, kita telah melihat output default. Ini menyajikan masalah sebagai daftar yang dapat dibaca manusia di dalam terminal Anda.
Melewati --json
flag menginstruksikan perintah untuk memancarkan JSON mentah yang diterimanya. Ini sangat ideal saat Anda menggunakan docker scan
secara terprogram dalam skrip CI atau alat pihak ketiga. Anda dapat memproses JSON sendiri untuk mengekstrak informasi yang Anda butuhkan saja.
Pilihan lainnya adalah --dependency-tree
. Ini akan memancarkan tampilan hierarki dari dependensi gambar Anda di atas daftar kerentanan. Ini dapat membantu Anda memvisualisasikan bagaimana paket yang berbeda ditarik, memungkinkan Anda menunjukkan dengan tepat di mana masalah muncul.
Terakhir, Anda dapat menggunakan --severity
bendera untuk menyaring kerentanan yang tidak diinginkan. Gunakan low
, medium
, atau high
untuk menunjukkan tingkat keparahan yang Anda minati. Perintah hanya akan melaporkan kerentanan yang dinilai pada atau di atas level yang diberikan.
Batasan
docker scan
saat ini tidak memiliki dukungan untuk distribusi Alpine Linux. Selain itu, plugin versi 0.7 memiliki bug serius yang menyebabkan pemindaian lokal gagal dengan kesalahan "gambar tidak ditemukan". v0.7 hanya dapat memindai gambar yang ada di Docker Hub dan registri publik lainnya. Masalah telah diperbaiki di v0.8, tetapi v0.7 tetap menjadi versi yang didistribusikan secara luas dengan rilis Docker di Linux.
Di luar masalah teknis, layanan Snyk memberlakukan batasan tarif yang ketat pada penggunaan docker scan
Anda . Anda dapat melakukan 10 pemindaian gratis setiap bulan. Jika Anda masuk dengan Snyk, itu meningkat menjadi 200 pemindaian per bulan.
Jalankan docker scan --login
untuk mendapatkan URL login unik Anda. Salin ke browser Anda dan ikuti petunjuk untuk mengautentikasi diri Anda. Anda dapat masuk menggunakan Docker Hub atau beberapa penyedia pihak ketiga. Setelah Anda masuk, tombol "Otentikasi" akan muncul. Klik ini untuk kembali ke terminal Anda. Anda akan melihat pesan “Snyk sekarang siap digunakan”.
Ringkasan
Pemindaian gambar bawaan Docker membuat kerentanan container lebih mudah ditemukan dan diselesaikan. Pengembang mana pun yang memiliki akses ke Docker CLI dan image container sekarang dapat memindai kerentanan tanpa harus mendorong ke registri.
Pemindaian rutin membantu Anda menjaga wadah Anda dari potensi ancaman. Gambar dasar yang usang dan kerentanan dalam dependensi secara signifikan memengaruhi postur keamanan Anda tetapi dapat dengan mudah luput dari perhatian. docker scan
memberi Anda kepercayaan diri yang lebih besar pada penampung Anda dengan mengungkapkan masalah yang sebelumnya Anda abaikan.