Mit der On-Demand Scanning API können Sie lokal auf Ihrem Computer, in Container Registry oder in Artifact Registry gespeicherte Images scannen. Dies gibt Ihnen genaue Kontrolle über die Container, die nach Sicherheitslücken gescannt werden sollen. Mit On-Demand-Scan können Sie in Ihrer CI-/CD-Pipeline Bilder scannen, bevor Sie entscheiden, ob sie in einer Registry gespeichert werden sollen.
Preisinformationen finden Sie auf der Preisseite.
Auf dieser Seite wird beschrieben, wie Sie Container-Images mithilfe des On-Demand-Scans manuell scannen können.
Hinweis
-
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.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Fügen Sie der Cloud SDK-Installation die Komponente local-extract hinzu.
Cloud SDK-Komponentenmanager verwenden
Der Komponentenmanager fordert Sie auf, die erforderlichen Komponenten zum ersten Mal zu scannen, wenn Sie den Scanbefehl ausführen.
Systempaketmanager verwenden
-
Für Debian/Ubuntu:
sudo apt install google-cloud-sdk-local-extract
-
Für Red Hat/Fedora/CentOS:
sudo dnf install google-cloud-sdk-local-extract
Alternativ können Sie im vorherigen Befehl
dnf
durchyum
ersetzen.
-
Für Debian/Ubuntu:
- IAM-Rolle erteilen Administrator für On-Demand-Scans dem Nutzer oder Dienstkonto, das Sie mit dem On-Demand-Scan verwenden. Wenn Sie das Inhaberkonto des Projekts zum Ausführen der Scans verwenden, können Sie diesen Schritt überspringen.
Container-Image scannen
Mit dem folgenden Befehl scannen Sie ein Container-Image:
gcloud artifacts docker images scan IMAGE_URI [--remote] [--location=(us,europe,asia)] [--async]
Wobei:
--remote
ist ein optionales Flag, das Sie verwenden müssen, wenn Ihr Image remote in Artifact Registry oder Container Registry gehostet wird. Verwenden Sie für ein Remote-Image eines der folgenden Formate für 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
Für Images in Artifact Registry muss IMAGE_URI das
REPOSTIORY_ID
enthalten.Wenn Sie ein lokales Image verwenden, lassen Sie das Flag
--remote
weg und verwenden Sie eines der folgenden Formate für IMAGE_URI:IMAGE_ID:TAG
IMAGE_ID
--location
ist ein optionales Flag, um manuell den multiregionalen Standort auszuwählen, in dem die Scans ausgeführt werden. Die Auswahl einer Mehrfachregion, die näher an Ihrem Standort liegt, minimiert die Latenz. Folgende Standorte sind verfügbar:us
,europe
undasia
. Der Standardspeicherort istus
.--async
ist ein optionales Flag, um den Scanvorgang asynchron auszuführen. Wenn Sie dieses Flag weglassen, wird Ihr Terminal blockiert, bis der Scanvorgang abgeschlossen ist.
Synchrones Scannen
Im folgenden Beispiel sehen Sie die Ausgabe eines synchronen Scans ohne das 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
Verwenden Sie den Scannamen, um die Ergebnisse der Sicherheitslücken abzurufen. Der Name ist der Wert von scan
in der letzten Zeile der Ausgabenachricht.
Asynchrones Scannen
Das folgende Beispiel zeigt die Ausgabe eines asynchronen Scans:
$ 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
Dadurch wird ein lang andauernder Vorgang gestartet und seine ID zurückgegeben, ohne das Terminal zu blockieren. Verwenden Sie die Vorgangs-ID, den Wert von name
in der letzten Zeile der Ausgabenachricht, um den Vorgang abzufragen.
Lang andauernden Vorgang abfragen
Verwenden Sie die Vorgangs-ID aus der Ausgabe des asynchronen Scanbefehls, um den Vorgangsstatus zu prüfen.
gcloud artifacts docker images get-operation LRO_ID
Dabei ist LRO_ID die ID des lange laufenden Vorgangs.
Fahren Sie mit dem Beispiel des Abschnitts für asynchrones Scannen fort, um den Status des Vorgangs zu überprüfen:
$ 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
Wenn die Ausgabe die Zeile done: true
enthält, ist der Scan abgeschlossen. Verwenden Sie den Scannamen, um die Ergebnisse der Sicherheitslücken abzurufen.
Der Name ist der Wert von scan
in der letzten Zeile der Ausgabenachricht.
Scanergebnisse abrufen
Sie können die Scanergebnisse mit dem folgenden Befehl abrufen:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Wobei:
- SCAN_NAME ist der Scanname. Sie finden es unten in der Ausgabe, wenn Sie den lang andauernden Vorgang abfragen, nachdem die Scans abgeschlossen sind.
--limit=X
ist ein optionales Flag, das die Anzahl der in der Ausgabe angezeigten Vorkommen begrenzt.
Beispiel:
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 effectiveSeverity: LOW packageIssue: - affectedCpeUri: cpe:/o:canonical:ubuntu_linux:20.04 affectedPackage: libtasn1-6 affectedVersion: kind: NORMAL name: 4.16.0 revision: '2' fixedCpeUri: cpe:/o:canonical:ubuntu_linux:20.04 fixedPackage: libtasn1-6 fixedVersion: kind: MAXIMUM severity: HIGH
Die Ausgabe dieses Befehls ist eine Liste der Vorkommen im Grafeas-Format. In diesem Fall wird eine im Image enthaltene Sicherheitslücke mit hoher Wichtigkeit angezeigt.
Die Scanergebnisse sind nach dem Abschluss des Vorgangs 48 Stunden verfügbar.
Nächste Schritte
- Informationen zum On-Demand-Scankonzept
- Verwenden Sie Container Analysis, um Informationen zu Sicherheitslücken für Ihre in Artifact Registry und Container Registry gespeicherten Images zu prüfen und kontinuierlich zu aktualisieren.