您可以为端点启用 Identity-Aware Proxy (IAP),从而从 Workflows 中调用专用本地、Compute Engine、Google Kubernetes Engine (GKE) 或其他 Google Cloud 端点。IAP 用于强制执行访问控制政策,可让您为通过 HTTPS 访问的应用建立一个中央授权层,从而可以采用一种应用级访问权限控制模型,而无需依赖网络级防火墙。如需了解详情,请参阅 IAP 概览以及以下内容:
或者,您也可以将 Service Directory 的服务注册表与 Workflows 搭配使用,以便从工作流执行中定位到用于 HTTP 调用的私有端点。通过在虚拟私有云 (VPC) 网络中创建专用端点,该端点可以符合 VPC Service Controls 要求。如需了解详情,请参阅调用符合 VPC Service Controls 要求的专用端点。
发出 HTTP 请求
从 Workflows 调用或调用专用端点是通过 HTTP 请求完成的。最常见的 HTTP 请求方法具有调用快捷方式(例如 http.get 和 http.post),但您可以发出任何类型的 HTTP 请求,方法是将 call
字段设置为 http.request
并使用 method
字段指定请求类型。如需了解详情,请参阅发出 HTTP 请求。
使用具有所需权限的服务账号
向其他 Google Cloud 服务发出请求时,您的工作流必须与具有一个或多个包含所需权限的 Identity and Access Management (IAM) 角色的服务账号相关联,这些角色能够访问所请求资源。如需了解与现有工作流关联的服务账号,请参阅验证工作流的关联服务账号。
设置服务账号时,将请求身份与您要授予访问权限的资源相关联(将请求身份设为资源的主账号或用户),然后为其分配适当的角色。该角色定义身份在资源上下文中具有的权限。如果某一应用或资源受 IAP 保护,则只有具有正确角色的主账号才能通过代理访问该应用或资源。
例如,身份验证完成后,IAP 会应用相关的允许政策来检查主账号是否有权访问所请求的资源。如果主账号对资源所属的 Google Cloud 控制台项目拥有 IAP-secured Web App User 角色 (roles/iap.httpsResourceAccessor
),则表示其有权访问相应应用。
您可以通过将 Workflows 服务账号添加为正文,在 IAP 页面中配置对受 IAP 保护的资源的访问权限。如需了解详情,请参阅管理对受 IAP 保护的资源的访问权限。
向工作流添加身份验证信息
默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。您必须向工作流定义明确添加身份验证信息。向专用端点发出请求时,请使用 OIDC 通过 IAP 进行身份验证。
如需使用 OIDC 发出 HTTP 请求,请在指定网址后,将 auth
部分添加到工作流定义的 args
部分。
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" } } } } ]
您可以使用 audience
参数为令牌指定 OIDC 目标设备。调用启用了 IAP 的端点时,您必须指定为应用配置的 OAuth 2.0 客户端 ID。您可以从“凭据”页面获取此信息。