La llamada o la invocación de un entorno local privado, Compute Engine, Google Kubernetes Engine (GKE) o cualquier otro extremo de Google Cloud desde Workflows se realiza a través de una solicitud HTTP. Los métodos de solicitud HTTP más comunes tienen un acceso directo de llamada (como http.get y http.post), pero puedes realizar cualquier tipo de solicitud HTTP si configuras el campo call
como http.request
y especificas el tipo de solicitud con el campo method
. Para obtener más información, consulta Realiza una solicitud HTTP.
Habilita IAP
Debes habilitar Identity-Aware Proxy (IAP) para el extremo privado a fin de que los flujos de trabajo puedan invocarlo. IAP se usa para aplicar las políticas de control de acceso y te permite establecer una capa de autorización central para las aplicaciones a las que se accede mediante HTTPS, de modo que puedas usar un modelo de control de acceso a nivel de aplicación en lugar de firewalls a nivel de red. Para obtener más información, consulta la descripción general de IAP y la siguiente información:
- Habilita IAP para App Engine
- Habilita IAP para Cloud Run
- Habilita IAP para Compute Engine
- Habilita IAP para GKE
- Habilita IAP para apps locales
Usa una cuenta de servicio con los permisos necesarios
Cuando realizas solicitudes a otros servicios de Google Cloud, tu flujo de trabajo debe estar asociado con una cuenta de servicio que tenga una o más funciones de administración de identidades y accesos (IAM) que contengan los permisos necesarios para acceder a los recursos solicitados. Para saber qué cuenta de servicio está asociada con un flujo de trabajo existente, consulta Verifica una cuenta de servicio asociada de un flujo de trabajo.
Cuando configuras una cuenta de servicio, asocias la identidad de la solicitud con el recurso al que deseas darle acceso (debes hacer que la identidad de la solicitud sea una principal, o usuario, del recurso) y, luego, asignarle la función adecuada. La función define qué permisos tiene la identidad en el contexto del recurso. Cuando IAP protege una aplicación o un recurso, solo los principales que tengan la función correcta pueden acceder a ellos a través del proxy.
Por ejemplo, después de la autenticación, IAP aplica la política de permiso relevante para verificar si la principal está autorizada para acceder al recurso solicitado. Si la principal tiene la función Usuario de aplicación web protegida con IAP (roles/iap.httpsResourceAccessor
) en el proyecto de Google Cloud Console donde existe el recurso, está autorizado para acceder a la aplicación.
Puedes configurar el acceso a tu recurso protegido con IAP a través de la página de IAP si agregas la cuenta de servicio de flujos de trabajo como una principal. Para obtener más información, consulta Administra el acceso a los recursos protegidos con IAP.
Agrega información de autenticación a tu flujo de trabajo
De forma predeterminada, las solicitudes HTTP no contienen tokens de identidad o acceso por razones de seguridad. Debes agregar de forma explícita información de autenticación a la definición de tu flujo de trabajo. Cuando realices solicitudes a un extremo privado, usa OIDC para autenticar a través de IAP.
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.
YAML
- step_A: call: http.get args: url: https://www.example.com/endpoint body: someValue: "Hello World" anotherValue: 123 auth: type: OIDC audience: OIDC_AUDIENCE
JSON
[ { "step_A": { "call": "http.get", "args": { "url": "https://www.example.com/endpoint", "body": { "someValue": "Hello World", "anotherValue": 123 }, "auth": { "type": "OIDC", "audience": "OIDC_AUDIENCE" } } } } ]
Puedes usar el parámetro audience
a fin de especificar el público de OIDC para el token.
Cuando invocas un extremo habilitado para IAP, debes especificar el ID de cliente de OAuth 2.0 que configuraste para tu aplicación. Puedes obtenerlo en la página Credenciales.
¿Qué sigue?
- Otorgar un permiso de flujo de trabajo para acceder a los recursos de Google Cloud
- Cómo acceder a los datos de respuesta HTTP guardados en una variable