Saat Anda mendengar tentang kerentanan baru, bertindak cepat adalah hal yang penting. Halaman ini menyediakan daftar panggilan dan filter API penting yang telah dibuat sebelumnya untuk Anda. Gunakan panggilan API ini untuk mengambil hasil pemindaian dari Analisis Artefak dan mengumpulkan informasi tentang status artefak Anda.
Konten ini dirancang untuk digunakan dengan metadata pemindaian otomatis. Jika gambar Anda telah melampaui jangka waktu 30 hari analisis berkelanjutan, Anda dapat menjalankan pemindaian baru dengan mengirimkan lagi ke Artifact Registry.
Semua contoh di halaman ini mengakses API secara langsung, tetapi Anda juga dapat menggunakan library klien Analisis Kontainer, atau perintah gcloud.
Izin yang diperlukan
Semua contoh ini menggunakan metode API ListOccurrences
. Untuk memanggil metode ini, Anda memerlukan peran Container Analysis Occurrences Viewer
(roles/containeranalysis.occurrences.viewer)
untuk project yang Anda analisis.
Jika Anda menganalisis project yang Anda miliki, Anda sudah memiliki izin yang diperlukan.
Jika Anda menganalisis project yang bukan milik Anda, gunakan petunjuk pengelolaan akses IAM untuk memberikan izin.
Untuk mengetahui informasi selengkapnya tentang jenis akses bagi penyedia dan pelanggan yang menggunakan Analisis Artefak, lihat izin.
Melihat semua metadata kerentanan untuk image
Gunakan filter kind=VULNERABILITY
dengan project ID dan URL resource lengkap untuk gambar Anda, termasuk https://
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- RESOURCE_URL adalah URL lengkap gambar, dalam format:
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
harus disertakan di awal URL. Jika perlu menemukan URL gambar, Anda dapat menggunakan panggilan di bagian Melihat semua metadata untuk project.
Output mencakup daftar kerentanan dengan detail seperti tingkat keparahan, opsi mitigasi jika tersedia, dan nama paket yang berisi kerentanan.
Memeriksa kerentanan tertentu dalam project
Dalam sebagian besar kasus, Analisis Artefak menggunakan ID CVE sebagai ID kerentanan. Namun, ada beberapa kerentanan yang tercantum dalam GitHub Advisory Database yang tidak memiliki ID CVE terkait. Dalam hal ini, Analisis Artefak menggunakan ID GHSA.
ID kerentanan disertakan sebagai bagian dari kolom noteName
. Dimulai dengan
prefiks CVE
untuk ID CVE, dan GHSA
untuk ID GHSA. Pertimbangkan contoh output berikut dari menjalankan perintah untuk melihat semua kerentanan image:
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
Dalam contoh ini, kerentanan pertama memiliki ID CVE-2021-32798
, dan
kerentanan kedua memiliki ID GHSA-884p-74jh-xrg2
.
Setelah memiliki ID kerentanan, Anda dapat menjalankan perintah berikut untuk mengambil daftar image yang terpengaruh dalam project Anda yang memiliki ID kemunculan VULN_ID:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- VULN_ID adalah ID kerentanan sebagai ID CVE atau
nomor ID GHSA, seperti
CVE-2021-32798
atauGHSA-884p-74jh-xrg2
.
Menelusuri kerentanan di beberapa project
Gunakan globbing curl untuk membuat kueri di seluruh project.
Misalnya, cuplikan berikut menetapkan variabel untuk berisi dua project ID, lalu mengirimkan panggilan API untuk setiap project guna menelusuri kemunculan.
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
Dengan:
- PROJECT_ID_1 adalah Google Cloud project ID untuk project pertama yang ingin Anda periksa.
- PROJECT_ID_2 adalah Google Cloud project ID untuk project kedua yang ingin Anda periksa.
Melihat semua metadata untuk project
Minta semua kemunculan yang terkait dengan project ID 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
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
Output mencakup informasi kerentanan dan jenis metadata yang didukung lainnya yang terkait dengan project Anda. Misalnya, project Anda mungkin memiliki detail build atau pengesahan.
Memeriksa paket tertentu dalam project
Analisis Artefak membuat dependensi paket untuk artefak yang dipindai. Untuk menemukan semua artefak yang memiliki paket tertentu sebagai dependensi, Anda dapat memfilter berdasarkan nama paket:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- PACKAGE_NAME adalah nama paket.
Melihat semua metadata paket untuk gambar
Untuk melihat semua jenis metadata paket yang berbeda untuk gambar,
gunakan filter kind=PACKAGE_NAME
dengan ID project
dan URL resource gambar lengkap:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
- RESOURCE_URL adalah URL lengkap gambar, dalam
format
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
harus disertakan di awal URL. Jika Anda perlu menemukan URL untuk gambar, Anda dapat menggunakan panggilan dari Melihat semua metadata untuk project.
Output mencakup daftar dependensi dengan nama, versi, dan informasi lisensi dependensi.
Membuat kueri kemunculan tertentu untuk semua detail yang tersedia
Anda dapat menjalankan kueri untuk mengetahui detail selengkapnya tentang kemunculan. Misalnya, jika Anda menggunakan Pub/Sub untuk mendapatkan notifikasi tentang kemunculan kerentanan, Pub/Sub akan mengirimkan detail dasar untuk membantu Anda mengidentifikasi kemunculan yang berubah dan kapan perubahan tersebut terjadi.
Payload menyertakan ID kemunculan. Anda dapat menggunakan ID kemunculan untuk membuat kueri detail guna membantu Anda memilah masalah dan mengambil tindakan.
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
Dengan:
- PROJECT_ID adalah Google Cloud project ID Anda.
OCCURRENCE_ID dapat berupa salah satu dari berikut, bergantung pada output perintah dari Melihat semua metadata untuk project:
- Nilai numerik dari daftar kemunculan.
- Nilai numerik di akhir URL dari pesan Pub/Sub.
Output mencakup informasi seperti jenis paket, tingkat keparahan kerentanan, skor CVSS, dan informasi tentang perbaikan, jika tersedia.
Langkah berikutnya
- Pelajari lebih lanjut opsi pemfilteran metadata.
- Menjalankan pemindaian manual sesuai permintaan.
- Pelajari praktik terbaik untuk melindungi supply chain software Anda.