Wenn Sie von einer neuen Sicherheitslücke erfahren, ist es wichtig, schnell zu handeln. Auf dieser Seite finden Sie eine Liste wichtiger API-Aufrufe und Filter, die für Sie vordefiniert sind. Mit diesen API-Aufrufen können Sie Scanergebnisse aus der Artefaktanalyse abrufen und Informationen zum Status Ihrer Artefakte erfassen.
Dieser Inhalt ist für die Verwendung mit Metadaten für das automatische Scannen vorgesehen. Wenn für Ihre Images der 30-tägige Zeitraum für die kontinuierliche Analyse abgelaufen ist, können Sie eine neue Suche ausführen, indem Sie noch einmal eine Push-Aktualisierung an die Artifact Registry senden.
In allen Beispielen auf dieser Seite wird direkt auf die API zugegriffen. Sie können aber auch die Clientbibliotheken für die Containeranalyse oder gcloud-Befehle verwenden.
Erforderliche Berechtigungen
In allen diesen Beispielen wird die API-Methode ListOccurrences
verwendet. Um diese Methode aufzurufen, benötigen Sie die Rolle Betrachter von Container Analysis-Vorkommen
(roles/containeranalysis.occurrences.viewer)
für das Projekt, das Sie analysieren.
Wenn Sie Projekte analysieren, deren Inhaber Sie sind, haben Sie bereits die erforderlichen Berechtigungen.
Wenn Sie Projekte analysieren, deren Inhaber Sie nicht sind, verwenden Sie die Anleitung zur IAM-Zugriffsverwaltung, um Berechtigungen zu gewähren.
Weitere Informationen zu den Zugriffstypen für Anbieter und Kunden, die die Artefaktanalyse verwenden, finden Sie unter Berechtigungen.
Alle Metadaten zu Sicherheitslücken für ein Bild aufrufen
Verwenden Sie den Filter KIND="VULNERABILITY"
mit Ihrer Projekt-ID und der vollständigen Ressourcen-URL für Ihr Bild, einschließlich https://
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Ersetzen Sie Folgendes:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Mit
gcloud projects list
können Sie eine Liste Ihrer Projekte aufrufen. - RESOURCE_URL ist die vollständige URL des Bildes im Format
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Sie müssenhttps://
am Anfang der URL verwenden. Wenn Sie die URL für ein Bild finden möchten, können Sie den Befehl unter Ich möchte ein umfassendes Verständnis aller Metadaten für mein Projekt haben verwenden.
Die Ausgabe enthält eine Liste mit Sicherheitslücken mit Details wie dem Schweregrad, verfügbaren Optionen zur Risikobewältigung und dem Namen des Pakets, das die Sicherheitslücke enthält.
Nach einer bestimmten Sicherheitslücke in einem Projekt suchen
In den meisten Fällen wird bei der Artefaktanalyse die CVE-ID als Identifikationsmerkmal für die Sicherheitslücke verwendet. In der GitHub Advisory Database sind jedoch einige Sicherheitslücken aufgeführt, die keine zugehörige CVE-ID haben. In diesem Fall wird stattdessen die GHSA-ID verwendet.
Die ID der Sicherheitslücke ist im Feld noteName
enthalten. Sie beginnt mit dem Präfix CVE
für CVE-IDs und GHSA
für GHSA-IDs. Angenommen, die folgende Ausgabe ist das Ergebnis des Befehls zum Ansehen aller Sicherheitslücken für ein Image:
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
Die erste Sicherheitslücke hat die ID CVE-2021-32798
, die zweite die ID GHSA-884p-74jh-xrg2
.
Rufen Sie die Kennung für die Sicherheitslücke ab.
Verwenden Sie die CVE-ID oder GHSA-ID in diesem Filterausdruck, um eine Liste der betroffenen Images abzurufen:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Ersetzen Sie Folgendes:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Mit
gcloud projects list
können Sie eine Liste Ihrer Projekte aufrufen. - VULN_ID ist die ID der Sicherheitslücke. Die CVE-ID oder GHSA-ID, z. B.
CVE-2021-32798
oderGHSA-884p-74jh-xrg2
.
Im folgenden Aufruf wird beispielsweise gezeigt, wie Sie Scanergebnisse für Bilder in Ihrem Projekt abrufen, die CVE-2023-23915
enthalten:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"CVE-2023-23915\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Ersetzen Sie Folgendes:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID. Mit
gcloud projects list
können Sie eine Liste Ihrer Projekte aufrufen.
Nach Sicherheitslücken in mehreren Projekten suchen
Verwenden Sie globbing in curl, um Abfragen für mehrere Projekte auszuführen.
Im folgenden Snippet wird beispielsweise eine Variable mit zwei Projekt-IDs festgelegt und dann für jedes Projekt ein API-Aufruf gesendet, um nach Vorkommen zu suchen.
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
Ersetzen Sie Folgendes:
- PROJECT_ID_1 ist die Google Cloud-Projekt-ID des ersten Projekts, das Sie untersuchen möchten.
- PROJECT_ID_2 ist die Google Cloud-Projekt-ID des zweiten Projekts, das Sie untersuchen möchten.
Wenn Sie Projekt-IDs benötigen, können Sie mit gcloud projects list
eine Liste Ihrer Projekte aufrufen.
Ein einzelner API-Aufruf für mehrere Projekte wird nicht unterstützt.
Alle Metadaten für ein Projekt im Überblick
So fordern Sie alle Vorkommen an, die mit Ihrer Projekt-ID verknüpft sind:
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
Ersetzen Sie Folgendes:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
Die Ausgabe enthält Informationen zu Sicherheitslücken und andere unterstützte Metadatentypen, die mit Ihrem Projekt verknüpft sind. Ihr Projekt kann beispielsweise Build-Details oder Attestationen enthalten.
Alle verfügbaren Details zu einem bestimmten Vorkommen abrufen
Wenn Sie weitere Informationen zu einem einzelnen Vorfall erhalten möchten, verwenden Sie die folgende Anfrage.
Wenn Sie beispielsweise Pub/Sub verwenden, um Benachrichtigungen zu Sicherheitslücken zu erhalten, sendet Pub/Sub grundlegende Details, damit Sie erkennen können, was sich wann geändert hat. Die Nutzlast enthält eine Vorkommen-ID. Anhand der Ereignis-ID können Sie Details abrufen, um Probleme zu priorisieren und Maßnahmen zu ergreifen.
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
Ersetzen Sie Folgendes:
- PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
- OCCURRENCE_ID ist ein numerischer Wert aus der Liste der Vorkommen aus dem vorherigen Beispiel. Wenn du eine Nachricht von Pub/Sub erhältst, verwende den numerischen Wert am Ende der URL in dieser Nachricht.
Die Ausgabe enthält Informationen wie Pakettyp, Schwere der Sicherheitslücke, CVSS-Bewertung und Informationen zu Fehlerkorrekturen, sofern verfügbar.
Nächste Schritte
- Weitere Informationen zu Metadatenfilteroptionen
- Manuelle Suche auf Abruf ausführen
- Best Practices zum Schutz Ihrer Softwarelieferkette