Workflows verwendet Dienstkonten, um Workflows Zugriff auf Google Cloud Ressourcen zu gewähren. Dienstkonten sind spezielle Konten, die als Identität einer Nicht-Person verwendet werden, beispielsweise eine Funktion, eine Anwendung oder eine VM. Sie bieten Ihnen die Möglichkeit, diese Nicht-Personen zu authentifizieren. Ein Dienstkonto kann sowohl als Identität als auch als Ressource betrachtet werden.
Wenn Sie ein Dienstkonto als Identität betrachten, können Sie ihm eine Rolle zuweisen und ihm somit den Zugriff auf eine Ressource ermöglichen (z. B. einen Workflow).
Wenn Sie ein Dienstkonto als Ressource betrachten, können Sie anderen Nutzern Rollen zuweisen, sodass diese auf das Dienstkonto zugreifen oder es verwalten können.
Ein Dienstkonto wird durch seine E-Mail-Adresse definiert, die für das Konto spezifisch ist.
Weitere Informationen zum Einrichten der Authentifizierung mit einer Produktions anwendung finden Sie unter Authentifizierung als Dienstkonto.
Standarddienstkonto
Jeder Workflow ist zum Zeitpunkt der Erstellung des Workflows mit einem IAM-Dienstkonto (Identity and Access Management) verknüpft. Wenn Sie beim Erstellen des Workflows kein Dienstkonto angeben, verwendet der Workflow für die Identität das Compute Engine-Standarddienstkonto. Sie können das verknüpfte Dienstkonto eines Workflows prüfen. Weitere Informationen finden Sie in diesem Dokument unter Verknüpftes Dienstkonto eines Workflows prüfen.
Wir empfehlen, das Standarddienstkonto nur für Tests und die Entwicklung zu verwenden. Für Produktionsumgebungen empfehlen wir dringend, ein neues Dienstkonto zu erstellen und ihm eine oder mehrere IAM-Rollen zuzuweisen, die die erforderlichen Mindestberechtigungen für die Verwaltung von Workflows enthalten.
Die einzigen Rollen, die Ihr Dienstkonto benötigt, sind die Rollen, die für den Zugriff auf die von Ihren Workflows orchestrierten Ressourcen erforderlich sind. Weitere Informationen finden Sie in diesem Dokument unter Dienstkontoberechtigungen.
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 Ihr Workflow beispielsweise Logs an Cloud Logging senden soll, muss dem Dienstkonto, das den Workflow ausführt, eine Rolle mit der Berechtigung logging.logEntries.create zugewiesen werden (z. B. die Rolle Logs Writer). Im Allgemeinen hängen die für Ihr Dienstkonto erforderlichen Rollen von den Ressourcen ab, die Sie mit Ihren Workflows orchestrieren. Informationen zum Ermitteln der erforderlichen Rollen finden Sie in der Produkt
dokumentation für die Ressource, die Sie orchestrieren, oder
wählen Sie vordefinierte Rollen aus.
Beachten Sie, dass das Workflow-Dienstkonto die Rolle workflows.invoker nur benötigt, wenn der Workflow sich selbst oder andere Workflows aufruft (d. h. neue Workflowausführungen erstellt). Weitere Informationen finden Sie unter
Workflows aufrufen.
Weitere Informationen zum Zuweisen von Rollen für Hauptkonten, einschließlich Dienstkonten, finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Dienstkonten an Ressourcen anhängen
Wenn Sie eine Ressource erstellen und ein Dienstkonto anhängen möchten, benötigen Sie Berechtigungen, um diese Ressource zu erstellen und das Dienstkonto an die Ressource anzuhängen.
Die Berechtigung, das Dienstkonto an eine Ressource anzuhängen, wird durch jede Rolle gewährt, die die Berechtigung iam.serviceAccounts.actAs enthält.
Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.
Cloud Run Functions aufrufen
In Cloud Run Functions sind Aufrufberechtigungen über die Verwaltung des zugrunde liegenden Cloud Run-Dienstes verfügbar. Wenn Ihr Workflow einen Cloud Run Functions-Dienst aufruft, müssen Sie dem Dienstkonto des Aufrufers nicht die Rolle „Cloud Functions-Aufrufer“ (roles/cloudfunctions.invoker) zuweisen. Stattdessen müssen Sie die Rolle „Cloud Run-Aufrufer“ (roles/run.invoker) zuweisen.
Weitere Informationen finden Sie unter Cloud Run Functions vergleichen.
Workflow mit einem benutzerdefinierten Dienstkonto bereitstellen
Sie können ein eigenes nutzerverwaltetes Dienstkonto erstellen, um mehr Flexibilität bei der Zugriffssteuerung für Ihren Workflow zu erhalten.
Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen.
Weisen Sie dem Dienstkonto die entsprechenden Rollen zu, je nachdem, auf welche Ressourcen der Workflow zugreifen muss, um seine Aufgaben zu erledigen.
Achten Sie darauf, dass alle Hauptkonten, die Workflows bereitstellen, das Dienstkonto an Ressourcen anhängen können. Wenn Sie das Dienstkonto erstellt haben, wird Ihnen diese Berechtigung automatisch gewährt. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) für Ihr Projekt oder das Dienstkonto zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Anhängen eines Dienstkontos an eine Ressource benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Diese vordefinierte Rolle enthält die Berechtigung
iam.serviceAccounts.actAs, die zum Anhängen eines Dienstkontos an eine Ressource erforderlich ist.Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weisen Sie dem Projekt die Rolle zu:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Oder weisen Sie dem Dienstkonto die Rolle zu:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ersetzen Sie Folgendes:
WORKFLOWS_PROJECT_ID: Ihre Google Cloud Projekt ID, die die Workflowressourcen enthältPRINCIPAL: eine ID für den Workflow-Bereitsteller im Formatuser|group|serviceAccount:emailoderdomain:domain. Beispiel:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME: der vollständige Ressourcenname des Dienstkontos. Beispiel:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comWobei:
SERVICE_ACCOUNT_PROJECT_IDdie Google Cloud Projekt-ID des Projekts ist, das das Dienstkonto enthält.SERVICE_ACCOUNT_NAMEder Name des Dienstkontos ist.
Stellen Sie Ihren Workflow bereit mit dem benutzerdefinierten Dienstkonto.
Workflow mit einem projektübergreifenden Dienstkonto bereitstellen
Standardmäßig können Sie ein Dienstkonto nicht in einem Projekt erstellen und es mit einer Ressource in einem anderen Projekt verknüpfen. In der folgenden Anleitung wird beschrieben, wie Sie ein Dienstkonto in einem Projekt an einen Workflow in einem anderen Projekt anhängen. Anschließend können Sie das Dienstkonto in verschiedenen Projekten verwenden, um einen Workflow bereitzustellen.
Wenn sich das Dienstkonto und die Workflowressourcen in verschiedenen Projekten befinden, führen Sie im Projekt, in dem sich das Dienstkonto befindet, die folgenden Schritte aus:
Rufen Sie in der Google Cloud Console die Seite Organisationsrichtlinien auf:
Zu den Organisationsrichtlinien
Prüfen Sie die Organisationsrichtlinie für das Projekt und achten Sie darauf, dass die
iam.disableCrossProjectServiceAccountUsageboolesche Einschränkung für das Projekt nicht erzwungen wird. Weitere Informationen finden Sie unter Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können.Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen.
Weisen Sie dem Dienstkonto die entsprechenden Rollen zu, je nachdem, auf welche Ressourcen der Workflow zugreifen muss, um seine Aufgaben zu erledigen.
Weisen Sie dem Workflows-Dienst-Agent die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator) zu. Dadurch kann der Dienst-Agent den projektübergreifenden Zugriff für das Dienstkonto verwalten. Ein Dienst-Agent ist die Identität eines bestimmten Google Cloud Dienstes für ein bestimmtes Projekt. Weitere Informationen finden Sie unter Dienst-Agents.Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf Erstellen, um einen Workflow zu erstellen, oder wählen Sie den Namen des Workflows aus, den Sie aktualisieren möchten.
Klicken Sie in der Liste Dienstkonto auf Projekt wechseln.
Wählen Sie ein Dienstkonto aus einem anderen Projekt aus.
Wenn Sie dazu aufgefordert werden, weisen Sie dem Workflows-Dienst-Agent die Rolle
roles/iam.serviceAccountTokenCreatorzu.
gcloud
Weisen Sie dem Workflows-Dienst-Agent die Rolle
roles/iam.serviceAccountTokenCreatorzu:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member='serviceAccount:service-WORKFLOWS_PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_RESOURCE_NAME: der vollständige Ressourcenname des Dienstkontos. Beispiel:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comWobei:
SERVICE_ACCOUNT_PROJECT_IDdie Google Cloud Projekt-ID des Projekts ist, das das Dienstkonto enthält.SERVICE_ACCOUNT_NAMEder Name des Dienstkontos ist.
WORKFLOWS_PROJECT_NUMBER: die Google Cloud Projektnummer des Projekts, das die Workflowressourcen enthält.
Achten Sie darauf, dass alle Hauptkonten, die Workflows bereitstellen, das Dienstkonto an Ressourcen anhängen können. Wenn Sie das Dienstkonto erstellt haben, wird Ihnen diese Berechtigung automatisch gewährt. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) für Ihr Projekt oder das Dienstkonto zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Anhängen eines Dienstkontos an eine Ressource benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Diese vordefinierte Rolle enthält die Berechtigung
iam.serviceAccounts.actAs, die zum Anhängen eines Dienstkontos an eine Ressource erforderlich ist.Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf Erstellen, um einen Workflow zu erstellen, oder wählen Sie den Namen des Workflows aus, den Sie aktualisieren möchten.
Klicken Sie in der Liste Dienstkonto auf Projekt wechseln.
Wählen Sie ein Dienstkonto aus einem anderen Projekt aus.
Wenn Sie dazu aufgefordert werden, weisen Sie dem Projekt die Rolle
roles/iam.serviceAccountUserzu.
gcloud
Weisen Sie dem Projekt die Rolle zu:
gcloud projects add-iam-policy-binding WORKFLOWS_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Oder weisen Sie dem Dienstkonto die Rolle zu:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ersetzen Sie Folgendes:
WORKFLOWS_PROJECT_ID: Ihre Google Cloud Projekt-ID, die die Workflowressourcen enthältPRINCIPAL: eine ID für den Workflow-Bereitsteller im Formatuser|group|serviceAccount:emailoderdomain:domain. Beispiel:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
SERVICE_ACCOUNT_RESOURCE_NAME: der vollständige Ressourcenname des Dienstkontos. Beispiel:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.comWobei:
SERVICE_ACCOUNT_PROJECT_IDdie Google Cloud Projekt-ID des Projekts ist, das das Dienstkonto enthält.SERVICE_ACCOUNT_NAMEder Name des Dienstkontos ist.
Stellen Sie Ihren Workflow bereit mit dem projektübergreifenden Dienstkonto.
Dienstkonto prüfen, das mit einem Workflow verknüpft ist
Sie können prüfen, welches Dienstkonto einem bestimmten Workflow zugeordnet ist.
Console
Rufen Sie in der Google Cloud Console die Seite Workflows auf:
Klicken Sie auf der Seite Workflows auf den Namen des Workflows.
Klicken Sie auf der Seite Workflowdetails auf den Tab Details.
Das verknüpfte Dienstkonto des Workflows wird angezeigt.
gcloud
Öffnen Sie ein Terminalfenster.
Geben Sie den folgenden Befehl ein:
gcloud workflows describe MY_WORKFLOW
Ersetzen Sie
MY_WORKFLOWdurch den Namen Ihres Workflows.Es wird eine vollständige Workflowbeschreibung einschließlich des verknüpften Dienstkontos 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: [...]