您可以使用 Workflows 调用已启用 Identity-Aware Proxy (IAP) 的端点。端点可以是本地、Compute Engine、Google Kubernetes Engine (GKE) 或其他Google Cloud 端点。
IAP 会在应用级验证身份并强制执行授权,因此您可以使用应用级访问权限控制模型,而不必依赖网络级防火墙。如果某一应用或资源受 IAP 保护,则只有具有正确 Identity and Access Management (IAM) 角色的主账号才可以通过代理访问该应用或资源。
如需了解详情,请参阅 IAP 概览以及以下指南:
发出 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 保护的网页应用用户角色 (roles/iap.httpsResourceAccessor),即表示其有权访问该应用。
您可以通过IAP 页面将 Workflows 服务账号添加为主账号,从而配置对受 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。您可以从“凭据”页面获取此密钥。