Workflowberechtigung für den Zugriff auf Google Cloud-Ressourcen gewähren

Workflows verwenden Dienstkonten, um Workflows Zugriff auf Google Cloud-Ressourcen zu gewähren. Dienstkonten sind spezielle Konten, die als Identität einer Nicht-Person dienen, z. B. einer Funktion, einer Anwendung oder einer 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 sich ein Dienstkonto als Identität vorstellen, können Sie einem Dienstkonto eine Rolle zuweisen, damit es auf eine Ressource (z. B. einen Workflow) zugreifen kann.

  • Wenn Sie ein Dienstkonto als Ressource betrachten, können Sie anderen Nutzern Rollen zuweisen, damit sie auf dieses 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 Produktionsanwendung findest du unter Als Dienstkonto authentifizieren.

Standarddienstkonto

Jeder Workflow ist bei seiner Erstellung einem IAM-Dienstkonto (Identity and Access Management) zugeordnet. Wenn Sie beim Erstellen des Workflows kein Dienstkonto angeben, verwendet der Workflow das Compute Engine-Standarddienstkonto als Identität. Sie können das mit einem Workflow verknüpfte Dienstkonto überprüfen. In diesem Dokument finden Sie weitere Informationen unter Verknüpftes Dienstkonto eines Workflows bestätigen.

Wir empfehlen, das Standarddienstkonto nur für Tests und Entwicklung 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 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 (z. B. die Rolle Logs Writer) gewährt worden sein.

Beachten Sie, dass das Workflowdienstkonto nicht die Rolle workflows.invoker benötigt, 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 auf Projekte, Ordner und Organisationen verwalten.

Dienstkonten an Ressourcen anhängen

Zum Erstellen einer Ressource und Anhängen eines Dienstkontos benötigen Sie Berechtigungen zum Erstellen dieser Ressource und zum Anhängen des Dienstkontos an die Ressource. Die Berechtigung zum Anhängen des Dienstkontos an eine Ressource wird durch jede Rolle mit der Berechtigung iam.serviceAccounts.actAs gewährt.

Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

Cloud Functions (2nd gen) aufrufen

In Cloud Functions (2nd gen) sind Aufrufberechtigungen über die Verwaltung des zugrunde liegenden Cloud Run-Dienstes verfügbar. Wenn Ihr Workflow einen Cloud Function-Dienst (2. Generation) aufruft, müssen Sie dem Dienstkonto des Aufrufers nicht die Rolle „Cloud Functions Invoker“ (roles/cloudfunctions.invoker) gewähren. Stattdessen müssen Sie die Rolle „Cloud Run Invoker“ (roles/run.invoker) gewähren.

Weitere Informationen finden Sie unter Cloud Functions-Versionsvergleich.

Workflow mit einem benutzerdefinierten Dienstkonto bereitstellen

Sie können ein eigenes nutzerverwaltetes Dienstkonto erstellen, um den Zugriff auf Ihren Workflow flexibler zu steuern.

  1. Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen:

  2. Weisen Sie dem Dienstkonto die entsprechenden Rollen zu, je nachdem, auf welche Ressourcen der Workflow für seine Arbeit zugreifen muss.

  3. Sorgen Sie dafür, dass alle Hauptkonten, die Workflows bereitstellen, das Dienstkonto an Ressourcen anhängen können. Wenn Sie das Dienstkonto erstellt haben, erhalten Sie diese Berechtigung automatisch. 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 zu gewähren, damit Sie die Berechtigung erhalten, ein Dienstkonto an eine Ressource anzuhängen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Diese vordefinierte Rolle enthält die Berechtigung iam.serviceAccounts.actAs, die zum Anhängen eines Dienstkontos an eine Ressource erforderlich ist.

    Möglicherweise können Sie 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ält.
    • PRINCIPAL: eine Kennung für den Workflow-Bereitsteller im Format user|group|serviceAccount:email oder domain:domain. Beispiel:

      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain: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.com

      Wobei:

      • SERVICE_ACCOUNT_PROJECT_ID ist die ID des Google Cloud-Projekts, das das Dienstkonto enthält.
      • SERVICE_ACCOUNT_NAME ist der Name des Dienstkontos.
  4. Stellen Sie Ihren Workflow mit dem benutzerdefinierten Dienstkonto bereit.

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. Sie können das Dienstkonto dann projektübergreifend verwenden, um einen Workflow bereitzustellen.

