Dokumen ini menjelaskan cara mengaktifkan Container Scanning API, mengirim image ke Artifact Registry, dan melihat daftar kerentanan yang ditemukan dalam image.
Artifact Analysis menyimpan informasi kerentanan sebagai catatan. Kemunculan dibuat untuk setiap instance catatan yang terkait dengan gambar. Lihat dokumen ringkasan dan harga untuk mengetahui informasi selengkapnya.
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
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 di Artifact Registry dan kirimkan paket dengan kode aplikasi Anda ke repositori. Jika Anda belum terbiasa mengelola paket di Artifact Registry, lihat topik berikut:
Mengaktifkan API ini juga akan mengaktifkan pemindaian paket bahasa di Artifact Registry. Lihat jenis paket yang didukung.
Melihat kerentanan paket
Artifact Analysis memindai paket baru saat diupload ke Artifact Registry. Pemindaian ini mengekstrak informasi tentang paket dan dependensinya.
Anda dapat melihat kemunculan kerentanan untuk image Anda di Artifact Registry menggunakan konsol Google Cloud , Google Cloud CLI, atau Container Analysis API. Jika gambar memiliki kerentanan, Anda dapat memperoleh detailnya.
Analisis Artefak terus memindai gambar dan paket selama gambar dan paket tersebut telah ditarik dalam 30 hari terakhir. Setelah 30 hari, metadata untuk gambar dan paket yang dipindai tidak akan diperbarui lagi, dan hasilnya akan menjadi tidak valid.
Artifact Analysis mengarsipkan metadata yang sudah tidak aktif selama lebih dari 90 hari. Metadata yang diarsipkan ini hanya dapat dievaluasi menggunakan API. Anda dapat memindai ulang gambar dengan metadata yang tidak berlaku atau diarsipkan dengan menarik gambar tersebut. Memperbarui metadata dapat memerlukan waktu hingga 24 jam. Paket dengan metadata yang tidak berlaku atau diarsipkan tidak dapat dipindai ulang.
Melihat kemunculan di konsol Google Cloud
Untuk melihat kerentanan dalam paket:
Dapatkan daftar repositori.
Di daftar repositori, klik repositori.
Di daftar paket, klik nama paket.
Jumlah total kerentanan untuk setiap paket ditampilkan di kolom Kerentanan.

