如需发出经过身份验证的 HTTP 请求,您的工作流必须与具有适当凭据的服务账号(通过其电子邮件地址进行标识)相关联。如需详细了解如何将 Identity and Access Management (IAM) 服务账号附加到工作流,并向其授予访问资源所需的权限,请参阅向工作流授予访问 Google Cloud 资源的权限。
身份验证令牌
默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。您必须向工作流定义明确添加身份验证信息。
为了在 Workflows 与需要进行此类身份验证的 HTTP 目标之间进行身份验证,Workflows 会根据关联到工作流的服务账号的凭据,在授权标头中使用令牌,并使用 HTTPS 将令牌发送到目标服务。连接 Cloud Run functions 或 Cloud Run 时,请使用 ID 令牌 (OIDC)。对于在 googleapis.com
上托管的 API,请使用访问令牌 (OAuth 2.0)。
如需在工作流中发出经过身份验证的请求,请根据您所调用的服务执行以下操作之一:
外部 API - 使用
Authorization
请求标头通过第三方 API 进行身份验证。请参阅本文档中的向外部 API 发出经过身份验证的请求。Google Cloud API:如果可用,请使用 Workflows 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 functions 发出请求部分。
私有本地、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 functions 或 Cloud Run 发出请求
向 Cloud Run functions 或 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 functions 或 Cloud Run 服务。使用此配置时,您的服务无法通过互联网访问,但可以通过 Workflows 访问。
如需了解详情,请参阅调用 Cloud Run functions 函数或 Cloud Run。