透過工作流程提出已驗證的要求

如要發出經過驗證的 HTTP 要求,工作流程必須與具備適當憑證的服務帳戶 (以電子郵件地址識別) 建立關聯。如要進一步瞭解如何將 Identity and Access Management (IAM) 服務帳戶附加至工作流程,並授予存取資源所需的權限,請參閱「授予工作流程權限,以便存取 Google Cloud 資源」。

驗證權杖

基於安全考量,HTTP 要求預設不會包含身分或存取權杖。您必須在工作流程定義中明確新增驗證資訊。

如要在 Workflows 和需要驗證的 HTTP 目標之間進行驗證,Workflows 會使用授權標頭中的權杖,該權杖是根據附加至工作流程的服務帳戶憑證而建立,並透過 HTTPS 將權杖傳送至目標服務。與 Cloud Run 函式或 Cloud Run 連線時,請使用ID 權杖 (OIDC)。如要使用 googleapis.com 上代管的 API,請使用存取權杖 (OAuth 2.0)。

如要在工作流程中提出經過驗證的要求,請根據您呼叫的服務,執行下列其中一項操作:

向外部 API 發出經過驗證的要求

如果您要整合第三方 API,請在 Authorization 要求標頭中加入驗證所需的憑證。舉例來說,在向服務提出要求的 Authorization: Bearer ID_TOKEN 標頭中加入 ID 符記。詳情請參閱 API 供應商的說明文件。

向 Google Cloud API 發出經過驗證的要求

工作流程的服務帳戶可以產生 OAuth 2.0 權杖,供工作流程用來向任何 Google Cloud API 進行驗證。使用這種驗證方法時,工作流程會以相關聯的服務帳戶進行驗證。如要使用 OAuth 2.0 通訊協定發出 HTTP 要求,請在指定網址後,將 auth 區段新增至工作流程定義的 args 區段。在本範例中,系統會向 Compute Engine API 發出要求,停止虛擬機器:

YAML

  - step_A:
      call: http.post
      args:
          url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
          auth:
              type: OAuth2
              scopes: OAUTH_SCOPE
    

JSON

    [
      {
        "step_A": {
          "call": "http.post",
          "args": {
            "url": "https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop",
            "auth": {
              "type": "OAuth2",
              "scopes": "OAUTH_SCOPE"
            }
          }
        }
      }
    ]
      
scopes 鍵為選用,但可用於指定權杖的 OAuth 2.0 範圍。將 OAUTH_SCOPE 替換為字串或字串清單。系統也支援以空格和半形逗號分隔的字串。預設值為 https://www.googleapis.com/auth/cloud-platform

向 Cloud Run 函式或 Cloud Run 發出要求

向 Cloud Run functions 或 Cloud Run 發出要求時,請使用 OIDC 進行驗證。

如要使用 OIDC 發出 HTTP 要求,請在指定網址後,將 auth 區段新增至工作流程定義的 args 區段。在本範例中,系統會傳送要求來叫用 Cloud Run 函式:

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
audience 鍵為選用,但可用來指定權杖的 OIDC 對象。根據預設,OIDC_AUDIENCE 會設為與 url 相同的值。

請注意,如果 Cloud Run 函式或 Cloud Run 服務的連入流量僅限內部流量,工作流程仍可叫用這些函式或服務。採用這項設定後,服務就無法從網際網路存取,但可從 Workflows 存取。

詳情請參閱「呼叫 Cloud Run 函式或 Cloud Run」。

後續步驟