Untuk melihat daftar kerentanan suatu paket, 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. Konsol Google Cloud menampilkan hingga 1.200 kerentanan per halaman dalam tabel ini.
Untuk mengetahui detail CVE tertentu, klik nama CVE.
Untuk melihat detail kemunculan kerentanan seperti nomor versi dan lokasi yang terpengaruh, di baris dengan nama kerentanan, klik Lihat atau Lihat yang Diperbaiki di baris dengan nama kerentanan. Teks link adalah Lihat untuk kerentanan tanpa perbaikan, dan Lihat yang Diperbaiki untuk kerentanan yang telah diperbaiki.
Melihat kemunculan menggunakan gcloud
Untuk melihat kemunculan paket di Artifact Registry, jalankan perintah
gcloud artifacts versions describe:
gcloud artifacts versions describe VERSION \
--location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability
Dengan:
- VERSION adalah versi paket yang kemunculannya sedang Anda lihat.
- LOCATION adalah lokasi repositori regional atau multi-regional.
- REPOSITORY adalah nama repositori tempat paket disimpan.
- PACKAGE adalah nama paket di repositori. Anda tidak dapat menentukan tag paket dengan perintah ini.
Melihat kemunculan menggunakan API
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
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 jenis tertentu
Anda dapat menggunakan nilai kind untuk memfilter menurut jenis kemunculan. Lihat
jenis yang tersedia.
Contoh berikut menunjukkan cara memfilter kemunculan kerentanan paket:
gcloud
Pemfilteran kemunculan tidak didukung di Google Cloud CLI untuk pemindaian berbasis paket.
API
Dalam kueri API Anda, gunakan ekspresi filter berikut:
kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"
Dengan:
PACKAGE_VULNERABILITYadalah jenis kejadian.- RESOURCE_URL adalah URL lengkap paket dalam format
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID:- PROJECT_ID adalah project ID konsol Google Cloud Anda.
- LOCATION adalah lokasi repositori regional atau multi-regional.
- REPOSITORY adalah nama repositori tempat image disimpan.
- PACKAGE_ID adalah nama paket tempat gambar disimpan.
- PACKAGE_TYPE adalah jenis paket bahasa aplikasi.
Jenis yang tersedia adalah:
pythonPackages,mavenArtifacts, dannpmPackages. - VERSION adalah nomor versi paket.
Anda dapat menggunakan fungsi hasPrefix untuk memfilter dengan cakupan yang lebih luas.
Misalnya, filter berikut untuk kemunculan jenis tertentu di beberapa versi paket yang sama:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
Dengan:
- RESOURCE_URL_PREFIX menentukan substring dari URL resource.
- Untuk memfilter semua versi paket, hilangkan versinya. Gunakan format:
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID - Untuk memfilter semua paket dalam project, cukup tentukan lokasi resource dan project. Gunakan format:
projects/PROJECT_ID/locations/LOCATION
- Untuk memfilter semua versi paket, hilangkan versinya. Gunakan format:
Melihat kemunculan kerentanan
Anda dapat melihat daftar kemunculan kerentanan menggunakan gcloud CLI atau Artifact Analysis API.
gcloud
Untuk mengambil daftar kemunculan kerentanan untuk paket, gunakan tanda
--show-package-vulnerability:
gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
--package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability
Dengan:
- VERSION adalah nomor versi paket.
- REPOSITORY adalah nama repositori tempat paket disimpan.
- GROUP_ID adalah ID grup paket Anda.
- ARTIFACT_ID adalah ID artefak paket Anda.
API
Dalam kueri API Anda, gunakan ekspresi filter berikut:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Dengan:
- ENCODED_RESOURCE_URL adalah jalur yang dienkode ke gambar Anda. Untuk mempelajari encoding, lihat Encoding URL.
Untuk mengetahui informasi selengkapnya tentang penggunaan API, lihat
projects.occurrences.get.
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:
gcloud
Pemfilteran kemunculan tidak didukung di Google Cloud CLI untuk pemindaian berbasis paket.
API
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=noteProjectId%3D%22goog-vulnz%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22%20AND%20noteId%3D%22NOTE_ID%22
Dengan:
goog-vulnzadalahPROVIDER_PROJECT_IDuntuk analisis kerentanan Artifact Analysis. Jika Anda menggunakan Analisis Artefak dalam project kustom, Anda dapat mengganti nilai ini dengan project ID penyedia Anda sendiri.- ENCODED_RESOURCE_URL adalah jalur yang dienkode ke gambar Anda. Untuk mempelajari encoding, lihat Encoding URL.
- NOTE_ID adalah ID catatan. Misalnya, saat Anda melihat kerentanan dalam hasil pemindaian Artifact Analysis, kerentanan tersebut sering kali menggunakan format ID CVE yang mirip dengan
CVE-2019-12345.
Untuk memeriksa gambar tertentu untuk catatan tertentu, gunakan ekspresi filter berikut:
gcloud
Pemfilteran kemunculan tidak didukung di Google Cloud CLI untuk pemindaian berbasis paket.
API
Dalam kueri API, tambahkan ekspresi filter berikut:
resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \ AND noteId="NOTE_ID"
Dengan:
- RESOURCE_URL adalah URL lengkap paket dalam format
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID. goog-vulnzadalahPROVIDER_PROJECT_IDuntuk analisis kerentanan Artifact Analysis.- NOTE_ID adalah ID catatan. Catatan terkait keamanan sering kali
diformat sebagai
CVE-2019-12345.
Langkah berikutnya
- Gunakan notifikasi Pub/Sub untuk mendapatkan notifikasi tentang kerentanan dan metadata lainnya.