App Engine-Dienstkonten konfigurieren

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

  1. Wechseln Sie in der Konsole zum Tab App Engine-Versionen. Zur Seite "Versionen"
  2. 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

  1. Rufen Sie die Seite "App Engine" auf:

    Zu App Engine

  2. Google Cloud-Projekt erstellen.

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

  1. Wechseln Sie in der Console zum App Engine-Tab Anwendungseinstellungen und klicken Sie auf Anwendungseinstellungen bearbeiten.

    Zu den Anwendungseinstellungen

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

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.

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.

appengine-web.xml

Wenn Sie die Java-Laufzeiten verwenden und die gebündelten Legacy-Dienste von App Engine einschließen, geben Sie Ihr Dienstkonto an. Fügen Sie dazu das Element <service-account> in appengine-web.xml-Datei:

<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>

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.

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.