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

Workflows verwendet 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 sich ein Dienstkonto als Ressource vorstellen, 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 finden Sie unter Als Dienstkonto authentifizieren.

Standarddienstkonto

Jeder Workflow ist zum Zeitpunkt seiner Erstellung mit einem IAM-Dienstkonto (Identity and Access Management) verknüpft. 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 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 Entwicklung zu verwenden. In Produktionsumgebungen empfehlen wir dringend, ein neues Dienstkonto zu erstellen und ihm eine oder mehrere IAM-Rollen zu gewähren, die die zum Verwalten von Workflows erforderlichen Mindestberechtigungen enthalten.

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 gewährt worden sein (z. B. die Rolle Logs Writer).

Das Workflowdienstkonto benötigt nicht die Rolle workflows.invoker, 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 Zuweisen 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 zum 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 von jeder Rolle gewährt, die die Berechtigung iam.serviceAccounts.actAs enthält.

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

Cloud Functions (2nd gen) aufrufen

In Cloud Functions (2nd gen) sind Aufrufberechtigungen durch 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-Aufrufer“ (roles/cloudfunctions.invoker) gewähren. Stattdessen müssen Sie die Rolle „Cloud Run Invoker“ (roles/run.invoker) gewähren.

Weitere Informationen finden Sie unter Versionsvergleich von Cloud Functions.

Workflow mit einem benutzerdefinierten Dienstkonto bereitstellen

Sie können ein eigenes, von Nutzern verwaltetes 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 zugreifen muss, um seine Arbeit auszuführen.

  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, 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 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 erforderlich ist, um ein Dienstkonto an eine Ressource anzuhängen.

    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 den Workflow mithilfe des benutzerdefinierten Dienstkontos 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. Die folgende Anleitung zeigt, wie Sie ein Dienstkonto in einem Projekt an einen Workflow in einem anderen Projekt anhängen. Sie können das Dienstkonto dann in verschiedenen Projekten verwenden, um einen Workflow bereitzustellen.

Wenn sich das Dienstkonto und die Workflowressourcen in unterschiedlichen Projekten befinden, führen Sie in dem Projekt, in dem sich das Dienstkonto befindet, 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 Dienstkonten projektübergreifend verknüpfen.

  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 zugreifen muss, um seine Arbeit auszuführen.

  4. Gewähren Sie dem Workflow-Dienst-Agent die Rolle „Ersteller von Dienstkonto-Tokens“ (roles/iam.serviceAccountTokenCreator). 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. Gewähren Sie dem Workflows-Dienst-Agent die Rolle roles/iam.serviceAccountTokenCreator, wenn Sie dazu aufgefordert werden.

    gcloud

    1. Gewähren Sie dem Workflow-Dienst-Agent die Rolle roles/iam.serviceAccountTokenCreator:

      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, 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 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 erforderlich ist, um ein Dienstkonto an eine Ressource anzuhängen.

    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. Gewähren Sie dem Projekt die Rolle roles/iam.serviceAccountUser, 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 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 den Workflow mit dem projektübergreifenden Dienstkonto bereit.

Das mit einem Workflow verknüpfte Dienstkonto prüfen

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 einschließlich des zugehörigen Dienstkontos 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