Pakete automatisch scannen

In diesem Dokument wird beschrieben, wie Sie die Container Scanning API aktivieren, ein Image per Push in Artifact Registry übertragen und die Liste der im Image gefundenen Sicherheitslücken aufrufen.

In Artefaktanalyse werden Informationen zu Sicherheitslücken als Hinweise gespeichert. Für jede mit einem Bild verknüpfte Instanz eines Hinweises wird ein Vorkommen erstellt. Weitere Informationen finden Sie in der Übersicht und in der Preisdokumentation.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Repository in Artifact Registry erstellen und ein Paket mit Ihrem Anwendungscode in das Repository übertragen. Wenn Sie mit der Verwaltung von Paketen in Artifact Registry nicht vertraut sind, lesen Sie die folgenden Themen:
    1. Java-Pakete in Artifact Registry speichern
    2. Node.js-Pakete in Artifact Registry speichern
    3. Python-Pakete in Artifact Registry speichern

Durch die Aktivierung dieser API wird auch das Scannen von Sprachpaketen in Artifact Registry aktiviert. Unterstützte Pakettypen

Sicherheitslücken im Paket ansehen

Die Artefaktanalyse scannt neue Pakete, wenn sie in Artifact Registry hochgeladen werden. Bei diesem Scan werden Informationen zum Paket und seinen Abhängigkeiten extrahiert.

Sie können Sicherheitslückenvorkommen für Ihre Images in Artifact Registry mit der Google Cloud Console, der Google Cloud CLI oder der Container Analysis API aufrufen. Wenn ein Image Sicherheitslücken aufweist, können Sie dann 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 neu gescannt werden.

Vorkommen in der Google Cloud Console ansehen

So sehen Sie sich die Sicherheitslücken in einem Paket an:

  1. Rufen Sie die Liste der Repositories ab.

    Zur Seite „Repositories“

  2. Klicken Sie in der Liste der Repositories auf ein Repository.

  3. Klicken Sie in der Paketliste auf einen Paketnamen.

    Alle Sicherheitslücken des jeweiligen Pakets werden in der Spalte Vulnerabilities (Sicherheitslücken) angezeigt.

    Ein gescanntes Paket mit Sicherheitslücken

  4. 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 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.

    Auf der Seite mit den Scanergebnissen werden Sicherheitslücken, Korrekturen und der effektive Schweregrad aufgeführt.

    In der Tabelle mit den Sicherheitslücken sind für jede gefundene Sicherheitslücke der CVE-Name (Common Vulnerabilities and Exposures), der effektive Schweregrad, die CVSS-Punktzahl (Common Vulnerability Scoring System), Korrekturen (sofern 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. Google Cloud In dieser Tabelle werden in der Console bis zu 1.200 Sicherheitslücken pro Seite angezeigt.

  5. Klicken Sie auf den Namen der CVE, um Details zu einer bestimmten CVE aufzurufen.

  6. 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 Behobene anzeigen. Der Linktext lautet Anzeigen für Sicherheitslücken ohne Korrektur und Behobene anzeigen 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 aufrufen.
  • 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 Abruf zu filtern. In den folgenden Abschnitten werden die unterstützten Suchfilter beschrieben.

Vorkommen eines bestimmten Typs aufrufen

Mit dem Wert kind können Sie nach Ereignistyp 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 paketbasiertes Scannen nicht unterstützt.

API

Verwenden Sie in Ihrer API-Abfrage den folgenden Filterausdruck:

kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"

Wobei:

  • PACKAGE_VULNERABILITY ist 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 Ihre Projekt-ID der 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, mavenArtifacts und npmPackages.
    • VERSION ist die Versionsnummer des Pakets.

Mit der Funktion hasPrefix können Sie mit einem größeren Umfang filtern.

Die folgenden Filter beschränken die Ergebnisse beispielsweise auf Vorkommen einer bestimmten Art in mehreren Versionen desselben Pakets:

kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")

Wobei:

  • Mit RESOURCE_URL_PREFIX wird ein Teilstring aus einer Ressourcen-URL angegeben.
    • 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

Vorkommen von Sicherheitslücken ansehen

Sie können Listen mit Sicherheitslückenvorkommen mit der gcloud CLI oder der Artifact Analysis API aufrufen.

gcloud

Mit dem Flag --show-package-vulnerability rufen Sie eine Liste der Vorkommen von Sicherheitslücken für ein Paket ab:

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.

Images aufrufen, die einem bestimmten Hinweis zugeordnet sind

Sie können eine Liste von Ressourcen abrufen, die einer bestimmten Hinweis-ID zugeordnet sind. So können Sie 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 paketbasiertes Scannen 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-vulnz ist die PROVIDER_PROJECT_ID fü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 Bild. 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-12345 verwendet.

Mit dem folgenden Filterausdruck können Sie ein bestimmtes Bild auf einen konkreten Hinweis prüfen:

gcloud

Das Filtern von Vorkommen wird in der Google Cloud CLI für paketbasiertes Scannen 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-vulnz ist die PROVIDER_PROJECT_ID für die Analyse von Sicherheitslücken in der Artefaktanalyse.
  • NOTE_ID ist die ID des Hinweises. Sicherheitsrelevante Hinweise werden häufig als CVE-2019-12345 formatiert.

Nächste Schritte