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

Workflows nutzt Dienstkonten, um Workflows-Zugriff auf Google Cloud-Ressourcen. Dienstkonten sind etwas ganz Besonderes. Konten, die als Identität einer Nicht-Person dienen, z. B. einer Funktion, Anwendung oder eine VM. Sie bieten Ihnen die Möglichkeit, diese Nicht-Personen zu authentifizieren. A Dienstkonto kann sowohl als Identität als auch als Ressource betrachtet werden.

  • Wenn Sie sich ein Dienstkonto als Identität vorstellen, können Sie eine Rolle zuweisen auf ein Dienstkonto, damit es auf eine Ressource (z. B. einen Workflow) zugreifen kann.

  • Wenn Sie ein Dienstkonto als Ressource betrachten, können Sie damit andere Nutzer 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 Produktionsversion findest du unter Authentifizieren Sie sich als Dienstkonto.

Standarddienstkonto

Jeder Workflow ist mit einem IAM-Dienst (Identity and Access Management) verknüpft Konto erstellt haben. Wenn Sie keinen Dienst angeben Konto erstellen, verwendet der Workflow die Standardeinstellungen Compute Engine-Dienstkonto für seine Identität. Sie können den Status eines Workflows überprüfen, verknüpftes Dienstkonto. 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, eine neue Dienstkonto und gewähren ihm eine oder mehrere IAM-Rollen, enthalten die Mindestberechtigungen erforderlich zum Verwalten von Workflows.

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 müssen Sie sicherstellen, 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).

Beachten Sie, dass das Workflow-Dienstkonto die workflows.invoker nicht benötigt. nicht, es sei denn, der Workflow ruft sich selbst oder andere Workflows auf (d. h. erstellt neuen Workflowausführungen). Weitere Informationen finden Sie unter Rufen Sie Workflows auf.

Weitere Informationen zum Gewähren von Rollen für Hauptkonten, einschließlich Dienstkonten, Weitere Informationen 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 folgende Berechtigungen: erstellen Sie diese Ressource und hängen das Dienstkonto an die Ressource an. Die Berechtigung zum Anhängen des Dienstkontos an eine Ressource wird von einer beliebigen Rolle gewährt mit der Berechtigung iam.serviceAccounts.actAs.

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 von den zugrunde liegenden Cloud Run-Dienst. Wenn Ihr Workflow eine Cloud Function-Dienst (2nd gen) nutzen möchten, müssen Sie den Das Dienstkonto des Aufrufers, der Cloud Functions-Invoker Rolle (roles/cloudfunctions.invoker). Stattdessen müssen Sie den Rolle „Cloud Run Invoker“ (roles/run.invoker).

Weitere Informationen finden Sie unter Vergleich der Cloud Functions-Versionen

Workflow mit einem benutzerdefinierten Dienstkonto bereitstellen

Sie können Ihr eigenes, von Nutzern verwaltetes Dienstkonto erstellen, den Zugriff auf Ihren Workflow flexibel zu steuern.

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

  2. Dienstkonto gewähren entsprechenden Rollen, 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 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 verwalten.

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

    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: Ihr 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: die vollständige Ressource Name 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. Workflow bereitstellen 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 erfahren Sie, wie Sie in einem Projekt mit einem Workflow in einem anderen Projekt. Sie können dann Verwenden Sie das Dienstkonto in verschiedenen Projekten, um einen Workflow bereitzustellen.

Wenn sich das Dienstkonto und die Workflowressourcen in unterschiedlichen Projekten befinden, aus dem Projekt, in dem sich das Dienstkonto befindet, folgende Schritte:

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

    Zu den Organisationsrichtlinien

    Prüfen 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 Dienst-Agent die projektübergreifende Zugriffsrechte für das Dienstkonto. 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 . 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. Gewähren Sie diesem Nutzer die Rolle roles/iam.serviceAccountTokenCreator, wenn Sie dazu aufgefordert werden. Workflows-Dienst-Agent.

    gcloud

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

      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 der/die/das ID des Google Cloud-Projekts, das das Dienstkonto enthält.
        • SERVICE_ACCOUNT_NAME ist der Name des Dienstkonto.
      • 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 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 verwalten.

    Diese vordefinierte Rolle enthält die Berechtigung iam.serviceAccounts.actAs, die erforderlich, um ein Dienstkonto an eine Ressource anzuhä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. Gewähren Sie bei Aufforderung die Rolle roles/iam.serviceAccountUser für die Projekt arbeiten.

    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: Ihr Google Cloud-Team Projekt-ID, die die Workflowressourcen 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 der/die/das ID des Google Cloud-Projekts, das das Dienstkonto enthält.
      • SERVICE_ACCOUNT_NAME ist der Name des Dienstkonto.
  6. Workflow bereitstellen mit dem projektübergreifenden Dienstkonto.

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 Workflow. Namen.

  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 zu optimieren.

    Eine vollständige Workflowbeschreibung, einschließlich des zugehörigen Dienstkontos, ist 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