Quando si viene a conoscenza di una nuova vulnerabilità, è importante agire rapidamente. Questa pagina fornisce un elenco di chiamate API e filtri essenziali predefiniti per te. Utilizza queste chiamate API per recuperare i risultati della scansione da Artifact Analysis e raccogliere informazioni sullo stato dei tuoi artefatti.
Questi contenuti sono progettati per essere utilizzati con i metadati di scansione automatica. Se le tue immagini hanno superato la finestra di analisi continua di 30 giorni, 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 Container Analysis o i comandi gcloud.
Autorizzazioni obbligatorie
Tutti questi esempi utilizzano il metodo API ListOccurrences
. Per chiamare questo metodo,
devi disporre del ruolo Container Analysis Occurrences Viewer
(roles/containeranalysis.occurrences.viewer)
per il progetto che stai analizzando.
Se stai analizzando progetti di tua proprietà, disponi già delle autorizzazioni necessarie.
Se analizzi progetti di cui non sei proprietario, 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 Autorizzazioni.
Visualizza tutti i metadati delle vulnerabilità per 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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
- RESOURCE_URL è l'URL completo dell'immagine, nel formato:
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
deve essere incluso all'inizio dell'URL. Se devi trovare l'URL di un'immagine, puoi utilizzare la chiamata in Visualizza tutti i metadati di un progetto.
L'output include un elenco di vulnerabilità con dettagli quali la gravità, le opzioni di mitigazione, se disponibili, e il nome del pacchetto che contiene la vulnerabilità.
Controllare 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, nel database GitHub Advisory sono elencate alcune vulnerabilità che non hanno un ID CVE associato. In questo caso, Artifact Analysis utilizza 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. Considera il seguente
output di esempio 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
...
In questo esempio, la prima vulnerabilità ha l'ID CVE-2021-32798
e la
seconda vulnerabilità ha l'ID GHSA-884p-74jh-xrg2
.
Dopo aver ottenuto l'ID vulnerabilità, puoi eseguire il seguente comando per recuperare un elenco delle immagini interessate nel tuo progetto che hanno un ID occorrenza di 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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
- VULN_ID è l'ID della vulnerabilità come ID CVE o
numero ID GHSA, ad esempio
CVE-2021-32798
oGHSA-884p-74jh-xrg2
.
Cercare vulnerabilità in più progetti
Utilizza il globbing di curl per eseguire query in più progetti.
Ad esempio, il seguente snippet imposta una variabile in modo che contenga due ID progetto, poi 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"
Dove:
- PROJECT_ID_1 è l'ID progetto Google Cloud per il primo progetto che vuoi esaminare.
- PROJECT_ID_2 è l'ID progetto Google Cloud del secondo progetto che vuoi esaminare.
Visualizzare tutti i metadati di un progetto
Richiedi tutte le occorrenze associate al tuo 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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
L'output include informazioni sulle vulnerabilità e altri tipi di metadati supportati associati al tuo progetto. Ad esempio, il progetto potrebbe contenere dettagli di build o attestazioni.
Controllare la presenza di un pacchetto specifico in un progetto
Artifact Analysis crea dipendenze dei pacchetti per gli artefatti scansionati. Per trovare tutti gli artefatti che hanno un pacchetto specifico come dipendenza, puoi filtrare in base al nome del pacchetto:
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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
- PACKAGE_NAME è il nome del pacchetto.
Visualizza tutti i metadati del pacchetto per un'immagine
Per visualizzare tutti i diversi tipi di metadati del pacchetto per un'immagine,
utilizza il filtro kind=PACKAGE_NAME
con l'ID progetto
e l'URL completo della risorsa immagine:
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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
- RESOURCE_URL è l'URL completo dell'immagine, nel formato
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
deve essere incluso all'inizio dell'URL. Se devi trovare l'URL di un'immagine, puoi utilizzare la chiamata da Visualizza tutti i metadati di un progetto.
L'output include un elenco di dipendenze con il nome, la versione e le informazioni sulla licenza.
Esegui una query su un'occorrenza specifica per tutti i dettagli disponibili
Puoi eseguire una query per ulteriori dettagli su un'occorrenza. 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 modificata e quando è avvenuta la modifica.
Il payload include un ID occorrenza. Puoi utilizzare l'ID occorrenza per eseguire query per i dettagli che ti aiutano a stabilire la priorità dei problemi e a 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
Dove:
- PROJECT_ID è l' Google Cloud ID progetto.
OCCURRENCE_ID può essere uno dei seguenti valori, a seconda dell'output del comando di Visualizzare tutti i metadati di un progetto:
- Un valore numerico di un elenco di occorrenze.
- Il valore numerico alla fine dell'URL di un messaggio Pub/Sub.
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 scansione manuale on demand.
- Scopri le best practice per proteggere la tua catena di fornitura del software.