Effectuer des requêtes authentifiées à partir d'un workflow

Pour effectuer des requêtes HTTP authentifiées, votre workflow doit être associé à un compte de service (identifié par son adresse e-mail) disposant des identifiants appropriés. Pour en savoir plus sur l'association d'un compte de service Identity and Access Management (IAM) à un workflow et sur l'octroi des autorisations nécessaires pour accéder aux ressources, consultez Accorder à un workflow l'autorisation d'accéder aux ressources Google Cloud .

Jetons d'authentification

Par défaut, les requêtes HTTP ne contiennent pas de jetons d'identité ni d'accès pour des raisons de sécurité. Vous devez explicitement ajouter des informations d'authentification à votre définition de workflow.

Pour l'authentification entre Workflows et une cible HTTP qui nécessite une telle authentification, Workflows utilise un jeton dans l'en-tête d'autorisation basé sur les identifiants du compte de service associé au workflow, et envoie le jeton à l'aide du protocole HTTPS au service cible. Lorsque vous vous connectez à des fonctions Cloud Run ou à Cloud Run, utilisez un jeton d'identité (OIDC). Pour les API hébergées sur googleapis.com, utilisez un jeton d'accès (OAuth 2.0).

Pour effectuer une requête authentifiée à partir d'un workflow, procédez de l'une des manières suivantes en fonction du service que vous appelez :

Envoyer des requêtes authentifiées aux API externes

Si vous intégrez une API tierce, incluez un en-tête de requête Authorization avec les identifiants nécessaires pour effectuer l'authentification. Par exemple, incluez un jeton d'ID dans un en-tête Authorization: Bearer ID_TOKEN dans la requête adressée au service. Pour plus d'informations, consultez la documentation du fournisseur d'API.

Envoyer des requêtes authentifiées aux API Google Cloud

Le compte de service d'un workflow peut générer des jetons OAuth 2.0 que le workflow peut utiliser pour s'authentifier auprès de n'importe quelle API  Google Cloud . Lorsque vous utilisez cette méthode d'authentification, le workflow s'authentifie en tant que compte de service associé. Pour effectuer une requête HTTP à l'aide du protocole OAuth 2.0, ajoutez une section auth à la section args de la définition de votre workflow, après avoir spécifié l'URL. Dans cet exemple, une requête est envoyée à l'API Compute Engine pour arrêter une VM :

YAML

  - 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
              scopes: OAUTH_SCOPE
    

JSON

    [
      {
        "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",
              "scopes": "OAUTH_SCOPE"
            }
          }
        }
      }
    ]
      
La clé scopes est facultative, mais peut être utilisée pour spécifier les champs d'application OAuth 2.0 pour le jeton. Remplacez OAUTH_SCOPE par une chaîne ou une liste de chaînes. Les chaînes séparées par des espaces et des virgules sont également acceptées. Par défaut, la valeur est définie sur https://www.googleapis.com/auth/cloud-platform.

Envoyer des requêtes à Cloud Run Functions ou Cloud Run

Lorsque vous envoyez des requêtes à Cloud Run Functions ou à Cloud Run, vous pouvez vous authentifier à l'aide d'OIDC.

Pour effectuer une requête HTTP à l'aide d'OIDC, ajoutez une section auth à la section args de la définition de votre workflow, après avoir spécifié l'URL. Dans cet exemple, une requête est envoyée pour appeler une fonction Cloud Run :

YAML

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

JSON

    [
      {
        "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": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
La clé audience est facultative, mais peut être utilisée pour spécifier l'audience OIDC du jeton. Par défaut, OIDC_AUDIENCE est défini sur la même valeur que url.

Notez que Workflows peut appeler des fonctions Cloud Run ou des services Cloud Run dont l'entrée est limitée au trafic interne. Avec cette configuration, vos services sont inaccessibles depuis Internet, mais peuvent être accessibles à partir de Workflows.

Pour en savoir plus, consultez Appeler des fonctions Cloud Run ou Cloud Run.

Étapes suivantes