Zugriff auf Google Cloud-Ressourcen für einen Workflow gewähren

Workflows nutzt Dienstkonten, um Workflows-Zugriff auf Google Cloud-Ressourcen. Dienstkonten sind spezielle Konten, die als Identität einer Nicht-Identität dienen, z. B. einer Funktion, einer Anwendung oder einer VM. So haben Sie die Möglichkeit, diese Nicht-Personen zu authentifizieren. A 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, sodass es auf eine Ressource zugreifen kann, z. B. auf einen Workflow.

  • Wenn Sie ein Dienstkonto als Ressource betrachten, können Sie 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 Produktionsanwendung finden Sie unter Authentifizierung als Dienstkonto.

Standarddienstkonto

Jeder Workflow ist mit einem IAM-Dienst (Identity and Access Management) verknüpft Konto erstellt haben. 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. In diesem Dokument Prüfen Sie, welches Dienstkonto mit einem Workflow verknüpft ist.

  • Wir empfehlen die Verwendung des Standarddienstkontos für Tests und Entwicklung 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 von Ihrem Dienstkonto benötigt werden, sind die für den Zugriff erforderlichen Rollen die von Ihren Workflows orchestrierten Ressourcen. 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 Sie z. B. zulassen möchten, dass Ihr Workflow Logs an Cloud Logging müssen Sie dafür sorgen, dass das Dienstkonto, das den Workflow ausführt, wurde eine Rolle mit der Berechtigung logging.logEntries.create gewährt (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. Welche Rollen erforderlich sind, können Sie in der Produktdokumentation für die Ressource ermitteln, die Sie orchestrieren, oder vordefinierte Rollen auswählen.

Das Workflow-Dienstkonto benötigt die Rolle workflows.invoker nur, wenn der Workflow sich selbst oder andere Workflows aufruft, d. h. neue Workflowausführungen erstellt. Weitere Informationen finden Sie unter Rufen Sie Workflows auf.

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

Um eine Ressource zu erstellen und ein Dienstkonto anzuhängen, benötigen Sie Berechtigungen zum Erstellen dieser Ressource und zum Anhängen des Dienstkontos an die Ressource. 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-Funktionen (2. Generation) aufrufen

In Cloud Run-Funktionen (2. Generation) sind Aufrufberechtigungen über die Verwaltung den zugrunde liegenden Cloud Run-Dienst. Wenn Ihr Workflow eine Cloud Run-Funktionsdienst (2. Generation) ausgeführt haben, müssen Sie den Dienstkonto des Aufrufers, Cloud Run-Funktionen Invoker Rolle (roles/cloudfunctions.invoker). Stattdessen müssen Sie dem Rolle „Cloud Run Invoker“ (roles/run.invoker).

Weitere Informationen finden Sie unter Versionsvergleich von Cloud Run-Funktionen

Workflow mit einem benutzerdefinierten Dienstkonto bereitstellen

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

  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 zugreifen muss.

  3. Achten Sie darauf, dass alle Hauptkonten, die Workflows bereitstellen, die Möglichkeit haben, vom Dienstkonto auf die Ressourcen. Wenn Sie das Dienstkonto erstellt haben, hat diese Berechtigung automatisch. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

    So erhalten Sie die Berechtigung, ein Dienstkonto an eine Ressource anzuhängen: bitten Sie Ihren Administrator, Ihnen Die IAM-Rolle Dienstkontonutzer (roles/iam.serviceAccountUser) für Ihr Projekt oder das Dienstkonto. 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: die Google Cloud-Projekt-ID, die die Workflow-Ressourcen enthält
    • PRINCIPAL: Kennung für den Workflow-Entwickler 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 Google Cloud-Projekt-ID, die das Dienstkonto enthält.
      • SERVICE_ACCOUNT_NAME ist der Name des Dienstkontos.
  4. Bereitstellen Sie den Workflow 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. Sie können das Dienstkonto dann für verschiedene Projekte verwenden, um einen Workflow bereitzustellen.

Wenn sich das Dienstkonto und die Workflow-Ressourcen in verschiedenen Projekten befinden, gehen Sie in dem Projekt, in dem sich das Dienstkonto befindet, so vor:

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

    Zu den Organisationsrichtlinien

    Lesen Sie die Organisationsrichtlinien. für das Projekt und stellen sicher, Die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage ist nicht für das Projekt durchgesetzt werden. Weitere Informationen finden Sie unter Aktivieren Sie das projektübergreifende Anhängen von Dienstkonten.

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

  3. Dienstkonto gewähren entsprechenden Rollen, je nachdem, auf welche Ressourcen der Workflow zugreifen muss.

  4. Rolle „Ersteller von Dienstkonto-Tokens“ gewähren (roles/iam.serviceAccountTokenCreator) zu den Workflows Dienst-Agent. Dadurch kann der Kundenservicemitarbeiter den projektübergreifenden Zugriff für das Dienstkonto verwalten. Ein Dienst-Agent ist die Identität eines Google Cloud-Dienst für ein bestimmtes Projekt. Weitere Informationen finden Sie unter Dienstmitarbeiter:

    Console

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

      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 Workflows-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 Google Cloud-Projekt-ID, die 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. Achten Sie darauf, dass alle Hauptkonten, die Workflows bereitstellen, die Möglichkeit haben, vom Dienstkonto auf die Ressourcen. Wenn Sie das Dienstkonto erstellt haben, hat 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 zuzuweisen, um die Berechtigung zu erhalten, ein Dienstkonto an eine Ressource anzuhängen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Diese vordefinierte Rolle enthält die iam.serviceAccounts.actAs Berechtigung, was erforderlich ist, um ein Dienstkonto an eine Ressource anhängen.

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

    Console

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

      Zur Seite "Workflows"

    2. Klicken Sie auf . Klicken Sie auf Erstellen, um einen Workflow zu erstellen, oder wählen Sie den Namen des Workflows aus, der die 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. Weisen Sie dem Projekt die Rolle roles/iam.serviceAccountUser zu, wenn Sie dazu aufgefordert werden.

    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 Workflow-Ressourcen enthält
    • PRINCIPAL: Eine Kennung für den Workflow. Deployer 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 Google Cloud-Projekt-ID, die das Dienstkonto enthält.
      • SERVICE_ACCOUNT_NAME ist der Name des Dienstkontos.
  6. Bereitstellen Sie den Workflow mit dem projektübergreifenden Dienstkonto.

Das mit einem Workflow verknüpfte Dienstkonto prüfen

Sie können prüfen, welches Dienstkonto einem bestimmten Workflow zugeordnet 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 Workflow-Details 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.

    Es wird eine vollständige Workflowbeschreibung einschließlich des zugehörigen 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: [...]

Nächste Schritte