Workflow-Authentifizierung

In diesem Thema werden Authentifizierungsinformationen für Workflows beschrieben. Auf dieser Seite werden zwei Arten der Authentifizierung erläutert:

Zugriffssteuerung

Für beide Authentifizierungsmethoden ist es wichtig, die verfügbaren Rollen für Zugriffssteuerung und Workflows zu verstehen. Rollen enthalten Berechtigungen, die Zugriff auf Ressourcen in Google Cloud gewähren. Wenn Sie eine Produktionsanwendung erstellen, weisen Sie der Identität nur die Berechtigungen zu, die für die Interaktion mit anwendbaren Google Cloud APIs, -Features oder -Ressourcen erforderlich sind.

Weitere Informationen zu den verfügbaren Workflow-Rollen finden Sie unter Workflow-Zugriffssteuerung.

Bei Workflows authentifizieren

Workflows unterstützen die folgenden Authentifizierungsmethoden für den Zugriff auf Workflows-Ressourcen.

Dienstkonten

Dienstkonten werden für fast alle Anwendungsfälle empfohlen, unabhängig davon, ob Sie lokal oder in einer Produktionsanwendung entwickeln. Weitere Informationen zum Einrichten der Authentifizierung für eine Produktionsanwendung finden Sie unter Als Dienstkonto authentifizieren. Sie können einem Dienstkonto eine oder mehrere Rollen zuweisen, die den Zugriff auf Ressourcen in Google Cloud ermöglichen, einschließlich Workflows-Ressourcen.

Authentifizierte Anfragen von einem Workflow aus durchführen

Zum Senden authentifizierter Anfragen muss Ihr Workflow mit einem Dienstkonto verknüpft sein, dem eine oder mehrere Rollen von Identity and Access Management mit den erforderlichen Berechtigungen zugewiesen wurden. Sie müssen auch Ihre Authentifizierungsinformationen explizit in die Workflow-Definition aufnehmen. Standardmäßig enthalten HTTP-Anfragen aus Sicherheitsgründen keine Identitäts- oder Zugriffstokens.

Jeder erstellte Workflow ist bei der Erstellung des Workflows einem IAM-Dienstkonto zugeordnet. Wenn Sie beim Erstellen des Workflows kein Dienstkonto angeben, verwendet der Workflow für die Identität das standardmäßige Compute Engine-Dienstkonto.

Beim Senden von Anfragen an andere Google Cloud-Dienste muss der Workflow mit einem Dienstkonto verknüpft sein, das über die erforderlichen Berechtigungen für den Zugriff auf die angeforderten Ressourcen verfügt.

Für eine authentifizierte Anfrage in einem Workflow können Sie abhängig vom Dienst, den Sie anrufen, entweder OAuth 2.0 oder OpenID Connect (OIDC) verwenden.

Verwenden Sie OAuth 2.0, um eine Verbindung zu allen Google Cloud APIs herzustellen, z. B. der Compute Engine API oder der Firestore API. Diese Authentifizierungsmethode wird von jeder API mit dem Hostnamen .googleapis.com akzeptiert.

Verwenden Sie OIDC, um eine Verbindung zu Cloud Functions oder Cloud Run herzustellen.

Dienstkonto eines Workflows überprüfen

So überprüfen Sie, welches Dienstkonto einem bestimmten Workflow zugeordnet ist:

Console

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

  2. Wählen Sie in der Konsole auf der Seite "Workflows" den Workflow aus, um zu dessen Detailseite zu gelangen.

  3. Wählen Sie auf der Seite Workflow-Details den Tab Definition aus, um die Details des Workflows aufzurufen.

  4. Der Tab Definition zeigt das verknüpfte Dienstkonto des Workflows an.

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.

  3. Der Befehl gibt das zugehörige Dienstkonto mit der vollständigen Workflowbeschreibung zurück:

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

Authentifizierte Anfragen an Google APIs senden

Das Dienstkonto eines Workflows kann OAuth 2.0-Tokens generieren, die vom Workflow zur Authentifizierung bei jeder Google API verwendet werden können. Wenn Sie diese Authentifizierungsmethode verwenden, authentifiziert sich der Workflow als zugehöriges Dienstkonto. Zum Senden einer HTTP-Anfrage mit dem OAuth 2.0-Protokoll fügen Sie nach Angabe der URL in den Abschnitt args der Workflowdefinition den Abschnitt auth ein. In diesem Beispiel wird eine Anfrage an die Compute Engine API gesendet, um eine VM anzuhalten:

- step_A:
    call: http.post
    args:
        url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
        auth:
            type: OAuth2
            [scope:]

Der Parameter scope ist optional, kann aber verwendet werden, um den OAuth 2.0-Bereich für das Token anzugeben. Standardmäßig ist er auf https://www.googleapis.com/auth/cloud-platform gesetzt.

Anfragen an Cloud Run oder Cloud Functions senden

Verwenden Sie OIDC zur Authentifizierung bei Anfragen an Cloud Run oder Cloud Functions.

Zum Senden einer HTTP-Anfrage mit OIDC fügen Sie den Abschnitt auth in den Abschnitt args der Workflow-Definition ein, nachdem Sie die URL angegeben haben. In diesem Beispiel wird eine Anfrage zum Aufrufen einer Cloud Functions-Funktion gesendet:

- step_A:
    call: http.get
    args:
        url: https://us-central1-project.cloudfunctions.net/functionA
        query:
            firstNumber: 4
            secondNumber: 6
            operation: sum
        auth:
            type: OIDC
            [audience:]

Der Parameter audience ist optional, kann aber verwendet werden, um die OIDC-Zielgruppe für das Token anzugeben. Standardmäßig ist er auf denselben Wert wie url eingestellt.

Nächste Schritte