要发出经过身份验证的 HTTP 请求,您的工作流必须与 (通过其电子邮件地址来标识)的服务账号, 凭据。如需详细了解如何将 Identity and Access Management (IAM) 服务账号附加到工作流,并向其授予访问资源所需的权限,请参阅向工作流授予访问 Google Cloud 资源的权限。
身份验证令牌
默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。您必须向工作流明确添加身份验证信息 定义。
要在 Workflows 和需要此类
Workflows 在授权过程中使用令牌,
标头,
并使用 HTTPS 将令牌发送到目标服务。连接到
使用 Cloud Run 函数或 Cloud Run
ID 令牌 (OIDC)。对于在 googleapis.com
上托管的 API,请使用访问令牌 (OAuth 2.0)。
如需在工作流中发出经过身份验证的请求,请执行以下操作之一: 执行以下操作:
外部 API - 使用
Authorization
请求标头 第三方 API。请参阅本文档中的向外部 API 发出经过身份验证的请求。Google Cloud API - 如果可用,请使用工作流 connector,它会使用工作流的服务账号自动提供所需的身份验证。如果您无法使用连接器,请使用带有 OAuth 2.0 的 HTTP 请求连接到其他 Google Cloud API。不限 以主机名
.googleapis.com
结尾的 API 接受此身份验证 方法。在本文档中,请参阅 向 Google Cloud API 发出经过身份验证的请求。Cloud Run functions 或 Cloud Run - 使用 OIDC 连接到 Cloud Run 或 Cloud Run functions。在本文档中, 请参阅 向 Cloud Run 或 Cloud Run 函数发出请求。
专用本地部署、Compute Engine、Google Kubernetes Engine (GKE)、 或其他 Google Cloud 端点 - 将 Identity-Aware Proxy (IAP) 与 OIDC 搭配使用 为您的端点强制执行访问权限控制政策。如需了解详情,请参阅调用专用本地、Compute Engine、GKE 或其他端点,并了解如何通过用户账号或服务账号对 IAP 保护的资源进行身份验证。
向外部 API 发出经过身份验证的请求
如果您要集成第三方 API,请添加 Authorization
请求标头以及执行身份验证所需的凭据。例如,在服务请求的 Authorization: Bearer ID_TOKEN
标头中添加一个 ID 令牌。如需了解详情,请参阅 API 提供商的文档。
向 Google Cloud API 发出经过身份验证的请求
工作流的服务账号可以生成 OAuth 2.0 令牌,工作流可以使用该令牌向任何 Google Cloud API 进行身份验证。使用此身份验证方法时,工作流会以其关联的服务账号进行身份验证。如需使用 OAuth 2.0 协议发出 HTTP 请求,请在指定网址的 auth
部分添加到工作流定义的 args
部分。在此示例中,系统将向 Compute Engine API 发送停止虚拟机的请求:
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" } } } } ]
scopes
键是可选的,但可用于为令牌指定 OAuth 2.0 范围。将 OAUTH_SCOPE
替换为字符串或字符串列表。空格和逗号分隔的字符串
支持。默认情况下,该值设置为
https://www.googleapis.com/auth/cloud-platform
。
向 Cloud Run 函数或 Cloud Run 发出请求
向 Cloud Run 函数或 Cloud Run 发出请求时, 请使用 OIDC 进行身份验证。
如需使用 OIDC 发出 HTTP 请求,请在指定网址后,将 auth
部分添加到工作流定义的 args
部分。在此示例中,
请求来调用 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" } } } } ]
audience
密钥是可选的,但可用于指定 OIDC
令牌的受众群体。默认情况下,OIDC_AUDIENCE
设置为与 url
相同的值。
请注意,Workflows 可以调用入站流量受限于内部流量的 Cloud Run 函数或 Cloud Run 服务。使用此配置,您的服务 无法通过互联网访问,但可以通过 Workflows 访问。
如需了解详情,请参阅调用 Cloud Run 函数或 Cloud Run。