Mit der On-Demand Scanning API können Sie Images scannen, die lokal auf Ihrem Computer oder remote in Artifact Registry gespeichert sind. So lässt sich genau steuern, welche Container auf Sicherheitslücken gescannt werden sollen. 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. Informationen zu den Preisen finden Sie auf der Seite „Preise“.
Auf dieser Seite wird beschrieben, wie Sie Container-Images manuell mit On-Demand-Scans scannen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. 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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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.
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 die Komponente local-extract zu Ihrer Google Cloud CLI-Installation 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
dnfdurchyumersetzen.
-
Für Debian/Ubuntu:
- IAM-Rolle gewähren Gewähren Sie dem Nutzer oder Dienstkonto, das Sie für On-Demand Scanning verwenden möchten, die IAM-Rolle On-Demand Scanning Admin. Wenn Sie die Scans mit dem Eigentümerkonto des Projekts ausführen, können Sie diesen Schritt überspringen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Aufrufen der Ergebnisse von Paketscans haben:
- Container Scanner-Dienst-Agent (
roles/containerscanning.ServiceAgent) - Betrachter von Container Analysis-Vorkommen (
roles/containeranalysis.occurrences.viewer) - Container Analysis Notes Viewer (
roles/containeranalysis.notes.viewer) - Artifact Registry-Leser (
roles/artifactregistry.reader)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Container-Image scannen
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: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 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 IMAGE_URI die
REPOSITORY_IDenthalten.
Sowohl für lokale als auch für Remote-Scans können Sie die folgenden optionalen Flags verwenden:
--locationist ein Flag, mit dem Sie den multiregionalen Standort, an dem der Scan stattfindet, manuell auswählen können. Wenn Sie einen multiregionalen Standort auswählen, der Ihrem physischen Standort am nächsten ist, wird die Latenz minimiert. Die verfügbaren Standorte sind:us,europeundasia. Der standardmäßige Standort istus.--asyncist ein Flag, mit dem der Scanvorgang asynchron ausgeführt wird. Wenn Sie dieses Flag weglassen, wird Ihr Terminal blockiert, bis der Scanvorgang abgeschlossen ist.
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ücken abzurufen.
Der Scanname ist der Wert von scan in der letzten Zeile der Ausgabemeldung.
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 Ausgabenachricht, 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.
Wenn wir mit dem Beispiel aus dem Abschnitt zum asynchronen Scannen fortfahren, 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. Mit dem Scannamen die Ergebnisse der Sicherheitslücke abrufen. Der Name 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 Name des Scans. Sie finden sie am Ende der Ausgabe, wenn Sie den Vorgang mit langer Ausführungszeit abfragen, nachdem der Scan abgeschlossen ist.
--limit=Xist ein optionales Flag, das die Anzahl der in der Ausgabe angezeigten Vorkommen begrenzt.Xist ein numerischer Wert.
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 der 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.
Nächste Schritte
- 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.