如要發出經過驗證的 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:使用
Authorization
要求標頭,向第三方 API 進行驗證。請參閱本文的「向外部 API 發出經過驗證的要求」。Google Cloud API:如要使用 Workflows connector,系統會自動透過工作流程的服務帳戶提供必要驗證。如果無法使用連接器,請透過 OAuth 2.0 發出 HTTP 要求,與其他 Google Cloud API 建立連線。凡是以
.googleapis.com
主機名稱結尾的 API,都接受這種驗證方法。請參閱本文的「向 Google Cloud API 發出經過驗證的要求」。Cloud Run functions 或 Cloud Run:使用 OIDC 連線至 Cloud Run 或 Cloud Run functions。如需相關資訊,請參閱本文的「向 Cloud Run 或 Cloud Run functions 發出要求」一節。
私有內部部署、Compute Engine、Google Kubernetes Engine (GKE) 或其他 Google Cloud 端點:搭配使用 Identity-Aware Proxy (IAP) 和 OIDC,為端點強制執行存取控管政策。詳情請參閱「叫用私有內部部署、Compute Engine、GKE 或其他端點」一文,並瞭解如何從使用者或服務帳戶向 IAP 保護的資源進行驗證。
向外部 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」。