Cloud Functions-Funktion sichern

Diese Seite bietet eine allgemeine Übersicht darüber, wie Sie Interaktionen mit Ihren Cloud Functions-Ressourcen steuern können.

Zugriffssteuerung

Es gibt zwei Möglichkeiten, den Zugriff für Cloud Functions zu steuern:

Zugriff mit Identität schützen

Eine Möglichkeit zur Steuerung des Zugriffs auf eine Funktion besteht darin, dass sich die anfragende Entität mithilfe von Anmeldedaten identifizieren muss. Anmeldedaten sind eine Art "Name", der durch ein Secret gesichert ist, das der Entität bekannt ist oder auf das sie zugreifen kann, z. B. ein Passwort oder ein Hardware-Dongle. Standardmäßig werden Funktionen als privat bereitgestellt und erfordern solche Anmeldedaten. Sie können aber auch eine Funktion als öffentlich, also nicht erforderlich, bereitstellen.

Der erste Schritt in diesem Prozess besteht darin, die Anmeldedaten zu validieren, um zu prüfen, ob die anfragende Entität tatsächlich mit den Angaben übereinstimmt, und ob die Kombination aus Name und Secret korrekt ist. Dieser Schritt wird als (Authentication) bezeichnet.

Nachdem die Identität der anfragenden Entität authentifiziert wurde, kann die Zugriffsebene, die dieser Identität zugewiesenen Berechtigungen, ausgewertet werden. Dieser Schritt wird als (Authorization) bezeichnet.

Authentifizierung

Cloud Functions unterstützt zwei verschiedene Arten von Identitäten, die auch Hauptkonten genannt werden:

  • Dienstkonten: Dies sind spezielle Konten, die als Identität einer Nicht-Identität verwendet werden, beispielsweise eine Funktion, eine Anwendung oder eine VM. Sie bieten Ihnen die Möglichkeit, diese Nicht-Personen zu authentifizieren.
  • Nutzerkonten: Diese Konten stellen Personen dar, entweder als einzelne Google-Kontoinhaber oder als Teil einer von Google kontrollierten Entität wie einer Google-Gruppe.

Sowohl bei Dienstkonten als auch bei Nutzerkonten ist der Namensteil der Anmeldedaten normalerweise eine E-Mail-Adresse, die mit dem Konto verknüpft ist. Das Secret für ein Nutzerkonto ist in der Regel ein Passwort. Für ein Dienstkonto ist es normalerweise der private Schlüssel des Schlüsselpaars, das zusammen mit dem Konto erstellt wird.

Nutzerpasswörter und Dienstkontoschlüssel selbst sind jedoch sehr leistungsfähig: Sie können einen umfassenden Zugriff auf Daten und Funktionen ermöglichen und bleiben so lange gültig, bis sie aktiv widerrufen oder geändert werden. Zur Verringerung der möglichen Schäden, die durch ein Datenleck auftreten können, werden in Google Cloud die Kernanmeldedaten durch darauf basierende kurzfristige Anmeldedaten, ein Token, ersetzt, das eine begrenzte Lebensdauer hat und als Teil der Anfragesequenz sofort erstellt wird. Das Token wird mit der Anfrage übergeben und dient zur sicheren Authentifizierung des Kontos.

In Cloud Functions werden zwei Arten von Tokens verwendet: Zugriffstokens und ID-Tokens. Zugriffstokens werden in der Regel verwendet, um API-Aufrufe zu authentifizieren. ID-Tokens werden verwendet, um Aufrufe von von Entwicklern erstellten Code zu authentifizieren, z. B. wenn eine Funktion eine andere Funktion aufruft. Die Tokens selbst werden mit dem OAuth 2-Framework und dessen Erweiterung Open Identity Connect erstellt. Die Reihenfolge ist jedoch komplex und fehleranfällig. Außerdem wird die Verwendung von Cloud-Clientbibliotheken zur Verwaltung des Prozesses dringend empfohlen.

Autorisierung

Sobald die Identität des Anfragenden bestätigt wurde, muss geprüft werden, was der Anfragende tun darf. Diese Bewertung basiert darauf, welche Berechtigungen dem authentifizierten Konto bei der Einrichtung erteilt wurden. Cloud Functions verwendet dazu Identity and Access Management (IAM). Rollen, bei denen es sich um Gruppen von einzelnen Berechtigungen handelt, die der Einfachheit halber in Gruppen zusammengefasst werden, werden dem Konto zugewiesen, entweder direkt oder über eine Konfiguration, die als Richtlinie bezeichnet wird. Jede einzelne Berechtigung in der Rollengruppe entspricht in der Regel einem einzelnen REST API-Aufruf, der vom angeforderten Dienst bereitgestellt wird. Weitere Informationen zu diesem Vorgang finden Sie unter Zugriff über IAM autorisieren.

Netzwerkbasierte Zugriffssteuerung

Sie können den Zugriff auch einschränken, indem Sie für einzelne Funktionen Netzwerkeinstellungen angeben. Dies ermöglicht eine genauere Steuerung des eingehenden und ausgehenden Traffics des Netzwerks zu Ihren Funktionen.

Isolation und Sandboxing

Funktionsinstanzen werden intern mithilfe der gVisor-Sandbox-Plattform voneinander isoliert. Eine Funktion kann standardmäßig nicht auf die Betriebsumgebungen anderer Funktionen zugreifen.

Aktualisierungen der Ausführungsumgebung

Google stellt Sicherheitspatches und Wartungsupdates nach einem Zeitraum der Stabilitätstests bereit. Cloud Functions kann Aktualisierungen auf andere Aspekte der Ausführungsumgebung anwenden, z. B. das Betriebssystem oder eingeschlossene Pakete. Diese Aktualisierungen tragen zur Sicherheit der Ausführungsumgebung Ihrer Funktion bei.

Cloud Functions-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 Functions der 1. und der 2. Generation 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 in Cloud Functions (1. Generation) als auch in Cloud Functions (2. Generation) verfügbar.

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

Weitere Informationen zu Sicherheitsupdates für die Ausführungsumgebung finden Sie unter Richtlinien für Sicherheitsupdates.