Workflows verwenden Dienstkonten, um Workflows Zugriff auf Google Cloud-Ressourcen zu gewähren. Dienstkonten sind spezielle Konten, die als Identität für eine Nicht-Person dienen, z. B. als Funktion, Anwendung oder VM. Sie bieten Ihnen die Möglichkeit, diese Nicht-Personen zu authentifizieren. Ein Dienstkonto oder Hauptkonto kann als Identität und Ressource betrachtet werden.
Wenn Sie ein Dienstkonto als Identität betrachten, können Sie einem Dienstkonto eine Rolle zuweisen, sodass es auf eine Ressource wie einen Workflow zugreifen kann.
Wenn Sie ein Dienstkonto als Ressource betrachten, können Sie anderen Nutzern Rollen für den Zugriff oder die Verwaltung dieses Dienstkontos gewähren.
Ein Dienstkonto wird durch seine E-Mail-Adresse definiert, die für das Konto spezifisch ist.
Weitere Informationen zum Einrichten der Authentifizierung mit einer Produktionsanwendung finden Sie unter Authentifizierung als Dienstkonto.
Standarddienstkonto
Jeder Workflow ist zum Erstellen des Workflows mit einem IAM-Dienstkonto (Identity and Access Management) verknüpft. Wenn Sie beim Erstellen eines Workflows kein Dienstkonto angeben, verwendet der Workflow das Compute Engine-Standarddienstkonto für seine Identität. Du kannst ein mit dem Workflow verknüpftes Dienstkonto bestätigen. Weitere Informationen in diesem Dokument finden Sie unter Verknüpftes Dienstkonto bestätigen.
Wir empfehlen, das Standarddienstkonto nur zum Testen und Entwickeln zu verwenden.
Dienstkontoberechtigungen
Da es sich bei Dienstkonten um Identitäten handelt, können Sie einem Dienstkonto Zugriff auf Ressourcen in Ihrem Projekt gewähren, indem Sie ihm eine Rolle zuweisen, wie Sie es auch für jedes andere Hauptkonto tun würden. Wenn du beispielsweise möchtest, dass dein Workflow Logs an Cloud Logging sendet, muss dem Dienstkonto, das den Workflow ausführt, eine Rolle mit der Berechtigung logging.logEntries.create
gewährt worden sein (z. B. die Rolle Logs Writer
).
Für das Workflow-Dienstkonto ist die Rolle workflows.invoker
nicht erforderlich, es sei denn, der Workflow ruft sich selbst oder andere Workflows auf (d. h. erstellt neue Workflowausführungen). Weitere Informationen finden Sie unter Workflows aufrufen.
Weitere Informationen zum Gewähren von Rollen für Hauptkonten, einschließlich Dienstkonten, finden Sie unter Zugriff gewähren, ändern und widerrufen.
Dienstkonten an Ressourcen anhängen
Zum Erstellen einer Ressource und zum Anhängen eines Dienstkontos benötigen Sie Berechtigungen zum Erstellen dieser Ressource und zur Übernahme der Identität des Dienstkontos, das Sie an die Ressource anhängen. Berechtigungen zum Übernehmen der Identität des Dienstkontos und indirekter Zugriff auf alle Ressourcen, auf die das Dienstkonto zugreifen kann, werden von allen Rollen gewährt, die die Berechtigung iam.serviceAccounts.actAs
enthalten.
Weitere Informationen finden Sie unter Identitätswechsel für Dienstkonten verwalten.
Cloud Functions (2. Generation) aufrufen
In Cloud Functions (2. Generation) stehen Aufrufberechtigungen zur Verwaltung des zugrunde liegenden Cloud Run-Dienstes zur Verfügung. Wenn in Ihrem Workflow ein Cloud Functions-Dienst der 2. Generation aufgerufen wird, müssen Sie dem Dienstkonto des Anrufers die Rolle „Cloud Functions-Aufrufer“ (roles/cloudfunctions.invoker
) nicht zuweisen. Stattdessen müssen Sie die Rolle „Cloud Run-Aufrufer“ (roles/run.invoker
) zuweisen.
Weitere Informationen finden Sie unter Unterschiede in Cloud Functions (2. Generation).
Verknüpftes Dienstkonto eines Workflows prüfen
Sie können prüfen, welches Dienstkonto mit einem bestimmten Workflow verknüpft ist.
Console
Rufe in der Google Cloud Console die Seite Workflows auf:
Zu den WorkflowsKlicken Sie auf der Seite Workflows auf den Namen des Workflows.
Klicken Sie auf der Seite Workflowdetails auf den Tab Details.
Das mit dem Workflow verknüpfte Dienstkonto wird angezeigt.
gcloud
Öffnen Sie ein Terminalfenster.
Geben Sie den folgenden Befehl ein:
gcloud workflows describe MY_WORKFLOW
Ersetzen Sie
MY_WORKFLOW
durch den Namen des Workflows.Es wird eine vollständige Workflowbeschreibung mit dem zugehörigen Dienstkonto zurückgegeben. Beispiel:
createTime: '2020-06-05T23:45:34.154213774Z' name: projects/myProject/locations/us-central1/workflows/myWorkflow serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com sourceContents: [...]