要发出经过身份验证的 HTTP 请求,您的工作流必须与 (通过其电子邮件地址来标识)的服务账号, 凭据。如需详细了解如何附加 Identity and Access Management (IAM) 分配给工作流,以及向该服务账号授予 请参阅 授予工作流访问 Google Cloud 资源的权限。
身份验证令牌
默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。您必须向工作流明确添加身份验证信息 定义。
要在 Workflows 和需要此类
Workflows 在授权过程中使用令牌,
标头,
并使用 HTTPS 将令牌发送到目标服务。连接到
使用 Cloud Run 函数或 Cloud Run
ID 令牌 (OIDC)。对于托管在
googleapis.com
,请使用
访问令牌 (OAuth 2.0)。
如需在工作流中发出经过身份验证的请求,请执行以下操作之一: 执行以下操作:
外部 API - 使用
Authorization
请求标头 第三方 API。在本文档中,请参阅 向外部 API 发出经过身份验证的请求。Google Cloud API - 如果可用,请使用工作流 connector,它会使用工作流的服务账号自动提供所需的身份验证。如果无法 使用连接器、使用 HTTP 请求来连接其他 Google Cloud API。不限 以主机名
.googleapis.com
结尾的 API 接受此身份验证 方法。在本文档中,请参阅 向 Google Cloud API 发出经过身份验证的请求。Cloud Run 函数或 Cloud Run - 使用 OIDC 连接到 Cloud Run 或 Cloud Run 函数。在本文档中, 请参阅 向 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。