调用受 IAP 保护的端点

您可以使用 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.gethttp.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。您可以从“凭据”页面获取此密钥。

后续步骤