In diesem Dokument wird erläutert, wie Sie die Container Scanning API aktivieren, ein Image in Artifact Registry hochladen und die Liste der im Image gefundenen Sicherheitslücken aufrufen.
Die Artefaktanalyse speichert Informationen zu Sicherheitslücken als Hinweise. Für jede Instanz eines Hinweises, der mit einem Image verknüpft ist, wird ein Vorkommen erstellt. Weitere Informationen finden Sie in der Übersicht und in der Preisdokumentation.
Hinweis
-
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 Artifact Registry and Container Scanning APIs, if any are 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.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - Erstellen Sie ein Repository in Artifact Registry und übertragen Sie ein Paket mit Ihrem Anwendungscode per Push in das Repository. Wenn Sie mit der Verwaltung von Paketen in Artifact Registry nicht vertraut sind, lesen Sie die folgenden Themen:
Wenn Sie diese API aktivieren, wird auch das Scannen von Sprachpaketen in Artifact Registry aktiviert. Unterstützte Pakettypen
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen von Paketscanergebnissen benötigen:
- Container Scanner-Dienst-Agent (
roles/containerscanning.ServiceAgent) - Betrachter von Container Analysis-Vorkommen (
roles/containeranalysis.occurrences.viewer) - Betrachter von Container Analysis-Hinweisen (
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.
Sicherheitslücken des Pakets ansehen
Artefaktanalyse scannt neue Pakete, sobald sie in Artifact Registry hochgeladen werden. Bei diesem Scan werden Informationen zum Paket und seinen Abhängigkeiten extrahiert.
Sie können die Sicherheitslücken für Ihre Images in Artifact Registry mit der Google Cloud Console, der Google Cloud CLI oder der Container Analysis API aufrufen. Wenn ein Bild Sicherheitslücken aufweist, können Sie die Details abrufen.
Artefaktanalyse scannt Images und Pakete weiterhin, solange sie in den letzten 30 Tagen abgerufen wurden. Nach 30 Tagen werden die Metadaten für gescannte Bilder und Pakete nicht mehr aktualisiert und die Ergebnisse sind veraltet.
Die Artefaktanalyse archiviert Metadaten, die seit mehr als 90 Tagen inaktiv sind. Diese archivierten Metadaten können nur über die API ausgewertet werden. Sie können ein Image mit veralteten oder archivierten Metadaten noch einmal scannen, indem Sie es per Pull abrufen. Das Aktualisieren der Metadaten kann bis zu 24 Stunden dauern. Pakete mit veralteten oder archivierten Metadaten können nicht noch einmal gescannt werden.
Vorkommen in der Google Cloud Console ansehen
So sehen Sie die Sicherheitslücken in einem Paket:
Rufen Sie die Liste der Repositories ab.
Klicken Sie in der Repository-Liste auf ein Repository.
Klicken Sie in der Paketliste auf einen Paketnamen.
Die Gesamtzahl der Sicherheitslücken für jedes Paket wird in der Spalte Sicherheitslücken angezeigt.

Wenn Sie die Liste der Sicherheitslücken für ein Paket aufrufen möchten, klicken Sie auf den Link in der Spalte Sicherheitslücken.
Im Bereich Scan results (Scanergebnisse) wird eine Zusammenfassung der gescannten Pakettypen, der Gesamtzahl der Sicherheitslücken, der Sicherheitslücken mit verfügbaren Korrekturen, der Sicherheitslücken ohne Korrekturen und des effektiven Schweregrads angezeigt.

In der Tabelle der Sicherheitslücken sind für jede gefundene Sicherheitslücke der Name der Common Vulnerabilities and Exposures (CVE), der effektive Schweregrad, der CVSS-Wert (Common Vulnerability Scoring System), Korrekturen (falls verfügbar), der Name des Pakets, das die Sicherheitslücke enthält, und der Pakettyp aufgeführt. Sie können diese Dateien filtern und sortieren, um eine bestimmte Datei, ein bestimmtes Verzeichnis oder einen bestimmten Dateityp nach Dateiendung zu prüfen. In der Google Cloud -Konsole werden in dieser Tabelle bis zu 1.200 Sicherheitslücken pro Seite angezeigt.
Klicken Sie auf den CVE-Namen, um Details zu einer bestimmten CVE aufzurufen.
Wenn Sie Details zum Auftreten von Sicherheitslücken wie Versionsnummer und betroffene Stelle aufrufen möchten, klicken Sie in der Zeile mit dem Namen der Sicherheitslücke auf Anzeigen oder Behoben anzeigen. Der Linktext lautet Ansehen für Sicherheitslücken ohne Korrektur und Korrigierte ansehen für Sicherheitslücken, bei denen eine Korrektur angewendet wurde.
Vorkommen mit gcloud ansehen
Führen Sie den Befehl gcloud artifacts versions describe aus, um Vorkommen für Pakete in Artifact Registry aufzurufen:
gcloud artifacts versions describe VERSION \
--location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability
Wobei:
- VERSION ist die Version des Pakets, für die Sie Vorkommen ansehen.
- LOCATION ist der regionale oder multiregionale Speicherort für das Repository.
- REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
- PACKAGE ist der Name des Pakets im Repository. Mit diesem Befehl können Sie kein Paket-Tag angeben.
Vorkommen mit der API ansehen
So rufen Sie eine Liste der Vorkommen in Ihrem Projekt ab:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
So erhalten Sie eine Zusammenfassung der Sicherheitslücken in Ihrem Projekt:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences:vulnerabilitySummary
So rufen Sie Details zu einem bestimmten Vorkommen ab:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID
Vorkommen filtern
Sie können Filterstrings in den gcloud-Befehlen und der Artifact Analysis API verwenden, um Vorkommen vor dem Aufrufen zu filtern. In den folgenden Abschnitten werden die unterstützten Suchfilter beschrieben.
Vorkommen eines bestimmten Typs ansehen
Mit dem Wert kind können Sie nach Vorkommenstyp filtern. Verfügbare Arten
Die folgenden Beispiele zeigen, wie Sie nach Paketlücken filtern:
gcloud
Das Filtern von Vorkommen wird in der Google Cloud CLI für paketbasierte Scans nicht unterstützt.
API
Verwenden Sie in Ihrer API-Abfrage den folgenden Filterausdruck:
kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"
Wobei:
PACKAGE_VULNERABILITYist die Art des Vorkommens.- RESOURCE_URL ist die vollständige URL des Pakets im Format
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID:- PROJECT_ID ist die Projekt-ID Ihrer Google Cloud Console.
- LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
- REPOSITORY ist der Name des Repositorys, in dem das Image gespeichert ist.
- PACKAGE_ID ist der Name des Pakets, in dem das Bild gespeichert ist.
- PACKAGE_TYPE ist der Typ des Sprachpakets der Anwendung.
Verfügbare Typen sind
pythonPackages,mavenArtifactsundnpmPackages. - VERSION ist die Versionsnummer des Pakets.
Mit der Funktion hasPrefix können Sie mit einem größeren Umfang filtern.
Die folgenden Filter beziehen sich beispielsweise auf Vorkommen einer bestimmten Art in mehreren Versionen desselben Pakets:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
Wobei:
- RESOURCE_URL_PREFIX gibt einen Teilstring aus einer Ressourcen-URL an.
- Wenn Sie nach allen Versionen eines Pakets filtern möchten, lassen Sie die Version weg. Verwenden Sie das Format:
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID - Wenn Sie nach allen Paketen in einem Projekt filtern möchten, geben Sie nur den Ressourcenstandort und das Projekt an. Verwenden Sie das Format:
projects/PROJECT_ID/locations/LOCATION
- Wenn Sie nach allen Versionen eines Pakets filtern möchten, lassen Sie die Version weg. Verwenden Sie das Format:
Vorkommen von Sicherheitslücken ansehen
Sie können Listen mit Sicherheitslücken mithilfe der gcloud CLI oder der Artifact Analysis API aufrufen.
gcloud
Verwenden Sie das Flag --show-package-vulnerability, um eine Liste der Sicherheitslückenvorkommen für ein Paket abzurufen:
gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
--package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability
Wobei:
- VERSION ist die Versionsnummer des Pakets.
- REPOSITORY ist der Name des Repositorys, in dem das Paket gespeichert ist.
- GROUP_ID ist die Gruppen-ID Ihres Pakets.
- ARTIFACT_ID ist die Artefakt-ID Ihres Pakets.
API
Verwenden Sie in Ihrer API-Abfrage den folgenden Filterausdruck:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Wobei:
- ENCODED_RESOURCE_URL ist der codierte Pfad zu Ihrem Bild. Weitere Informationen zur Codierung finden Sie unter URL-Codierung.
Weitere Informationen zur Verwendung der API finden Sie unter projects.occurrences.get.
Bilder aufrufen, die mit einer bestimmten Notiz verknüpft sind
Sie können eine Liste der Ressourcen abrufen, die einer bestimmten Hinweis-ID zugeordnet sind. Sie können beispielsweise Images mit einer bestimmten CVE-Sicherheitslücke auflisten.
Verwenden Sie den folgenden Filterausdruck, um alle Images in einem Projekt aufzulisten, die einem bestimmten Hinweis zugeordnet sind:
gcloud
Das Filtern von Vorkommen wird in der Google Cloud CLI für paketbasierte Scans nicht unterstützt.
API
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=noteProjectId%3D%22goog-vulnz%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22%20AND%20noteId%3D%22NOTE_ID%22
Wobei:
goog-vulnzist diePROVIDER_PROJECT_IDfür die Analyse von Sicherheitslücken in der Artefaktanalyse. Wenn Sie Artefaktanalyse in einem benutzerdefinierten Projekt verwenden, können Sie diesen Wert durch die Projekt-ID Ihres eigenen Anbieters ersetzen.- ENCODED_RESOURCE_URL ist der codierte Pfad zu Ihrem Image. Weitere Informationen zur Codierung finden Sie unter URL-Codierung.
- NOTE_ID ist die ID des Hinweises. Wenn Sie beispielsweise in den Scanergebnissen der Artefaktanalyse eine Sicherheitslücke sehen, wird häufig die CVE-ID-Formatierung ähnlich wie
CVE-2019-12345verwendet.
Verwenden Sie den folgenden Filterausdruck, um ein bestimmtes Image auf eine bestimmte Notiz zu prüfen:
gcloud
Das Filtern von Vorkommen wird in der Google Cloud CLI für paketbasierte Scans nicht unterstützt.
API
Fügen Sie Ihrer API-Abfrage den folgenden Filterausdruck hinzu:
resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \ AND noteId="NOTE_ID"
Wobei:
- RESOURCE_URL ist die vollständige URL des Pakets im Format
projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID. goog-vulnzist diePROVIDER_PROJECT_IDfür die Artefaktanalyse-Sicherheitslückenanalyse.- NOTE_ID ist die ID des Hinweises. Sicherheitsbezogene Hinweise sind oft als
CVE-2019-12345formatiert.
Nächste Schritte
- Pub/Sub-Benachrichtigungen verwenden, um Benachrichtigungen zu Sicherheitslücken und anderen Metadaten zu erhalten.