通过启用 IAP 调用专用本地、Compute Engine、GKE 或其他端点

您可以为端点启用 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.gethttp.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。您可以从“凭据”页面获取此信息。

后续步骤