Sicherheit der Ausführungsumgebung

Jede Funktion wird auf einem versionierten Laufzeit-Image in der sicheren Ausführungsumgebung von Cloud Run-Funktionen ausgeführt. Laufzeit-Images enthalten Betriebssystembibliotheken, Sprachlaufzeiten und andere Systempakete. Google verwaltet alle Laufzeit-Images der Cloud Run-Funktionen und veröffentlicht nach einem Zeitraum der Stabilitätstests Sicherheitspatches und Wartungsupdates.

Laufzeit-Images

Jeder Laufzeit ist ein öffentliches Laufzeit-Image (auch als Ausführungs-Image bezeichnet) in einem öffentlichen Repository auf zugeordnet. Eine Liste der Laufzeit-IDs und ihrer Laufzeit-Images finden Sie unter Laufzeiten.

Laufzeit-Image identifizieren

Sie können das Laufzeit-Image identifizieren, das zum Erstellen Ihrer Funktion verwendet wurde. Sehen Sie sich dazu die Build-Logs für Ihre Funktion an.

Suchen Sie in den Build-Logs nach google.run-image. Dadurch erhalten Sie den Logeintrag aus dem Build-Schritt, der die Version des Laufzeit-Images beschreibt, mit dem Ihre Funktion erstellt wird. Ein Logeintrag für eine Node.js-Funktion könnte beispielsweise so aussehen:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22:nodejs20_20230924_20_6_1_RC00",
  ...
}

Richtlinie für Sicherheitsupdates

Sie können eine der folgenden Richtlinien für Sicherheitsupdates auswählen:

  • Automatische Updates (Standard): Aktualisierungen und Sicherheitspatches für die Laufzeitumgebung werden in neuen Versionen des Laufzeit-Images veröffentlicht. Nach einem Testzeitraum, der auf Stabilität und Zuverlässigkeit prüft, wird die aktualisierte Laufzeit für alle Funktionen eingeführt, was zu einer Aktualisierung ohne Ausfallzeiten führt. Automatische Sicherheitsupdates sind mit Cloud Run-Funktionen der 1. Generation und Cloud Run-Funktionen verfügbar. Wenn Sie Sicherheitsupdates auf Sprachebene übernehmen möchten, müssen Sie möglicherweise Funktionen neu erstellen, die kompilierte Sprachen wie Go oder Java verwenden.

  • Bei Bereitstellungsupdates: werden Aktualisierungen und Sicherheitspatches nur dann auf Laufzeiten angewendet, wenn Funktionen bereitgestellt oder neu bereitgestellt werden, sofern nicht anders angegeben. Aktualisierungen für die Bereitstellung sind sowohl für Cloud Run-Funktionen der 1. Generation als auch für Cloud Run-Funktionen verfügbar.

Die Richtlinie zur Laufzeitaktualisierung kann mit dem Flag --runtime-update-policy in Ihrem gcloud deploy-Befehl geändert werden.

Aktualisierungsrichtlinie der Funktion festlegen

Sie können die Aktualisierungsrichtlinie der Funktion ändern, indem Sie das Flag --runtime-update-policy in den Befehl gcloud deploy einfügen, wie hier gezeigt:

  gcloud functions deploy FUNCTION_NAME \
    --runtime-update-policy=POLICY ...

Ersetzen Sie:

  • FUNCTION_NAME durch den Namen Ihrer Funktion
  • POLICY durch automatic oder on-deploy

Die Standardrichtlinie für alle Funktionen ist automatic.

Aktualisierungsrichtlinie der Funktion prüfen

Sie können die Aktualisierungsrichtlinie der Funktion mit dem folgenden Befehl prüfen:

  gcloud functions describe FUNCTION_NAME \

Dabei ist FUNCTION_NAME der Name Ihrer Funktion.

  • Funktionen mit aktivierten automatischen Sicherheitsupdates haben den Schlüssel automaticUpdatePolicy
  • Funktionen, die bei der Bereitstellung aktualisiert werden, haben den Schlüssel onDeployUpdatePolicy.

Laufzeit-Image identifizieren, das nach einer automatischen Aktualisierung verwendet wird

Wenn Sie automatische Updates aktivieren, tauscht Cloud Run-Funktionen das Laufzeit-Image der Funktion durch eine neuere Überarbeitung aus, die zusätzliche Sicherheitspatches und Updates enthält. Diese Änderung wird in den Laufzeitlogs Ihrer Funktion angezeigt.

In der Laufzeitumgebung werden Sie mit dem Label runtime_version informiert, wenn für Ihre Funktion ein neues Laufzeit-Image verwendet wird. Ein Logeintrag für eine automatisch aktualisierte Nodejs-Funktion könnte so aussehen:

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}

Sicherheitsscans für Cloud Run-Funktionen

Cloud Run-Funktionen, für die automatische Updates aktiviert sind, basieren auf einem scratch-Image. Daher hat der Container, der Ihre Funktion in Artifact Registry darstellt, kein Basis-Image und ist erheblich kleiner als Container für Funktionen mit Deployments. Das Basis-Image wird zur Laufzeit mit dem Funktions-Image kombiniert, um eine vollständige Funktion zu erstellen.

Mit Sicherheitsscannern können Sie die von Google verwalteten Basis-Images überwachen, die Ihre Funktion unterstützen. Das neueste Basis-Image für Ihre Funktion finden Sie unter REGION-docker.pkg.dev/serverless-runtimes/STACK/runtimes/RUNTIME_ID.

Ersetzen Sie:

  • REGION durch die gewünschte Region, z. B. us-central1
  • STACK mit dem bevorzugten Betriebssystemstack, z. B. google-22-full
  • RUNTIME_ID durch die von der Funktion verwendete Laufzeit-ID, z. B. python310

Beispiel: Das neueste Node.js 20-Basis-Image mit dem google-22-full-Stack, das in us-central1 gehostet wird, wird mit dieser URL referenziert: us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22

Da das Image jetzt auf scratch basiert, kann das in Artifact Registry gespeicherte Image nicht direkt ausgeführt werden. Wenn Sie ein ausführbares Image benötigen, verwenden Sie die On-Deploy-Richtlinie.