如需发出经过身份验证的 HTTP 请求,您的工作流必须与具有适当凭据的服务帐号(由其电子邮件地址标识)相关联。如需详细了解如何将 Identity and Access Management (IAM) 服务帐号附加到工作流,以及向其授予访问资源所需的权限,请参阅授予工作流访问 Google Cloud 资源的权限。
身份验证令牌
默认情况下,出于安全考虑,HTTP 请求不包含身份或访问令牌。您必须在工作流定义中明确添加身份验证信息。
为了在 Workflows 和需要此类身份验证的 HTTP 目标之间进行身份验证,Workflows 会根据附加到工作流的服务帐号的凭据,在授权标头中使用令牌,并使用 HTTPS 将令牌发送到目标服务。与 Cloud Functions 或 Cloud Run 连接时,请使用 ID 令牌 (OIDC)。对于托管在 googleapis.com
上的 API,请使用访问令牌 (OAuth 2.0)。
如需从工作流中发出经过身份验证的请求,请根据您调用的服务执行以下某项操作:
外部 API - 使用
Authorization
请求标头通过第三方 API 进行身份验证。在本文档中,请参阅向外部 API 发出经过身份验证的请求。Google Cloud API - 如果可用,请使用 Workflows 连接器,该连接器使用工作流的服务帐号自动提供所需的身份验证。如果您无法使用连接器,请使用带有 OAuth 2.0 的 HTTP 请求来连接其他 Google Cloud API。主机名以
.googleapis.com
结尾的任何 API 都接受此身份验证方法。在本文档中,请参阅向 Google Cloud API 发出经过身份验证的请求。Cloud Functions 或 Cloud Run - 使用 OIDC 与 Cloud Run 或 Cloud Functions 连接。在本文档中,请参阅向 Cloud Run 或 Cloud 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 Functions 或 Cloud Run 发出请求
向 Cloud Functions 或 Cloud Run 发出请求时,请使用 OIDC 进行身份验证。
如需使用 OIDC 发出 HTTP 请求,请在指定网址后,将 auth
部分添加到工作流定义的 args
部分。在此示例中,系统将发送调用 Cloud Functions 函数的请求:
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 Functions 或 Cloud Run 服务。采用此配置时,您无法通过互联网访问您的服务,但可通过 Workflows 访问您的服务。
如需了解详情,请参阅调用 Cloud Functions 或 Cloud Run。