Mit der On-Demand Scanning API können Sie Images scannen, die lokal auf Ihrem Computer oder remote in Artifact Registry gespeichert sind. Mit On-Demand-Scans können Sie Images in Ihrer CI/CD-Pipeline auf System- und Java-Paketlücken (Maven) 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 manuell auf System- und Maven-Paketlücken scannen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben Google Cloud, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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 On-Demand Scanning API.
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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
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 On-Demand Scanning API.
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.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Fügen Sie Ihrer Google Cloud CLI-Installation die Komponente local-extract hinzu.
Google Cloud CLI-Komponentenmanager 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
dnfin dem vorherigen Befehl durchyumersetzen.
-
Für Debian/Ubuntu:
- Gewähren Sie die IAM-Rolle On-Demand Scanning Admin dem Nutzer oder Dienstkonto, das Sie mit On-Demand-Scans verwenden möchten. Wenn Sie das Inhaberkonto des Projekts verwenden, um die Scans auszuführen, können Sie diesen Schritt überspringen.
Container-Image scannen
Lokaler Scan:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]Verwenden Sie für ein lokales Image eines der folgenden Formate für die IMAGE_URI:
REPOSITORY:TAGREPOSITORY
Remote-Scan:
gcloud artifacts docker images scan IMAGE_URI \ --remote [--location=(us,europe,asia)] [--async]Verwenden Sie für ein Remote-Image eines der folgenden Formate für die IMAGE_URI:
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID@sha256:HASHHOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID:HASHHOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_IDHOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASHHOSTNAME/PROJECT_ID/IMAGE_ID:HASHHOSTNAME/PROJECT_ID/IMAGE_ID
Bei Images in Artifact Registry muss die IMAGE_URI die
REPOSITORY_IDenthalten.
Für lokale und Remote-Scans können Sie die folgenden optionalen Flags verwenden:
--locationist ein optionales Flag, mit dem Sie die multiregionale Region manuell auswählen können, in der der Scan ausgeführt wird. Wenn Sie eine multiregionale Region auswählen, die sich näher an Ihrem physischen Standort befindet, wird die Latenz minimiert. Die verfügbaren Standorte sind:us,europeundasia. Der Standardstandort istus.--asyncist ein optionales Flag, mit dem Sie den Scanvorgang asynchron ausführen können. Wenn Sie dieses Flag weglassen, wird Ihr Terminal blockiert, bis der Scanvorgang abgeschlossen ist.
Synchroner Scan
Das folgende Beispiel zeigt die Ausgabe eines synchronen Scans ohne das Flag --async:
$ gcloud artifacts docker images scan jenkins:2.60.3-alpine ✓ 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: jenkins:2.60.3-alpine 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. Im Beispiel ist der Scanname der Wert von scan in der letzten Zeile der Ausgabemeldung.
Asynchroner Scan
Das folgende Beispiel zeigt die Ausgabe eines asynchronen Scans:
$ gcloud artifacts docker images scan jenkins:2.60.3-alpine --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: jenkins:2.60.3-alpine 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.
Vorgang mit langer Ausführungszeit 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.
Um den Status des Vorgangs zu prüfen, fahren Sie mit dem Beispiel aus dem Abschnitt zum asynchronen Scannen fort:
$ 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: jenkins:2.60.3-alpine 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 Scannamen, um die Ergebnisse der Sicherheitslücken abzurufen.
Der Scanname ist der Wert von scan in der letzten Zeile der Ausgabemeldung.
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:
SCAN_NAME ist der Scanname. Sie finden ihn in der letzten Zeile der Ausgabe, wenn Sie entweder einen synchronen Scan ausführen oder den Vorgang mit langer Ausführungszeit abfragen, nachdem der Scan abgeschlossen ist.
--limit=Xist ein optionales Flag, mit dem die Anzahl der in der Ausgabe angezeigten Vorkommen begrenzt wird.Xist ein numerischer Wert.
Beispiel:
createTime: '2021-06-29T17:01:18.819477Z'
kind: VULNERABILITY
name: projects/my-project/locations/us/occurrences/06305977-f557-4772-8586-4260684291d3
noteName: projects/my-project/notes/CVE-2014-0114
resourceUri: jenkins:2.60.3-alpine
updateTime: '2021-06-29T17:01:18.819477Z'
vulnerability:
cvssScore: 4.3
effectiveSeverity: MEDIUM
longDescription: http/conn/ssl/SSLConnectionSocketFactory.java in ...
packageIssue:
- affectedCpeUri: cpe:/o:alpine:alpine_linux:3.13
affectedPackage: org.apache.httpcomponents:httpclient
affectedVersion:
fullName: 4.0.2
kind: NORMAL
name: 4.0.2
effectiveSeverity: MEDIUM
fixedCpeUri: cpe:/o:alpine:alpine_linux:3.13
fixedPackage: org.apache.httpcomponents:httpclient
fixedVersion:
fullName: 4.3.6
kind: NORMAL
name: 4.3.6
packageType: MAVEN
relatedUrls:
- label: More Info
url: https://security-tracker.debian.org/tracker/CVE-2015-5262
severity: MEDIUM
shortDescription: CVE-2015-5262
Die Ausgabe dieses Befehls ist eine
Liste der Vorkommen im Grafeas-Format. In diesem Fall wird eine Sicherheitslücke mit mittlerem Schweregrad angezeigt, die im Image gefunden wurde. Maven-Paketlücken enthalten das Feld packageType:MAVEN.
Die Scanergebnisse sind 48 Stunden nach Abschluss des Scanvorgangs verfügbar.
Nächste Schritte
- Verwenden Sie die On-Demand Scanning API in Ihrer Cloud Build-Pipeline.
- Verwenden Sie die Artefaktanalyse, um Sicherheitslückeninformationen für Ihre in Artifact Registry gespeicherten Images zu scannen und kontinuierlich zu aktualisieren.