Questo documento spiega come abilitare l'API Container Scanning, eseguire il push di un'immagine in Artifact Registry e visualizzare l'elenco delle vulnerabilità trovate nell'immagine.
Artifact Analysis archivia le informazioni sulle vulnerabilità come note. Viene creata un'occorrenza per ogni istanza di una nota associata a un'immagine. Per saperne di più, consulta i documenti di panoramica e sui prezzi.
Prima di iniziare
- Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
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.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
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.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init - Crea un repository in Artifact Registry ed esegui il push di un pacchetto con il codice dell'applicazione nel repository. Se non hai familiarità con la gestione dei pacchetti in Artifact Registry, consulta i seguenti argomenti:
L'abilitazione di questa API abilita anche la scansione dei pacchetti di lingua in Artifact Registry. Consulta i tipi di pacchetti supportati.
Visualizzare le vulnerabilità del pacchetto
Artifact Analysis esegue la scansione dei nuovi pacchetti quando vengono caricati in Artifact Registry. Questa scansione estrae informazioni sul pacchetto e sulle relative dipendenze.
Puoi visualizzare le occorrenze di vulnerabilità per le tue immagini in Artifact Registry utilizzando la Google Cloud console, Google Cloud CLI o l'API Container Analysis. Se un'immagine presenta vulnerabilità, puoi ottenere i dettagli.
Artifact Analysis continua a eseguire la scansione di immagini e pacchetti purché sia stato eseguito il pull negli ultimi 30 giorni. Dopo 30 giorni, i metadati delle immagini e dei pacchetti sottoposti a scansione non verranno più aggiornati e i risultati saranno obsoleti.
Artifact Analysis archivia i metadati che sono rimasti inattivi per più di 90 giorni. Questi metadati archiviati possono essere valutati solo utilizzando l'API. Puoi eseguire di nuovo la scansione di un'immagine con metadati obsoleti o archiviati eseguendo il pull dell'immagine. L'aggiornamento dei metadati può richiedere fino a 24 ore. Non è possibile eseguire di nuovo la scansione dei pacchetti con metadati obsoleti o archiviati.
Visualizzare le occorrenze nella Google Cloud console
Per visualizzare le vulnerabilità in un pacchetto:
Recupera l'elenco dei repository.
Nell'elenco dei repository, fai clic su un repository.
Nell'elenco dei pacchetti, fai clic sul nome di un pacchetto.
I totali delle vulnerabilità per ogni pacchetto vengono visualizzati nella colonna Vulnerabilità.

Per visualizzare l'elenco delle vulnerabilità di un pacchetto, fai clic sul link nella colonna Vulnerabilità.
La sezione Risultati della scansione mostra un riepilogo dei tipi di pacchetti sottoposti a scansione, del totale delle vulnerabilità, delle vulnerabilità con correzioni disponibili, delle vulnerabilità senza correzioni e della gravità effettiva.

