Realiza solicitudes autenticadas desde un flujo de trabajo

Para realizar solicitudes HTTP autenticadas, tu flujo de trabajo debe estar asociado con una cuenta de servicio (identificada por su dirección de correo electrónico) que tenga las credenciales adecuadas. Si quieres obtener más información sobre cómo conectar una cuenta de servicio de Identity and Access Management (IAM) a un flujo de trabajo y otorgarle los permisos necesarios para acceder a los recursos, consulta Otorga permiso a un flujo de trabajo para acceder a los recursos de Google Cloud.

Tokens de autenticación

De forma predeterminada, las solicitudes HTTP no contienen tokens de identidad ni de acceso por motivos de seguridad. Debes agregar información de autenticación de forma explícita a la definición de tu flujo de trabajo.

Para autenticar entre Workflows y un destino HTTP que requiera esa autenticación, Workflows usa un token en el encabezado de autorización basado en las credenciales de la cuenta de servicio adjunta al flujo de trabajo y envía el token mediante HTTPS al servicio de destino. Cuando te conectes con Cloud Functions o Cloud Run, usa un token de ID (OIDC). Para las APIs alojadas en googleapis.com, usa un token de acceso (OAuth 2.0).

Para realizar una solicitud autenticada desde un flujo de trabajo, realiza una de las siguientes acciones según el servicio al que llames:

Realiza solicitudes autenticadas a APIs externas

Si integras una API de terceros, incluye un encabezado de solicitud Authorization con las credenciales necesarias para llevar a cabo la autenticación. Por ejemplo, incluye un token de ID en un encabezado Authorization: Bearer ID_TOKEN en la solicitud al servicio. Para obtener más información, consulta la documentación del proveedor de la API.

Realiza solicitudes autenticadas a las APIs de Google Cloud

La cuenta de servicio de un flujo de trabajo puede generar tokens de OAuth 2.0 que el flujo de trabajo puede usar para autenticarse en cualquier API de Google Cloud. Cuando usas este método de autenticación, el flujo de trabajo se autentica como su cuenta de servicio asociada. Para realizar una solicitud HTTP con el protocolo OAuth 2.0, agrega una sección auth a la sección args de la definición de tu flujo de trabajo después de especificar la URL. En este ejemplo, se envía una solicitud a la API de Compute Engine para detener una 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 clave scopes es opcional, pero se puede usar a fin de especificar los alcances de OAuth 2.0 para el token. Reemplaza OAUTH_SCOPE por una cadena o lista de cadenas. También se admiten cadenas separadas por comas y espacios. De forma predeterminada, el valor se establece en https://www.googleapis.com/auth/cloud-platform.

Realizar solicitudes a Cloud Functions o Cloud Run

Cuando realices solicitudes a Cloud Functions o Cloud Run, usa OIDC para la autenticación.

Para realizar una solicitud HTTP con OIDC, agrega una sección auth a la sección args de la definición de tu flujo de trabajo después de especificar la URL. En este ejemplo, se envía una solicitud para invocar una Cloud Function:

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 clave audience es opcional, pero se puede usar a fin de especificar el público de OIDC para el token. De forma predeterminada, OIDC_AUDIENCE se configura con el mismo valor que url.

Ten en cuenta que es posible que Workflows invoque servicios de Cloud Functions o Cloud Run que tienen una entrada restringida al tráfico interno. Con esta configuración, no se puede acceder a los servicios desde Internet, pero se puede acceder a ellos desde Workflows.

Para obtener más información, consulta Invoca Cloud Functions o Cloud Run.

¿Qué sigue?