App Engine-Anwendungen benötigen ein Dienstkonto, um auf andere Google Cloud-Dienste zugreifen und Aufgaben ausführen zu können.
In App Engine gibt es zwei Arten von Dienstkonten. Jedes Dienstkonto in Ihrem Cloud-Projekt kann zugewiesen werden, um entweder als Standarddienstkonto auf Anwendungsebene oder als ein Dienstkonto pro Version zu fungieren:
Standarddienstkonto auf Anwendungsebene: Dieses Dienstkonto wird für alle bereitgestellten Dienste verwendet, wenn Sie kein „versionsspezifisches Dienstkonto“ konfigurieren. Sie können ein Dienstkonto zuweisen, das Sie erstellt haben, oder das automatisch erstellte Standarddienstkonto verwenden, das erstellt wird, wenn Sie einen Dienst zum ersten Mal in Ihrem Cloud-Projekt bereitstellen. Beispiel: App Engine-Standarddienstkonto (
PROJECT_ID@appspot.gserviceaccount.com
).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.
Konfigurierte Dienstkonten aufrufen
Führen Sie den Befehl gcloud app describe
aus, um das aktuelle Standarddienstkonto auf Anwendungsebene aufzurufen.
So zeigen Sie das Dienstkonto an, das von einer bereitgestellten Version verwendet wird:
gcloud
Führen Sie den Befehl gcloud app versions describe
aus:
gcloud app versions describe VERSION_ID --service=SERVICE_NAME
Ersetzen Sie:
VERSION_ID
durch die ID der Version.SERVICE_NAME
durch den Namen des Dienstes, den Sie erstellt haben.
Console
- Wechseln Sie in der Konsole zum Tab App Engine-Versionen. Zur Seite "Versionen"
- Suchen Sie die E-Mail-Adresse Ihres App Engine-versionsspezifischen Dienstkontos. Beispiel:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Standarddienstkonto für App-Ebene zuweisen
Das Standarddienstkonto auf Anwendungsebene ist standardmäßig das automatisch erstellte Dienstkonto PROJECT_ID@appspot.gserviceaccount.com
. Sie können mithilfe der Google Cloud-Befehlszeile, der Google Cloud Console oder der Admin API ein anderes Dienstkonto zuweisen, das als Standarddienstkonto auf Anwendungsebene fungiert.
Standarddienstkonto für eine Anwendung bei der Anwendungserstellung angeben
Während der ersten Erstellung der App Engine-Anwendung können Sie ein Dienstkonto zuweisen, das Sie erstellt haben oder Sie verwenden das automatisch erstelltePROJECT_ID@appspot.gserviceaccount.com
Dienstkonto, das als Standard fungiert.
Sie haben folgende Möglichkeiten, um eine App Engine-Anwendung zu erstellen und ein Standarddienstkonto auf App-Ebene zuzuweisen:
gcloud
Führen Sie den Befehl gcloud app create
aus:
gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie:
SERVICE_ACCOUNT_NAME
durch den Namen des Dienstes, den Sie erstellt haben.PROJECT_ID
durch die ID des Google Cloud-Projekts, in dem Sie das Dienstkonto zuweisen möchten.
Console
Rufen Sie die Seite "App Engine" auf:
Google Cloud-Projekt erstellen.
Wählen Sie im Abschnitt Anwendung erstellen ein Dienstkonto unter Identität und API-Zugriff aus.
Standarddienstkonto für Ihre Anwendung aktualisieren
Sie haben folgende Möglichkeiten, um ein neues Dienstkonto zuzuweisen, um das Standarddienstkonto für Ihre Anwendung zu aktualisieren:
gcloud
Führen Sie den Befehl gcloud app update
aus:
gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie:
SERVICE_ACCOUNT_NAME
durch den Namen des Dienstes, den Sie erstellt haben.PROJECT_ID
durch die ID des Google Cloud-Projekts, in dem Sie das Dienstkonto zuweisen möchten.
Jede neue Version, die Sie hier bereitstellen, verwendet das neue Standarddienstkonto auf Anwendungsebene, es sei denn, Sie weisen explizit ein versionsspezifisches Dienstkonto zu.
Console
Wechseln Sie in der Console zum App Engine-Tab Anwendungseinstellungen und klicken Sie auf Anwendungseinstellungen bearbeiten.
Wählen Sie unter Dienstkonto auswählen ein Standarddienstkonto für App-Ebene aus und klicken Sie auf Speichern.
Sie werden zum Tab Anwendungseinstellungen weitergeleitet, auf dem Sie die E-Mail-Adresse des aktualisierten Standarddienstkontos auf Anwendungsebene anzeigen können. Beispiel:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.Jede neue Version, die Sie hier bereitstellen, verwendet das neue Standarddienstkonto auf Anwendungsebene, es sei denn, Sie weisen explizit ein versionsspezifisches Dienstkonto zu.
Mit einem versionsspezifischen Dienstkonto bereitstellen
Sie können ein versionsspezifisches Dienstkonto nur während der Bereitstellung neuer Versionen festlegen. Mit einem versionsspezifischen Dienstkonto können Sie jeder Anwendungsversion je nach den ausgeführten Aufgaben unterschiedliche Berechtigungen gewähren und vermeiden, dass mehr Berechtigungen als erforderlich gewährt werden.
Sie benötigen ein vorhandenes Dienstkonto, um Ihre Anwendung bereitstellen zu können. Das versionsspezifische Dienstkonto muss sich im selben Projekt befinden, in dem Sie Ihre Anwendung bereitstellen.
Versionsspezifisches Dienstkonto festlegen
gcloud
Führen Sie den Befehl gcloud app deploy
aus:
gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie:
SERVICE_ACCOUNT_NAME
durch den Namen des Dienstes, den Sie erstellt haben.PROJECT_ID
durch die ID des Google Cloud-Projekts, in dem Sie das Dienstkonto zuweisen möchten. Das versionsspezifische Dienstkonto muss sich im selben Projekt befinden, in dem Sie Ihre Anwendung bereitstellen.
app.yaml
Geben Sie in der Datei app.yaml
das Dienstkonto an, indem Sie das Element service_account
hinzufügen:
service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie:
SERVICE_ACCOUNT_NAME
durch den Namen des Dienstes, den Sie erstellt haben.PROJECT_ID
durch die ID des Google Cloud-Projekts, in dem Sie das Dienstkonto zuweisen möchten. Das versionsspezifische Dienstkonto muss sich im selben Projekt befinden, in dem Sie Ihre Anwendung bereitstellen.
App Engine-Standarddienstkonto
Das App Engine-Standarddienstkonto wird automatisch erstellt, wenn Sie App Engine verwenden.
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.
Informationen zum Zuweisen von Rollen für Dienstkonten und andere Hauptkonten finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Informationen zum Ändern von Berechtigungen, zum Löschen und zum Wiederherstellen Ihrer Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.