Quando viene segnalata una nuova vulnerabilità, è importante intervenire rapidamente. Questa pagina fornisce un elenco di chiamate API e filtri essenziali precostituiti per te. Utilizza queste chiamate API per recuperare i risultati della scansione da Artifact Analysis e raccogliere informazioni sullo stato dei gli elementi.
Questi contenuti sono progettati per essere utilizzati con i metadati della scansione automatica. Se le tue immagini hanno superato il periodo di 30 giorni della finestra di analisi continua, puoi eseguire una nuova scansione eseguendo nuovamente il push in Artifact Registry.
Tutti gli esempi in questa pagina accedono direttamente all'API, ma puoi anche utilizzare le librerie client di Container Analysis o i comandi gcloud.
Autorizzazioni obbligatorie
Tutti questi esempi utilizzano il metodo dell'API ListOccurrences
. Per chiamare questo metodo,
devi disporre del ruolo Visualizzatore delle occorrenze di Container Analysis
(roles/containeranalysis.occurrences.viewer)
per il progetto che stai analizzando.
Se stai analizzando progetti di tua proprietà, disponi già delle autorizzazioni necessarie.
Se stai analizzando progetti che non sono di tua proprietà, utilizza le istruzioni per la gestione dell'accesso IAM per concedere le autorizzazioni.
Per ulteriori informazioni sui tipi di accesso per i fornitori e i clienti che utilizzano Artifact Analysis, consulta le autorizzazioni.
Visualizzare tutti i metadati delle vulnerabilità di un'immagine
Utilizza il filtro KIND="VULNERABILITY"
con l'ID progetto e l'URL completo della risorsa per l'immagine, incluso 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
Sostituisci quanto segue:
- PROJECT_ID è l'ID del tuo progetto Google Cloud. Per visualizzare un elenco dei tuoi progetti, puoi utilizzare
gcloud projects list
. - RESOURCE_URL è l'URL completo dell'immagine, nel formato:
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Devi utilizzarehttps://
all'inizio dell'URL. Se devi trovare l'URL di un'immagine, puoi utilizzare la chiamata in "Voglio una conoscenza approfondita di tutti i metadati del mio progetto".
L'output include un elenco di vulnerabilità con dettagli quali la gravità, le opzioni di mitigazione, se disponibili, e il nome del pacchetto contenente la vulnerabilità.
Verificare la presenza di una vulnerabilità specifica in un progetto
Nella maggior parte dei casi, Artifact Analysis utilizza l'ID CVE come identificatore della vulnerabilità. Tuttavia, alcune vulnerabilità elencate nel database di avvisi di GitHub non hanno un ID CVE associato. In questo caso, Artifact Analysis utilizza invece l'ID GHSA.
L'ID vulnerabilità è incluso nel campo noteName
. Inizia con il prefisso CVE
per gli ID CVE e GHSA
per gli ID GHSA. Ad esempio, se il seguente output è il risultato dell'esecuzione del comando per visualizzare tutte le vulnerabilità di un'immagine:
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
...
La prima vulnerabilità ha l'ID CVE-2021-32798
, la seconda l'ID
GHSA-884p-74jh-xrg2
.
Ottieni l'identificatore della vulnerabilità.
Utilizza l'ID CVE o l'ID GHSA nella seguente espressione di filtro per recuperare un elenco di immagini interessate:
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
Sostituisci quanto segue:
- PROJECT_ID è il tuo ID progetto Google Cloud. Per visualizzare un elenco dei tuoi progetti, puoi utilizzare
gcloud projects list
. - VULN_ID è l'ID della vulnerabilità. L'ID CVE o il numero di ID GHSA, ad esempio
CVE-2021-32798
oGHSA-884p-74jh-xrg2
.
Ad esempio, la chiamata seguente mostra come recuperare i risultati della ricerca per le immagini del progetto che contengono un'occorrenza di CVE-2023-23915
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"CVE-2023-23915\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Sostituisci quanto segue:
- PROJECT_ID è l'ID del tuo progetto Google Cloud. Per visualizzare un elenco dei tuoi progetti, puoi utilizzare
gcloud projects list
.
Cercare le vulnerabilità in più progetti
Utilizza il glob di curl per eseguire query su più progetti.
Ad esempio, lo snippet seguente imposta una variabile per contenere due ID progetto, quindi invia una chiamata API per ogni progetto per cercare le occorrenze.
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"
Sostituisci quanto segue:
- PROJECT_ID_1 è l'ID progetto Google Cloud del primo progetto che vuoi esaminare.
- PROJECT_ID_2 è l'ID progetto Google Cloud del secondo progetto che vuoi esaminare.
Se devi trovare gli ID progetto, puoi visualizzare un elenco dei tuoi progetti utilizzando
gcloud projects list
.
Non è supportata una singola chiamata API in più progetti.
Ottenere una conoscenza generale di tutti i metadati di un progetto
Richiedi tutte le occorrenza associate all'ID progetto:
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
Sostituisci quanto segue:
- PROJECT_ID è il tuo ID progetto Google Cloud.
L'output include informazioni sulle vulnerabilità e altri tipi di metadati supportati associati al tuo progetto. Ad esempio, il progetto potrebbe avere dettagli sulla compilazione o attestazioni.
Esegui una query su un'occorrenza specifica per visualizzare tutti i dettagli disponibili
Per visualizzare ulteriori dettagli su una singola occorrenza, utilizza la seguente richiesta.
Ad esempio, se utilizzi Pub/Sub per ricevere notifiche relative alle occorrenze di vulnerabilità, Pub/Sub invia dettagli di base per aiutarti a identificare l'occorrenza che è cambiata e quando. Il payload include un ID occorrenza. Puoi utilizzare l'ID occorrenza per eseguire query sui dettagli al fine di identificare gli aspetti più importanti dei problemi e intervenire.
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
Sostituisci quanto segue:
- PROJECT_ID è l'ID del tuo progetto Google Cloud.
- OCCURRENCE_ID è un valore numerico dell'elenco di occorrenze dell'esempio precedente. In alternativa, se ricevi un messaggio da Pub/Sub, utilizza il valore numerico alla fine dell'URL nel messaggio.
L'output include informazioni quali tipo di pacchetto, gravità della vulnerabilità, punteggio CVSS e informazioni sulle correzioni, se disponibili.
Passaggi successivi
- Scopri di più sulle opzioni di filtro dei metadati.
- Esegui una ricerca manuale on demand.
- Scopri le best practice per proteggere la tua catena di fornitura del software.