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

您可以为端点启用 Identity-Aware Proxy (IAP),从而从工作流中调用专用内部部署端点、Compute Engine、Google Kubernetes Engine (GKE) 或其他 Google Cloud 端点。IAP 用于强制执行访问权限控制政策,可让您为通过 HTTPS 访问的应用建立一个中央授权层,从而可以采用一种应用级访问权限控制模型,而不依赖网络级防火墙。如需了解详情,请参阅 IAP 概览以及以下内容:

或者,您也可以将 Service Directory 的服务注册表与 Workflows 搭配使用,以便从工作流执行中定位到用于 HTTP 调用的私有端点。通过在虚拟私有云 (VPC) 网络中创建专用端点,该端点可以符合 VPC Service Controls 要求。如需了解详情,请参阅调用符合 VPC Service Controls 要求的专用端点

发出 HTTP 请求

从工作流调用或调用专用端点是通过 HTTP 请求完成的。最常见的 HTTP 请求方法具有调用快捷方式(例如 http.gethttp.post),但您可以发出任何类型的 HTTP 请求,方法是将 call 字段设置为 http.request 并使用 method 字段指定请求类型。如需了解详情,请参阅发出 HTTP 请求

使用具有所需权限的服务账号

向其他服务发出请求时,您的工作流必须与具有一个或多个包含所需权限(用于访问所请求资源)的 Identity and Access Management (IAM) 角色的服务账号相关联。 Google Cloud 如需了解与现有工作流关联的服务账号,请参阅验证工作流的关联服务账号

设置服务账号时,将请求身份与您要授予访问权限的资源相关联(将请求身份设为资源的主账号或用户),然后为其分配适当的角色。该角色定义身份在资源上下文中具有的权限。如果某一应用或资源受 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。您可以从“凭据”页面获取此信息。

后续步骤