Mit der On-Demand Scanning API können Sie Images scannen, die lokal auf Ihrem Computer oder remote in Artifact Registry oder Container Registry gespeichert sind. So haben Sie detaillierte Kontrolle über die Container, die Sie auf Sicherheitslücken scannen möchten. Mit On-Demand-Scans können Sie Images in Ihrer CI/CD-Pipeline scannen, bevor Sie entscheiden, ob Sie sie in einer Registry speichern möchten. Preisinformationen finden Sie auf der Preisseite.
Auf dieser Seite wird beschrieben, wie Sie Container-Images mit On-Demand Scanning manuell scannen.
Hinweise
- 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Fügen Sie Ihrer Google Cloud CLI-Installation die Komponente local-extract hinzu.
Google Cloud CLI Component Manager verwenden
Der Komponentenmanager fordert Sie auf, die erforderlichen Komponenten zu installieren, wenn Sie den Scanbefehl zum ersten Mal 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:
- Weisen Sie dem Nutzer oder Dienstkonto, das Sie für das On-Demand-Scanning verwenden möchten, die IAM-Rolle On-Demand Scanning Admin zu. Wenn Sie die Scans mit dem Eigentümerkonto des Projekts ausführen, können Sie diesen Schritt überspringen.
Lokaler Scan:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]
Verwenden Sie für ein lokales Bild eines der folgenden Formate für IMAGE_URI:
REPOSITORY:TAG
REPOSITORY
Remote-Scan:
gcloud artifacts docker images scan IMAGE_URI \ --remote [--location=(us,europe,asia)] [--async]
Verwenden Sie für ein Remote-Bild 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 die
REPOSITORY_ID
enthalten.--location
ist ein Flag, mit dem Sie manuell den multiregionalen Standort auswählen können, an dem der Scan durchgeführt wird. Wenn Sie einen multiregionalen Standort in der Nähe Ihres physischen Standorts auswählen, wird die Latenz minimiert. Die verfügbaren Standorte sindus
,europe
undasia
. Der Standardspeicherort istus
.--async
ist ein Flag, mit dem der Scanvorgang asynchron ausgeführt wird. Wenn Sie dieses Flag weglassen, wird Ihr Terminal blockiert, bis der Scanvorgang abgeschlossen ist.- SCAN_NAME ist der Name des Scans. Sie finden sie unten in der Ausgabe, wenn Sie den Vorgang mit langer Ausführungszeit abfragen, nachdem der Scan abgeschlossen ist.
--limit=X
ist ein optionales Flag, mit dem die Anzahl der in der Ausgabe angezeigten Vorkommen begrenzt wird.X
ist ein numerischer Wert.- On-Demand Scanning API in Ihrer Cloud Build-Pipeline verwenden
- Artefaktanalyse verwenden, um Sicherheitslückeninformationen für Ihre in Artifact Registry gespeicherten Images zu scannen und kontinuierlich zu aktualisieren.
Container-Image scannen
Sowohl für lokale als auch für Remote-Scans können Sie die folgenden optionalen Flags verwenden:
Synchrones Scannen
Das folgende Beispiel zeigt 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ückenprüfung abzurufen.
Der Scanname 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 Vorgang mit langer Ausführungszeit gestartet und seine ID zurückgegeben, ohne dass Ihr Terminal blockiert wird. Verwenden Sie die Vorgangs-ID, den Wert von name
in der letzten Zeile der Ausgabemeldung, 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 Vorgangs mit langer Ausführungszeit.
Wenn wir das Beispiel aus dem Abschnitt zum asynchronen Scannen fortsetzen, gehen Sie so vor, um den Status des Vorgangs zu prü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 Scanvorgang abgeschlossen. Verwenden Sie den Scan-Namen, um die Ergebnisse der Sicherheitslücke abzurufen. Der Name ist der Wert von scan
in der letzten Zeile der Ausgabenachricht.
Scanergebnisse abrufen
Verwenden Sie den folgenden Befehl, um die Scanergebnisse abzurufen, nachdem der Scanvorgang abgeschlossen ist:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Wobei:
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 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
Die Ausgabe dieses Befehls ist eine Liste von Vorkommen im Grafeas-Format. In diesem Fall wird eine Sicherheitslücke mit mittlerem Schweregrad angezeigt, die im Image gefunden wurde.
Die Scanergebnisse sind 48 Stunden nach Abschluss des Scans verfügbar.