La tabella delle vulnerabilità elenca il nome delle vulnerabilità ed esposizioni comuni (CVE) per ogni vulnerabilità trovata, la gravità effettiva, il punteggio del sistema di valutazione delle vulnerabilità comuni (CVSS), le correzioni (se disponibili), il nome del pacchetto che contiene la vulnerabilità e il tipo di pacchetto. Puoi filtrare e ordinare questi file per controllare un file, una directory, o un tipo di file specifico in base all'estensione del file. Google Cloud La console visualizza fino a 1200 vulnerabilità per pagina in questa tabella.
Per i dettagli di una CVE specifica, fai clic sul nome della CVE.
Per visualizzare i dettagli dell'occorrenza di vulnerabilità, come il numero di versione e la località interessata, nella riga con il nome della vulnerabilità, fai clic su Visualizza o Visualizza corretta. Il testo del link è Visualizza per le vulnerabilità senza correzione e Visualizza corretta per le vulnerabilità a cui è stata applicata una correzione.
Visualizzare le occorrenze utilizzando gcloud
Per visualizzare le occorrenze dei pacchetti in Artifact Registry, esegui il
gcloud artifacts versions describe
comando:
gcloud artifacts versions describe VERSION \
--location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability
Dove:
- VERSION è la versione del pacchetto per cui stai visualizzando le occorrenze.
- LOCATION è la località regionale o multiregionale del repository.
- REPOSITORY è il nome del repository in cui è archiviato il pacchetto.
- PACKAGE è il nome del pacchetto nel repository. Non puoi specificare un tag del pacchetto con questo comando.
Visualizzare le occorrenze utilizzando l'API
Per ottenere un elenco di occorrenze nel tuo 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
Per ottenere un riepilogo delle vulnerabilità nel tuo 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:vulnerabilitySummary
Per ottenere i dettagli di un'occorrenza specifica:
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
Filtrare le occorrenze
Puoi utilizzare le stringhe di filtro nei comandi gcloud e nell'API Artifact Analysis per filtrare le occorrenze prima di visualizzarle. Le sezioni seguenti descrivono i filtri di ricerca supportati.
Visualizzare le occorrenze di un tipo specifico
Puoi utilizzare il valore kind per filtrare in base al tipo di occorrenza. Consulta i tipi disponibili
di prodotti.
Gli esempi seguenti mostrano come filtrare le occorrenze di vulnerabilità dei pacchetti:
gcloud
Il filtro delle occorrenze non è supportato in Google Cloud CLI per la scansione basata su pacchetti.
API
Nella query API, utilizza la seguente espressione di filtro:
kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"
Dove:
PACKAGE_VULNERABILITYè il tipo di occorrenza.- RESOURCE_URL è l'URL completo del pacchetto nel formato
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID:- PROJECT_ID è l'ID progetto della Google Cloud console console.
- LOCATION è la località regionale o multiregionale del repository.
- REPOSITORY è il nome del repository in cui è archiviata l'immagine.
- PACKAGE_ID è il nome del pacchetto in cui è archiviata l'immagine.
- PACKAGE_TYPE è il tipo di pacchetto di lingua dell'applicazione.
I tipi disponibili sono:
pythonPackages,mavenArtifactsenpmPackages. - VERSION è il numero di versione del pacchetto.
Puoi utilizzare la funzione hasPrefix per filtrare con un ambito più ampio.
Ad esempio, i seguenti filtri per le occorrenze di un tipo specifico in più versioni dello stesso pacchetto:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
Dove:
- RESOURCE_URL_PREFIX specifica una sottostringa di un URL risorsa.
- Per filtrare tutte le versioni di un pacchetto, ometti la versione. Utilizza il formato:
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID - Per filtrare tutti i pacchetti in un progetto, specifica solo la località della risorsa e il progetto. Utilizza il formato:
projects/PROJECT_ID/locations/LOCATION
- Per filtrare tutte le versioni di un pacchetto, ometti la versione. Utilizza il formato:
Visualizzare le occorrenze di vulnerabilità
Puoi visualizzare gli elenchi di occorrenze di vulnerabilità utilizzando gcloud CLI o l'API Artifact Analysis.
gcloud
Per recuperare un elenco di occorrenze di vulnerabilità per un pacchetto, utilizza il flag --show-package-vulnerability:
gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
--package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability
Dove:
- VERSION è il numero di versione del pacchetto.
- REPOSITORY è il nome del repository in cui è archiviato il pacchetto.
- GROUP_ID è l'identificatore del gruppo del pacchetto.
- ARTIFACT_ID è l'identificatore dell'artefatto del pacchetto.
API
Nella query API, utilizza la seguente espressione di filtro:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Dove:
- ENCODED_RESOURCE_URL è il percorso codificato dell'immagine. Per saperne di più sulla codifica, consulta Codifica dell'URL.
Per saperne di più sull'utilizzo dell'API, consulta
projects.occurrences.get.
Visualizzare le immagini associate a una nota specifica
Puoi recuperare un elenco di risorse associate a un ID nota specifico. Ad esempio, puoi elencare le immagini con una vulnerabilità CVE specifica.
Per elencare tutte le immagini all'interno di un progetto associate a una nota specifica, utilizza la seguente espressione di filtro:
gcloud
Il filtro delle occorrenze non è supportato in Google Cloud CLI per la scansione basata su pacchetti.
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
Dove:
goog-vulnzèPROVIDER_PROJECT_IDper l'analisi delle vulnerabilità di Artifact Analysis. Se utilizzi Artifact Analysis in un progetto personalizzato, puoi sostituire questo valore con il tuo ID progetto provider.- ENCODED_RESOURCE_URL è il percorso codificato dell'immagine. Per saperne di più sulla codifica, consulta Codifica dell'URL.
- NOTE_ID è l'ID della nota. Ad esempio, quando vedi una
vulnerabilità nei risultati della scansione di Artifact Analysis, spesso
utilizza
la formattazione dell'ID CVE simile a
CVE-2019-12345.
Per controllare una nota specifica per un'immagine specifica, utilizza la seguente espressione di filtro:
gcloud
Il filtro delle occorrenze non è supportato in Google Cloud CLI per la scansione basata su pacchetti.
API
Nella query API, aggiungi la seguente espressione di filtro:
resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \ AND noteId="NOTE_ID"
Dove:
- RESOURCE_URL è l'URL completo del pacchetto nel formato
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID. goog-vulnzèPROVIDER_PROJECT_IDper l'analisi delle vulnerabilità di Artifact Analysis.- NOTE_ID è l'ID della nota. Le note relative alla sicurezza sono spesso formattate come
CVE-2019-12345.
Passaggi successivi
- Utilizza le notifiche Pub/Sub per ricevere notifiche su vulnerabilità e altri metadati.