Wenn sich das Dienstkonto und die Workflowressourcen in verschiedenen Projekten befinden, führen Sie die folgenden Schritte aus:

  1. 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 boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage für das Projekt nicht erzwungen wird. Weitere Informationen finden Sie unter Anhängen von Dienstkonten projektübergreifend aktivieren.

  2. Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen:

  3. Weisen Sie dem Dienstkonto die entsprechenden Rollen zu, je nachdem, auf welche Ressourcen der Workflow für seine Arbeit zugreifen muss.

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

    1. Rufen Sie in der Google Cloud Console die Seite Workflows auf:

      Zur Seite "Workflows"

    2. Klicken Sie auf Erstellen, um einen Workflow zu erstellen, oder wählen Sie den Namen des Workflows aus, den Sie aktualisieren möchten.

    3. Klicken Sie in der Liste Dienstkonto auf Projekt wechseln.

    4. Wählen Sie ein Dienstkonto aus einem anderen Projekt aus.

    5. Wenn Sie dazu aufgefordert werden, weisen Sie dem Workflows-Dienst-Agent die Rolle roles/iam.serviceAccountTokenCreator zu.

    gcloud

    1. Weisen Sie dem Workflow-Dienst-Agent die Rolle roles/iam.serviceAccountTokenCreator zu:

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

        Wobei:

        • SERVICE_ACCOUNT_PROJECT_ID ist die ID des Google Cloud-Projekts, das das Dienstkonto enthält.
        • SERVICE_ACCOUNT_NAME ist der Name des Dienstkontos.
      • WORKFLOWS_PROJECT_NUMBER: die Google Cloud-Projektnummer, die die Workflowressourcen enthält.

  5. Sorgen Sie dafür, dass alle Hauptkonten, die Workflows bereitstellen, das Dienstkonto an Ressourcen anhängen können. Wenn Sie das Dienstkonto erstellt haben, erhalten Sie diese Berechtigung automatisch. 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 zu gewähren, damit Sie die Berechtigung erhalten, ein Dienstkonto an eine Ressource anzuhängen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

    Diese vordefinierte Rolle enthält die Berechtigung iam.serviceAccounts.actAs, die zum Anhängen eines Dienstkontos an eine Ressource erforderlich ist.

    Möglicherweise können Sie diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Workflows auf:

      Zur Seite "Workflows"

    2. Klicken Sie auf Erstellen, um einen Workflow zu erstellen, oder wählen Sie den Namen des Workflows aus, den Sie aktualisieren möchten.

    3. Klicken Sie in der Liste Dienstkonto auf Projekt wechseln.

    4. Wählen Sie ein Dienstkonto aus einem anderen Projekt aus.

    5. Wenn Sie dazu aufgefordert werden, gewähren Sie dem Projekt die Rolle roles/iam.serviceAccountUser.

    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: Die ID Ihres Google Cloud-Projekts, das die Workflowressourcen enthält.
    • PRINCIPAL: eine Kennung für den Workflow-Bereitsteller im Format user|group|serviceAccount:email oder domain:domain. Beispiel:
      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain: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.com

      Wobei:

      • SERVICE_ACCOUNT_PROJECT_ID ist die ID des Google Cloud-Projekts, das das Dienstkonto enthält.
      • SERVICE_ACCOUNT_NAME ist der Name des Dienstkontos.
  6. Stellen Sie Ihren Workflow mit dem projektübergreifenden Dienstkonto bereit.

Mit einem Workflow verknüpftes Dienstkonto bestätigen

Sie können prüfen, welches Dienstkonto mit einem bestimmten Workflow verknüpft ist.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Workflows.

    Zur Seite "Workflows"

  2. Klicken Sie auf der Seite Workflows auf den Namen des Workflows.

  3. Klicken Sie auf der Seite Workflowdetails auf den Tab Details.

    Das mit dem Workflow verknüpfte Dienstkonto wird angezeigt.

gcloud

  1. Öffnen Sie ein Terminalfenster.

  2. Geben Sie den folgenden Befehl ein:

    gcloud workflows describe MY_WORKFLOW
    

    Ersetzen Sie MY_WORKFLOW durch den Namen Ihres Workflows.

    Eine vollständige Workflowbeschreibung mit dem zugehörigen Dienstkonto wird 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: [...]

Nächste Schritte