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 vorkonfiguriert sind. Mit diesen API-Aufrufen können Sie Scanergebnisse aus der Artefaktanalyse abrufen und Informationen zum Status Ihrer Artefakte erfassen.
Diese Inhalte sind für die Verwendung mit Metadaten für das automatische Scannen vorgesehen. Wenn Ihre Bilder das 30-tägige Fenster für die kontinuierliche Analyse überschritten haben, können Sie einen neuen Scan ausführen, indem Sie die Bilder noch einmal in Artifact Registry übertragen.
In allen Beispielen auf dieser Seite wird direkt auf die API zugegriffen. Sie können aber auch die Container Analysis-Clientbibliotheken 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, die Ihnen nicht gehören, folgen Sie der Anleitung zur IAM-Zugriffsverwaltung, um Berechtigungen zu erteilen.
Weitere Informationen zu den Arten von Zugriff für Anbieter und Kunden, die die Artefaktanalyse verwenden, finden Sie unter Berechtigungen.
Alle Metadaten zu Sicherheitslücken für ein Image ansehen
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
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
- RESOURCE_URL ist die vollständige URL des Bildes im Format
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
muss am Anfang der URL stehen. Wenn Sie die URL für ein Bild benötigen, können Sie den Aufruf unter Alle Metadaten für ein Projekt ansehen verwenden.
Die Ausgabe enthält eine Liste mit Sicherheitslücken und Details wie den Schweregrad, gegebenenfalls Optionen zur Risikominderung und den Namen des Pakets, das die Sicherheitslücke enthält.
Nach einer bestimmten Sicherheitslücke in einem Projekt suchen
In den meisten Fällen wird die CVE-ID als Kennzeichnung für die Sicherheitslücke verwendet. Einige Sicherheitslücken in der GitHub Advisory Database haben jedoch keine zugehörige CVE-ID. In diesem Fall wird stattdessen die GHSA-ID verwendet.
Die Sicherheitslücken-ID ist im Feld noteName
enthalten. Sie beginnt mit dem Präfix CVE
für CVE-IDs und GHSA
für GHSA-IDs. Sehen Sie sich die folgende Beispielausgabe an, die beim Ausführen des Befehls zum Anzeigen aller Sicherheitslücken für ein Image generiert wird:
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
...
In diesem Beispiel hat die erste Sicherheitslücke die ID CVE-2021-32798
und die zweite Sicherheitslücke die ID GHSA-884p-74jh-xrg2
.
Nachdem Sie die Sicherheitslücken-ID haben, können Sie den folgenden Befehl ausführen, um eine Liste der betroffenen Images in Ihrem Projekt abzurufen, die die Ereignis-ID VULN_ID haben:
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
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
- VULN_ID ist die ID der Sicherheitslücke als CVE-ID oder GHSA-ID-Nummer, z. B.
CVE-2021-32798
oderGHSA-884p-74jh-xrg2
.
Projektübergreifend nach Sicherheitslücken suchen
Verwenden Sie Globbing mit curl, um projektübergreifende Abfragen zu stellen.
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"
Wobei:
- 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 für das zweite Projekt, das Sie untersuchen möchten.
Alle Metadaten für ein Projekt ansehen
Alle Vorkommen abrufen, 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
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
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 Attestierungen enthalten.
Nach einem bestimmten Paket in einem Projekt suchen
Bei der Artefaktanalyse werden Paketabhängigkeiten für gescannte Artefakte erstellt. Wenn Sie alle Artefakte finden möchten, für die ein bestimmtes Paket eine Abhängigkeit ist, können Sie nach dem Paketnamen filtern:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
- PACKAGE_NAME ist der Name des Pakets.
Alle Paketmetadaten für ein Bild ansehen
Wenn Sie alle verschiedenen Arten von Paketmetadaten für ein Bild aufrufen möchten, verwenden Sie den Filter kind=PACKAGE_NAME
mit Ihrer Projekt-ID und der vollständigen Bildressourcen-URL:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
- RESOURCE_URL ist die vollständige URL des Bildes im Format
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
.https://
muss am Anfang der URL stehen. Wenn Sie die URL für ein Bild benötigen, können Sie den Aufruf aus Alle Metadaten für ein Projekt ansehen verwenden.
Die Ausgabe enthält eine Abhängigkeitsliste mit dem Namen, der Version und den Lizenzinformationen der Abhängigkeit.
Alle verfügbaren Details zu einem bestimmten Vorkommen abfragen
Sie können eine Abfrage ausführen, um weitere Informationen zu einem Vorkommen zu erhalten. Wenn Sie beispielsweise Pub/Sub verwenden, um Benachrichtigungen über das Auftreten von Sicherheitslücken zu erhalten, sendet Pub/Sub grundlegende Details, mit denen Sie die Änderung und den Zeitpunkt der Änderung erkennen können.
Die Nutzlast enthält eine Vorkommen-ID. Anhand der Ereignis-ID können Sie Details abfragen, um Probleme zu beheben 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
Wobei:
- PROJECT_ID ist die Projekt-ID Ihres Google Cloud .
OCCURRENCE_ID kann je nach Ausgabe des Befehls aus Alle Metadaten für ein Projekt ansehen einer der folgenden Werte sein:
- Ein numerischer Wert aus einer Liste von Vorkommen.
- Der numerische Wert am Ende der URL aus einer Pub/Sub-Nachricht.
Die Ausgabe enthält Informationen wie Pakettyp, Schweregrad der Sicherheitslücke, CVSS-Score und Informationen zu Korrekturen, sofern verfügbar.
Nächste Schritte
- Weitere Informationen zu Metadaten-Filteroptionen
- Manuelle Suche bei Bedarf durchführen
- Best Practices zum Schutz Ihrer Softwarelieferkette