Autenticación de flujos de trabajo

En este tema, se describe la información de autenticación para los flujos de trabajo. Existen dos tipos de autenticación que se analizan en esta página:

Control de acceso

Para ambos tipos de autenticación, es importante comprender las funciones disponibles de control de acceso y flujos de trabajo. Las funciones contienen permisos que otorgan acceso a los recursos en Google Cloud. Cuando crees una aplicación de producción, solo otorga a una identidad las funciones que necesita para interactuar con las API, las características o los recursos correspondientes de Google Cloud.

Para obtener más información sobre las funciones de flujos de trabajo disponibles, consulta Control de acceso de flujos de trabajo.

Autenticar flujos de trabajo

Los flujos de trabajo admiten los siguientes métodos de autenticación para acceder a los recursos de Workflows.

Cuentas de servicio

Se recomiendan las cuentas de servicio para casi todos los casos prácticos, ya sea que estés realizando un desarrollo de manera local o en una aplicación de producción. Para obtener más información sobre cómo configurar la autenticación con una aplicación de producción, consulta Autentica como una cuenta de servicio. Puedes otorgar a una cuenta de servicio una o más funciones que permitan el acceso a los recursos en Google Cloud, incluidos los recursos de flujos de trabajo.

Realiza solicitudes autenticadas desde un flujo de trabajo

Para enviar solicitudes autenticadas, el flujo de trabajo debe estar asociado con una cuenta de servicio a la que se le otorgó una o más funciones de administración de identidades y accesos que contienen los permisos necesarios. También debes agregar información de autenticación de forma explícita a tu definición de flujo de trabajo. De manera predeterminada, las solicitudes HTTP no contienen tokens de identidad o acceso por motivos de seguridad.

Cada flujo de trabajo creado se asocia a una cuenta de servicio de IAM en el momento en que se crea el flujo de trabajo. Si no especificas una cuenta de servicio durante la creación del flujo de trabajo, este usa la cuenta de servicio predeterminada de Compute Engine para su identidad.

Cuando realizas solicitudes a otros servicios de Google Cloud, el flujo de trabajo debe estar asociado a una cuenta de servicio que tiene los permisos correctos para acceder a los recursos solicitados.

Para realizar una solicitud autenticada en un flujo de trabajo, puedes usar OAuth 2.0 o OpenID Connect (OIDC) según el servicio al que llames.

Usa OAuth 2.0 para conectarte con todas las API de Google Cloud, como la API de Compute Engine o la de Firestore. Cualquier API que termine con un nombre de host de .googleapis.com acepta este método de autenticación.

Usa OIDC para conectarte con Cloud Functions o Cloud Run.

Verifica la cuenta de servicio asociada de un flujo de trabajo

Para verificar qué cuenta de servicio está asociada a un flujo de trabajo específico, sigue estos pasos:

Console

  1. Ve a la página de flujos de trabajo en Google Cloud Console:
    Ir a la página de flujos de trabajo

  2. En la página Flujos de trabajo en la consola, selecciona el flujo de trabajo para ir a su página de detalles.

  3. En la página Detalles del flujo de trabajo, selecciona la pestaña Definición para obtener los detalles del flujo de trabajo.

  4. La pestaña Definición muestra la cuenta de servicio asociada del flujo de trabajo.

gcloud

  1. Abre una terminal.

  2. Ingresa el siguiente comando:

    gcloud workflows describe MY_WORKFLOW
    

    Reemplaza MY_WORKFLOW con el nombre de tu flujo de trabajo.

  3. El comando muestra la cuenta de servicio asociada con la descripción completa del flujo de trabajo:

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

Realiza solicitudes autenticadas a las API de Google

Una cuenta de servicio de flujo de trabajo puede generar tokens OAuth 2.0 que el flujo de trabajo puede usar para autenticarse en cualquier API de Google. 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:

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

El parámetro scope es opcional, pero se puede usar para especificar el alcance de OAuth 2.0 para el token. De forma predeterminada, se configura como https://www.googleapis.com/auth/cloud-platform.

Realiza solicitudes a Cloud Run o Cloud Functions

Cuando realices solicitudes a Cloud Run o Cloud Functions, usa OIDC para autenticarte.

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 función de Cloud Functions:

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

El parámetro audience es opcional, pero se puede usar para especificar el público de OIDC para el token. De forma predeterminada, se establece en el mismo valor que url.

¿Qué sigue?