L'API On-Demand Scanning ti consente di eseguire la scansione delle immagini archiviate localmente sul computer o da remoto in Artifact Registry o Container Registry. In questo modo avrai un controllo granulare sui container di cui vuoi eseguire la scansione per rilevare le vulnerabilità. Puoi utilizzare la scansione on demand per eseguire la scansione delle immagini nella pipeline CI/CD prima di decidere se archiviarle in un registry. Per informazioni sui prezzi, consulta la pagina dei prezzi.
Questa pagina descrive come eseguire manualmente la scansione delle immagini container con la funzionalità On-Demand Scanning.
Prima di iniziare
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
- Install the Google Cloud CLI.
-
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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Aggiungi il componente local-extract all'installazione di Google Cloud CLI
Utilizzare il gestore dei componenti di Google Cloud CLI
Il gestore dei componenti ti chiederà di installare i componenti richiesti la prima volta che eseguirete il comando di scansione.
Utilizzare il gestore dei pacchetti di sistema
-
Per Debian/Ubuntu:
sudo apt install google-cloud-sdk-local-extract
-
Per Red Hat/Fedora/CentOS:
sudo dnf install google-cloud-sdk-local-extract
In alternativa, puoi sostituire
dnf
conyum
nel comando precedente.
-
Per Debian/Ubuntu:
- Concedi il ruolo IAM Amministratore della ricerca on demand all'utente o all'account di servizio che intendi utilizzare con la ricerca on demand. Se utilizzi l'account proprietario del progetto per eseguire le analisi, puoi saltare questo passaggio.
Scansione di un'immagine container
Ricerca locale:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]
Per un'immagine locale, utilizza uno dei seguenti formati per IMAGE_URI:
REPOSITORY:TAG
REPOSITORY
Scansione da remoto:
gcloud artifacts docker images scan IMAGE_URI \ --remote [--location=(us,europe,asia)] [--async]
Per un'immagine remota, utilizza uno dei seguenti formati per IMAGE_URI:
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID@sha256:HASH
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID:HASH
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID
HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
HOSTNAME/PROJECT_ID/IMAGE_ID:HASH
HOSTNAME/PROJECT_ID/IMAGE_ID
Per le immagini in Artifact Registry, IMAGE_URI deve includere
REPOSITORY_ID
.
Per le analisi locali e remote, puoi utilizzare i seguenti flag facoltativi:
--location
è un flag per selezionare manualmente la regione multipla in cui avviene la scansione. La scelta di una regione multipla più vicina alla tua sede fisica riduce al minimo la latenza. Le posizioni disponibili sono:us
,europe
easia
. La posizione predefinita èus
.--async
è un flag per eseguire il processo di scansione in modo asincrono. Se ometti questo flag, il terminale si bloccherà fino al completamento della procedura di scansione.
Scansione sincrona
L'esempio seguente mostra l'output di una ricerca sincrona, senza il flag --async
:
$ gcloud artifacts docker images scan ubuntu:latest ✓ Scanning container image ✓ Locally extracting packages and versions from local container image ✓ Remotely initiating analysis of packages and versions ✓ Waiting for analysis operation to complete [projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7] Done. done: true metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:03:04.185261Z' resourceUri: ubuntu:latest name: projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7 response: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a
Utilizza il nome della scansione per recuperare i risultati relativi alle vulnerabilità.
Il nome della scansione è il valore di scan
nell'ultima riga del messaggio di output.
Scansione asincrona
L'esempio seguente mostra l'output dell'esecuzione di una ricerca asincrona:
$ gcloud artifacts docker images scan ubuntu:latest --async ✓ Scanning container image ✓ Locally extracting packages and versions from local container image ✓ Remotely initiating analysis of packages and versions Done. Check operation [projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16] for status. metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:04:54.393510Z' resourceUri: ubuntu:latest name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16
Viene avviata un'operazione a lunga esecuzione e viene restituito il relativo ID senza bloccare il terminale. Utilizza l'ID operazione, il valore di name
nell'ultima riga del messaggio di output, per eseguire il polling dell'operazione.
Eseguire il polling dell'operazione a lunga esecuzione
Utilizza l'ID operazione, dall'output del comando di scansione asincrona, per verificare lo stato dell'operazione.
gcloud artifacts docker images get-operation LRO_ID
Dove LRO_ID è l'ID operazione a lunga esecuzione.
Continuando con l'esempio della sezione relativa alla scansione asincrona, per controllare lo stato dell'operazione:
$ gcloud artifacts docker images get-operation \ projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16 done: true metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:04:54.393510Z' resourceUri: ubuntu:latest name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16 response: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a
Se l'output include la riga done: true
, l'operazione di scansione è stata completata. Utilizza il nome dell'analisi per recuperare i risultati relativi alle vulnerabilità.
Il nome è il valore di scan
nell'ultima riga del messaggio di output
Recuperare i risultati della scansione
Per recuperare i risultati della scansione al termine dell'operazione, utilizza il seguente comando:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Dove:
- SCAN_NAME è il nome della scansione. Puoi trovarlo nella parte inferiore dell'output quando esegui il polling dell'operazione a lungo termine, al termine della scansione.
--limit=X
è un flag facoltativo che limita il numero di occorrenze mostrate nell'output.X
è un valore numerico.
Ad esempio:
gcloud artifacts docker images list-vulnerabilities \ projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a createTime: '2021-01-05T23:05:42.956227Z' kind: VULNERABILITY name: projects/my-project/locations/us/occurrences/f82a1efd-a261-4973-acbd-f9854d8b8135 noteName: projects/goog-vulnz/notes/CVE-2018-1000654 resourceUri: ubuntu:latest updateTime: '2021-01-05T23:05:42.956227Z' vulnerability: cvssScore: 7.1 cvssv3: attackComplexity: ATTACK_COMPLEXITY_LOW attackVector: ATTACK_VECTOR_NETWORK availabilityImpact: IMPACT_HIGH baseScore: 7.2 confidentialityImpact: IMPACT_HIGH exploitabilityScore: 1.2 impactScore: 5.9 integrityImpact: IMPACT_HIGH privilegesRequired: PRIVILEGES_REQUIRED_HIGH scope: SCOPE_UNCHANGED userInteraction: USER_INTERACTION_NONE effectiveSeverity: MEDIUM
L'output di questo comando è un elenco di occorrenze nel formato Grafeas. In questo caso, viene mostrata una vulnerabilità di media gravità rilevata nell'immagine.
I risultati della scansione sono disponibili per 48 ore dal completamento dell'operazione.
Passaggi successivi
- Utilizza l'API On-Demand Scanning nella pipeline di Cloud Build.
- Utilizza Artifact Analysis per eseguire la scansione e aggiornare continuamente le informazioni sulle vulnerabilità delle immagini archiviate in Artifact Registry.