Dalam dokumen ini, Anda akan mempelajari cara mengaktifkan Container Scanning API, mengirim image ke Artifact Registry, dan melihat daftar kerentanan yang ditemukan dalam image.
Artifact Analysis memberikan informasi kerentanan untuk image container di Artifact Registry dan Container Registry (Tidak digunakan lagi). Metadata disimpan sebagai [notes][notes]. Kemunculan dibuat untuk setiap instance catatan yang terkait dengan gambar. Lihat dokumen ringkasan dan harga untuk mengetahui informasi selengkapnya.
Mengaktifkan API ini juga akan mengaktifkan pemindaian paket bahasa di Artifact Registry. Lihat jenis paket yang didukung.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Buat repositori Docker di Artifact Registry dan kirim image container ke repositori. Jika Anda belum terbiasa dengan Artifact Registry, lihat Panduan memulai Docker.
Dapatkan daftar repositori.
Di daftar repositori, klik repositori.
Di daftar gambar, klik nama gambar.
Jumlah total kerentanan untuk setiap ringkasan gambar ditampilkan di kolom Kerentanan.
Untuk melihat daftar kerentanan pada image, klik link di kolom Kerentanan.
Bagian Hasil pemindaian menampilkan ringkasan jenis paket yang dipindai, total kerentanan, kerentanan dengan perbaikan yang tersedia, kerentanan tanpa perbaikan, dan tingkat keparahan efektif.
Tabel kerentanan mencantumkan nama Kerentanan dan Eksposur Umum (CVE) untuk setiap kerentanan yang ditemukan, tingkat keparahan efektif, skor Sistem Penskoran Kerentanan Umum (CVSS), perbaikan (jika tersedia), nama paket yang berisi kerentanan, dan jenis paket.
Anda dapat memfilter dan mengurutkan file ini untuk memeriksa file, direktori, atau jenis file tertentu menurut ekstensi file.
Google Cloud menampilkan hingga 1.200 kerentanan dalam tabel ini. Jika image Anda memiliki lebih dari 1.200 kerentanan, Anda harus menggunakan gcloud atau API untuk melihat daftar lengkapnya.
Untuk mengetahui detail CVE tertentu, klik nama CVE.
Untuk melihat detail kemunculan kerentanan seperti nomor versi dan lokasi yang terpengaruh, klik Lihat atau Lihat yang Diperbaiki di baris dengan nama kerentanan. Teks link adalah Lihat untuk kerentanan tanpa perbaikan, dan Lihat yang Sudah Diperbaiki untuk kerentanan yang telah diperbaiki.
- LOCATION adalah lokasi repositori regional atau multi-regional.
- PROJECT_ID adalah Google Cloud project ID Anda.
- REPOSITORY adalah nama repositori tempat image disimpan.
- IMAGE_ID adalah nama image di repositori. Anda tidak dapat menentukan tag gambar dengan perintah ini.
- HOSTNAME adalah nama host multi-regional:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
- PROJECT_ID adalah ID project yang berisi image.
- IMAGE_ID adalah ID gambar yang ingin Anda lihat kerentanannya. Anda tidak dapat menentukan tag gambar dengan perintah ini.
- LOCATION adalah lokasi repositori regional atau multi-regional.
- PROJECT_ID adalah Google Cloud project ID Anda.
- REPOSITORY adalah nama repositori tempat image disimpan.
- IMAGE_ID adalah nama image di repositori.
- TAG adalah tag gambar yang ingin Anda dapatkan informasinya.
- HASH adalah ringkasan gambar.
- HOSTNAME adalah nama host multi-regional:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
- PROJECT_ID adalah ID project yang berisi image.
- IMAGE_ID adalah ID gambar yang ingin Anda lihat kerentanannya.
- HASH adalah ringkasan gambar.
- LOCATION adalah lokasi repositori regional atau multi-regional.
- PROJECT_ID adalah Google Cloud project ID Anda.
- REPOSITORY adalah nama repositori tempat image disimpan.
- IMAGE_ID adalah nama image di repositori.
- FILTER_EXPRESSION adalah contoh ekspresi filter dalam format yang dijelaskan di Memfilter kemunculan kerentanan.
- HOSTNAME adalah nama host multi-regional:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
- PROJECT_ID adalah ID project yang berisi image.
- IMAGE_ID adalah ID image yang ingin Anda lihat kemunculan kerentanannya.
- FILTER_EXPRESSION adalah contoh ekspresi filter dalam format yang dijelaskan di Memfilter kemunculan kerentanan.
- NOTE_KIND adalah
jenis catatan.
- Misalnya, gunakan jenis
DISCOVERY
untuk mencantumkan kemunculan penemuan. Ringkasan ini dibuat untuk image saat pertama kali dikirim ke Container Registry. - Untuk mencantumkan kemunculan kerentanan, gunakan jenis
VULNERABILITY
.
- Misalnya, gunakan jenis
-
RESOURCE_URL adalah URL lengkap gambar
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
- RESOURCE_URL_PREFIX adalah awalan URL untuk beberapa gambar
- Untuk mencantumkan semua versi gambar:
https://HOSTNAME/PROJECT_ID/IMAGE_ID@
- Untuk mencantumkan semua gambar dalam project:
https://HOSTNAME/PROJECT_ID/
- Untuk mencantumkan semua versi gambar:
- PROVIDER_PROJECT_ID adalah ID project penyedia. Misalnya,
goog-vulnz
menyediakan analisis kerentanan default. - NOTE_ID adalah ID catatan. Catatan terkait keamanan sering kali
diformat sebagai
CVE-2019-12345
. -
RESOURCE_URL adalah URL lengkap gambar
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
Gunakan notifikasi Pub/Sub untuk mendapatkan notifikasi tentang kerentanan dan metadata lainnya.
Buat pengesahan dengan mengintegrasikan Artifact Analysis dengan Otorisasi Biner untuk mencegah image container dengan masalah keamanan yang diketahui berjalan di lingkungan deployment Anda.
Melihat kerentanan gambar
Artifact Analysis memindai image baru saat diupload ke Artifact Registry. Pemindaian ini mengekstrak informasi tentang paket sistem dalam container.
Anda dapat melihat kemunculan kerentanan untuk image di registri menggunakan konsol Google Cloud , Google Cloud CLI, atau Container Analysis API. Jika gambar memiliki kerentanan, Anda dapat memperoleh detailnya.
Analisis Artefak hanya memperbarui metadata untuk gambar yang di-push atau ditarik dalam 30 hari terakhir. Setelah 30 hari, metadata tidak akan diperbarui lagi, dan hasilnya akan menjadi tidak valid. Selain itu, Analisis Artefak mengarsipkan metadata yang sudah tidak berlaku selama lebih dari 90 hari, dan metadata tersebut tidak akan tersedia di konsol Google Cloud , gcloud, atau menggunakan API. Untuk memindai ulang gambar dengan metadata yang tidak berlaku atau diarsipkan, tarik gambar tersebut. Memperbarui metadata dapat memerlukan waktu hingga 24 jam.
Melihat kemunculan di konsol Google Cloud
Untuk melihat kerentanan dalam image:
Melihat kemunculan menggunakan gcloud
Untuk melihat kemunculan gambar:
Artifact Registry
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Dengan:
Secara default, perintah ini menampilkan 10 gambar terbaru. Untuk menampilkan
jumlah gambar yang berbeda, gunakan tanda --show-occurrences-from
.
Misalnya, perintah berikut menampilkan 25 gambar terbaru.
gcloud artifacts docker images list --show-occurrences-from=25 \
us-central1-docker.pkg.dev/my-project/my-repo/my-image
Container Registry
gcloud beta container images list-tags \
HOSTNAME/PROJECT_ID/IMAGE_ID
Dengan:
Secara default, perintah ini menampilkan 10 gambar terbaru. Untuk menampilkan
jumlah gambar yang berbeda, gunakan tanda --show-occurrences-from
.
Misalnya, perintah ini menampilkan 25 image terbaru.
gcloud beta container images list-tags --show-occurrences-from=25 \
gcr.io/my-project/my-image
Untuk melihat kerentanan pada tag gambar atau lapisan:
Artifact Registry
gcloud artifacts docker images describe \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID:TAG \
--show-package-vulnerability
atau
gcloud artifacts docker images describe \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH \
--show-package-vulnerability
Dengan:
Container Registry
gcloud beta container images describe HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH \
--show-package-vulnerability
Dengan:
Untuk memfilter kemunculan kerentanan:
Artifact Registry
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID --occurrence-filter=FILTER_EXPRESSION
Dengan:
Container Registry
gcloud beta container images list-tags \
HOSTNAME/PROJECT_ID/IMAGE_ID --occurrence-filter=FILTER_EXPRESSION
Dengan:
Melihat kemunculan menggunakan API atau kode
Untuk melihat kemunculan gambar, gunakan cuplikan yang sesuai. Cuplikan kode menentukan URL untuk image di Container Registry. Jika Anda menggunakan Artifact Registry, tentukan gambar dengan URL dalam format:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
API
Menggunakan cURL
Untuk mendapatkan daftar kemunculan dalam project Anda:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Untuk mendapatkan ringkasan kerentanan dalam project Anda:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences:vulnerabilitySummary
Untuk mendapatkan detail tentang kemunculan tertentu:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Melihat kemunculan di Cloud Build
Jika menggunakan Cloud Build, Anda juga dapat melihat kerentanan image di panel samping Insight keamanan dalam konsol Google Cloud .
Panel samping Insight keamanan memberikan ringkasan tingkat tinggi informasi keamanan build untuk artefak yang disimpan di Artifact Registry. Untuk mempelajari lebih lanjut panel samping dan cara menggunakan Cloud Build untuk membantu melindungi supply chain software Anda, lihat Melihat insight keamanan build.
Memfilter kemunculan
Anda dapat menggunakan string filter dalam perintah gcloud
dan Artifact Analysis API untuk memfilter kemunculan sebelum melihatnya. Bagian berikut menjelaskan filter penelusuran yang didukung.
Melihat kemunculan penemuan
Saat image pertama kali dikirim ke Container Registry, image akan membuat kejadian penemuan, yang berisi informasi tentang pemindaian awal image container.
Untuk mengambil temuan penemuan untuk gambar, gunakan ekspresi filter berikut:
kind="DISCOVERY" AND resourceUrl="RESOURCE_URL"
Cuplikan berikut menunjukkan cara menggunakan ekspresi filter untuk melihat kemunculan penemuan untuk gambar. Cuplikan kode menentukan URL untuk image di Container Registry. Jika Anda menggunakan Artifact Registry, tentukan gambar dengan URL dalam format:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
gcloud
Untuk melihat kemunculan penemuan gambar:
Dalam hal ini, ekspresi tidak digunakan secara langsung dalam perintah, tetapi informasi yang sama diteruskan sebagai argumen:
Artifact Registry:
gcloud artifacts docker images list --show-occurrences \
--occurrence-filter='kind="DISCOVERY"' --format=json \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Container Registry:
gcloud beta container images list-tags \
--occurrence-filter='kind="DISCOVERY"' --format=json HOSTNAME/PROJECT_ID/IMAGE_ID
API
Untuk mengambil kemunculan penemuan, ekspresi filter Anda harus dienkode URL dan disematkan dalam permintaan GET
sebagai berikut:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22DISCOVERY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Lihat endpoint API projects.occurrences.get
untuk mengetahui detail selengkapnya.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Melihat kemunculan kerentanan
Untuk melihat kemunculan kerentanan untuk image tertentu, buat kueri dengan ekspresi filter:
kind="VULNERABILITY" AND resourceUrl="RESOURCE_URL"
Cuplikan berikut menunjukkan cara mengambil daftar kemunculan kerentanan untuk sebuah image. Cuplikan kode menentukan URL untuk image di Container Registry. Jika Anda menggunakan Artifact Registry, tentukan gambar dengan URL dalam format:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
gcloud
Untuk melihat kemunculan kerentanan pada gambar:
Dalam hal ini, ekspresi tidak digunakan secara langsung dalam perintah, tetapi informasi yang sama diteruskan sebagai argumen:
Artifact Registry
gcloud artifacts docker images list --show-occurrences \
--occurrence-filter='kind="VULNERABILITY"' --format=json \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Container Registry
gcloud beta container images list-tags \
--occurrence-filter='kind="VULNERABILITY"' --format=json HOSTNAME/PROJECT_ID/IMAGE_ID
API
URL resource harus dienkode ke URL, dan disematkan dalam permintaan GET sebagai berikut:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Lihat endpoint API projects.occurrences.get
untuk mengetahui detail selengkapnya.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Artifact Analysis, lihat library klien Artifact Analysis. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Artifact Analysis.
Untuk melakukan autentikasi ke Artifact Analysis, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Melihat kemunculan jenis tertentu
Dalam dua contoh sebelumnya, satu-satunya perbedaan antara ekspresi filter
adalah nilai kind
, yang mengidentifikasi jenis kemunculan. Gunakan
kolom ini untuk membatasi daftar kemunculan ke jenis tertentu, seperti
kerentanan atau deployment.
Untuk mengambil kemunculan gambar tertentu, gunakan ekspresi filter ini:
kind="NOTE_KIND" AND resourceUrl="RESOURCE_URL"
Dengan:
Ekspresi filter untuk mengambil kemunculan jenis tertentu di banyak gambar adalah:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
Dengan:
Melihat gambar yang terkait dengan catatan tertentu
Anda dapat mengambil daftar resource yang terkait dengan ID catatan tertentu. Misalnya, Anda dapat mencantumkan gambar dengan kerentanan CVE tertentu.
Untuk mencantumkan semua gambar dalam project yang terkait dengan catatan tertentu, gunakan ekspresi filter berikut:
noteProjectId="PROVIDER_PROJECT_ID" AND noteId="NOTE_ID"
Untuk memeriksa gambar tertentu untuk catatan tertentu, gunakan ekspresi filter berikut:
resourceUrl="RESOURCE_URL" AND noteProjectId="PROVIDER_PROJECT_ID" \ AND noteId="NOTE_ID"
Dengan:
Misalnya, untuk memeriksa semua gambar yang memiliki kemunculan CVE-2017-16231 seperti yang dianalisis oleh Google, gunakan ekspresi filter berikut:
noteProjectId="goog-vulnz" AND noteId="CVE-2017-16231"