Mit der Zugriffssteuerung wird bestimmt, wer berechtigt ist, auf Dienste und Ressourcen in einem Google Cloud-Projekt zuzugreifen. In App Engine gibt es einige verschiedene Anwendungsfälle für die Einrichtung der Zugriffssteuerung:
Teammitgliedern Zugriff auf das Google Cloud-Projekt gewähren, damit sie Dienste einrichten und Anwendungen bereitstellen können.
Ihrer Anwendung Zugriff auf Google Cloud-Dienste gewähren, z. B. Cloud Storage. Jeder API-Aufruf muss in allen Cloud-Diensten authentifiziert und autorisiert werden, einschließlich der Aufrufe über Ihre App Engine-Anwendung.
Nutzern Zugriff auf Ressourcen in einem Google Cloud-Projekt gewähren. Auch wenn dieser Anwendungsfall nicht üblich ist, kann es sein, dass Ihre Anwendung im Auftrag eines Nutzers Zugriff auf eine Cloud-Ressource anfordern muss. Beispiel: Ihre Anwendung muss möglicherweise auf Daten zugreifen, die Ihren Nutzern gehören.
Diese Seite bietet für jeden Anwendungsfall eine Übersicht über die Einrichtung der Zugriffssteuerung.
Hintergrundinformationen zur Zugriffssteuerung mit der Google Cloud Platform finden Sie in der Übersicht über Identity and Access Management (IAM).
Teammitgliedern Zugriff gewähren
Wenn Sie einem Entwickler Zugriff auf Ihr Google Cloud-Projekt gewähren möchten, erstellen Sie mindestens eines der beiden folgenden Konten:
Ein Nutzerkonto, das mit einem Google-Konto verknüpft ist und eine bestimmte Person in Ihrem Projekt repräsentiert.
Mit einem Nutzerkonto können Sie sich über die folgenden Tools authentifizieren:
- Google Cloud Console
- Google Cloud CLI
- IDEs und Build-Tools, die die gcloud CLI verwenden, um App Engine-Anwendungen zu testen und bereitzustellen
Ein Dienstkonto, das statt einer Person eine Anwendung oder einen Prozess repräsentiert. Verwenden Sie Dienstkonten in Ihren automatisierten Build-, Test- und Bereitstellungsprozessen, insbesondere wenn mehrere Entwickler diese Prozesse ausführen können.
Sie können ein Dienstkonto für die Authentifizierung über die folgenden Tools verwenden:
- gcloud-CLI
- IDEs und Build-Tools, die die gcloud CLI zum Testen und Bereitstellen von App Engine-Anwendungen verwenden
Nutzerkonto erstellen
Öffnen Sie in der Google Cloud Console die Seite IAM.
Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.
Klicken Sie auf Hinzufügen.
Geben Sie eine E-Mail-Adresse ein.
Wählen Sie Rollen aus, die Zugriff auf App Engine-Features gewähren.
Wenn der Nutzer auch Zugriff auf andere Cloud-Dienste benötigt, wählen Sie Rollen aus, die Zugriff auf andere Cloud-Dienste gewähren.
Klicken Sie auf Speichern.
Der Nutzer kann sich jetzt in der Google Cloud Console anmelden und die gcloud CLI autorisieren.
Sie können auch Nutzerkonten über gcloud, die REST API oder Clientbibliotheken erstellen.
Dienstkonto erstellen
Öffnen Sie die Seite Dienstkonten in der Google Cloud Console.
Wählen Sie Ihr Projekt aus und klicken Sie auf Öffnen.
Klicken Sie auf Dienstkonto erstellen.
Geben Sie einen Namen für das Dienstkonto ein. Dieser Name sollte für die Anzeige nutzerfreundlich sein.
Klicken Sie auf Erstellen.
Wählen Sie Rollen aus, die Zugriff auf App Engine-Features gewähren.
Wenn das Dienstkonto auch Zugriff auf andere Cloud-Dienste benötigt, wählen Sie Rollen aus, die Zugriff auf andere Cloud-Dienste gewähren.
Klicken Sie auf Weiter.
Geben Sie optional Nutzerkonten an, die das Dienstkonto verwalten können. Sie können auch Nutzerkonten angeben, die über das Dienstkonto indirekt auf alle Ressourcen zugreifen können, auf die das Dienstkonto Zugriff hat.
Klicken Sie auf Speichern.
Eine Liste der vorhandenen Dienstkonten wird angezeigt.
Wenn Sie Ihr Dienstkonto außerhalb von Google Cloud verwenden müssen, folgen Sie der Anleitung zum Erstellen eines Dienstkontoschlüssels.
Weitere Informationen
- Wenn Sie das Dienstkonto in Ihren automatisierten Build- und Bereitstellungsprozessen verwenden, autorisieren Sie die gcloud CLI mit einem Dienstkonto.
- Wenn Sie das Dienstkonto mit einer IDE verwenden, folgen Sie der Anleitung der IDE.
- Wenn Sie beim Zugriff auf andere Google Cloud-Dienste oder beim Ausführen von Aufgaben eine eindeutige Identität für eine Version Ihrer App Engine-Anwendung verwenden müssen, können Sie in App Engine ein nutzerverwaltetes Dienstkonto angeben.
Anwendung Zugriff auf Cloud-Dienste gewähren
Jeder Aufruf eines Cloud-Dienstes muss authentifiziert und autorisiert werden, einschließlich der Aufrufe anderer Cloud-Dienste wie Cloud Storage mit einer App Engine-Anwendung.
Standardmäßig sind Aufrufe der Dienste mit Ihrer App Engine-Anwendung autorisiert, die sich im selben Projekt befinden. So funktioniert der Standardablauf:
Um Aufrufe eines Cloud-Dienstes zu initiieren, erstellt Ihre Anwendung ein Clientobjekt, das die Anmeldedaten und andere Daten enthält, die sie benötigt, um mit dem Dienst zu interagieren. Wenn Sie keine Anmeldedaten im Konstruktor des Clients angeben, sucht der Client in der Anwendungsumgebung nach Anmeldedaten.
Beispiel für das Erstellen eines Clients für Cloud Storage:
Go
Java
Node.js
PHP
Python
Ruby
- Standardmäßig enthält die Anwendungsumgebung Anmeldedaten aus dem App Engine-Standarddienstkonto.
Dieses Dienstkonto wird von Google angelegt, wenn Sie eine App Engine-Anwendung erstellen. Es erhält die vollständigen Berechtigungen zum Verwalten und Verwenden aller Cloud-Dienste in einem Google Cloud-Projekt.
Sie können diesen Standardablauf mit einer der folgenden Methoden überschreiben:
Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
fest. Wenn diese Variable festgelegt ist, verwenden Cloud-Dienste die von der Variablen angegebenen Anmeldedaten anstelle der Daten aus dem Standarddienstkonto.Geben Sie Anmeldedaten an, wenn Sie das Objekt
Client
für einen Cloud-Dienst instanziieren. Wenn Ihre Anwendung beispielsweise einen Cloud-Dienst in einem anderen Projekt aufruft, müssen Sie möglicherweise Anmeldedaten manuell übergeben.
- Speichern Sie Ihre Anmeldedaten an einem sicheren Ort wie Firestore im Datastore-Modus (Datastore) und rufen Sie sie zur Laufzeit ab.
- Behalten Sie die Anmeldedaten im Code bei, aber verschlüsseln Sie sie mit einem Schlüsselspeicher wie Cloud KMS.
Informationen zu den Vorteilen der einzelnen Methoden finden Sie unter Secret-Verwaltungslösung auswählen.
Nutzern Zugriff auf Cloud-Ressourcen gewähren
Wenn Sie möchten, dass Ihre Anwendung Nutzerdaten von einem anderen Google-Dienst liest, müssen Sie OAuth 2.0 für Webserveranwendungen einrichten. Wenn Sie beispielsweise die Daten eines Nutzers aus Google Drive abrufen und in Ihre Anwendung übernehmen möchten, verwenden Sie OAuth 2.0 für Webserveranwendungen, um bestimmte Daten freizugeben, während andere Daten wie Nutzernamen und Passwörter privat bleiben.
Domainweite Übertragung von Befugnissen in Google Workspace
Wenn Sie eine Google Workspace-Domain (ehemals G Suite) haben, kann ein Administrator der Domain eine Anwendung dazu autorisieren, im Namen von Nutzern in der Google Workspace-Domain auf Nutzerdaten zuzugreifen. Beispielsweise nutzt eine Anwendung, die die Google Calendar API zum Hinzufügen von Ereignissen zu den Kalendern aller Nutzer in einer Google Workspace-Domain verwendet, ein Dienstkonto, um im Namen der Nutzer auf die Google Calendar API zuzugreifen.
Das Autorisieren eines Dienstkontos für den Zugriff auf Daten im Namen von Nutzern in einer Domain wird manchmal als „Übertragen domainweiter Befugnisse“ an ein Dienstkonto bezeichnet. Dieser Schritt setzt weiterhin OAuth 2.0 voraus und erfordert, dass ein Google Workspace-Domainadministrator die domainweiten Befugnisse für das Dienstkonto autorisiert.
Dienstkonto angeben
Mit App Engine können Sie zwei Arten von Dienstkonten verwenden:
- Versionsspezifisches Dienstkonto: Ein Dienstkonto, das als Identität für eine bestimmte Version Ihres bereitgestellten Dienstes konfiguriert ist. Wenn Sie eine vorhandene Version oder eine neue Version bereitstellen, können Sie ein Dienstkonto angeben, das als Identität dieser Version fungieren soll. Wenn eine Version beispielsweise Berechtigungen benötigt, die sich vom Standarddienstkonto auf Anwendungsebene unterscheiden, können Sie ein Dienstkonto zuweisen, das speziell für diese Version gilt. Weitere Informationen finden Sie unter App Engine-Dienstkonten konfigurieren.
Standarddienstkonto auf Anwendungsebene: Wenn Sie kein versionsspezifisches Dienstkonto konfigurieren, verwendet Google Cloud das Standarddienstkonto auf Anwendungsebene für alle Ihre bereitgestellten Dienste. Dieses Standarddienstkonto auf Anwendungsebene wird beim Erstellen der Anwendung zugewiesen. Weitere Informationen finden Sie unter Standarddienstkonto auf Anwendungsebene zuweisen.
Wenn Sie kein Standarddienstkonto auf Anwendungsebene zuweisen, verwendet Google Cloud das automatisch erstellte App Engine-Standarddienstkonto (
PROJECT_ID@appspot.gserviceaccount.com
).Abhängig von der Konfiguration Ihrer Organisationsrichtlinie kann dem Standarddienstkonto für Ihr Projekt automatisch die Rolle "Bearbeiter" zugewiesen werden. Wir empfehlen dringend, die automatische Rollenzuweisung zu deaktivieren, indem Sie die Einschränkung der Organisationsrichtlinien
iam.automaticIamGrantsForDefaultServiceAccounts
erzwingen. Wenn Sie Ihre Organisation nach dem 3. Mai 2024 erstellt haben, wird diese Einschränkung standardmäßig erzwungen.Wenn Sie die automatische Rollenzuweisung deaktivieren, müssen Sie entscheiden, welche Rollen den Standarddienstkonten zugeteilt werden sollen, und diese Rollen dann selbst zuweisen.
Wenn das Standarddienstkonto bereits die Rolle "Bearbeiter" hat, sollten Sie die Rolle "Bearbeiter" durch weniger strikte Rollen ersetzen. Verwenden Sie zum sicheren Ändern der Rollen des Dienstkontos Policy Simulator, um die Auswirkungen der Änderung zu sehen, und weisen Sie die entsprechenden Rollen zu und widerrufen Sie sie.