API 閘道架構

API Gateway 是一種 API 管理系統,可為 API 提供管理、監控和驗證功能。API Gateway 的元件包括:

  • API Gateway:用於管理已部署 API 的各個層面
  • Service Control:用於套用 API 管理規則
  • Service Management:用於管理 API 設定
  • gcloud CLI:用於部署及管理 API
  • Google Cloud 控制台:用於記錄、監控和共用

架構

以下是 API Gateway 主要元件的高階圖表:

API Gateway 的主要元件。

在上圖中:

  • API 供應商負責在 API Gateway 上建立及部署 API。每個 API 都是以 OpenAPI 2.0 規格撰寫的檔案定義。

    OpenAPI 規格會定義 API 的 REST 端點公開網址、API 存取的後端服務,以及 API 的任何其他特徵,例如驗證、資料格式和回應選項。

  • API 用戶端會向 API Gateway 上代管的 API 發出 REST 要求,藉此存取後端服務。API 用戶端可以是任何能夠發出 REST 呼叫的應用程式,例如瀏覽器、行動應用程式或網頁應用程式。

    API 用戶端只需要知道 API 的網址、要求動詞 (例如 GETPUTPOSTDELETE)、任何驗證需求,以及傳送至 API 或從 API 接收的任何資料格式。

    API 用戶端不需要瞭解後端實作內容。事實上,只要根據要求中傳遞的資訊,即可設定 API Gateway 上託管的單一 API,存取不同的後端。

API Gateway 元件

API Gateway

API Gateway 提供全代管的隨用隨付解決方案,可代管您的 API。API Gateway 透過明確定義的 REST API 為後端服務提供安全的存取機制,無論服務實作機制為何,都能確保所有服務的一致性。

API Gateway 已與 Google Cloud 整合,因此您可以使用與任何其他 Google Cloud 產品相同的開發、監控、記錄和追蹤工具。

如果您連線至 Google Cloud以外的後端服務,仍可使用所有 Google Cloud 服務,包括用於控管 API 存取權的驗證和授權服務。

Service Control API

Service Control API 會在執行階段套用 API 管理規則,例如 API 金鑰驗證、監控和記錄。Service Control 提供下列方法:

  • 檢查:確認驗證和 API 金鑰,並指示是否應允許某個呼叫
  • 報告:向系統通報記錄和監控功能的相關記錄

Service Management API

您可以使用 OpenAPI 規格定義 API。接著,您可以使用 gcloud CLI 將 OpenAPI 規格上傳至 Service Management,建立 API 設定。其他設定相關工作也會在這裡進行,例如與其他開發人員共用您的 API、在不同的專案中啟用或停用 API,以及產生 API 金鑰。

gcloud CLI

gcloud CLI 提供 gcloud 指令列工具,可用於呼叫各種 Google Cloud 服務。您可以使用 Google Cloud CLI 上傳 OpenAPI 規格,建立 API 設定,然後將 API 設定部署至 API Gateway。

Cloud 控制台

Google Cloud 控制台是 Google Cloud 控制台的圖形使用者介面。使用 Google Cloud 控制台公開 Service Control 記錄的監控和記錄資料,設定驗證和授權,並讓開發人員產生 API 金鑰來呼叫 API。

處理 API 要求

API 設定中有兩種端點:

  • API 端點:定義用戶端用來使用 API 的公開端點。
  • 後端端點:定義 API 用於連線至後端服務的端點。HTTP 或 HTTPS 存取權等安全性設定,是由後端服務的實作方式定義。

對 API 端點的要求會傳遞至後端端點,包括要求中傳遞的任何資料。後端服務的回應 (包括服務傳回的任何資料) 會傳回給用戶端。

轉送要求

收到要求時:

  1. API Gateway 會為 Cloud Trace 建立追蹤記錄符記。

  2. API Gateway 會比對傳入要求的路徑與目標 API。找到相符路徑後,API Gateway 會針對指定 API 執行任何驗證步驟。

  3. 如果必須進行 JWT 驗證,API Gateway 會使用簽署者的適當公開金鑰進行驗證,並驗證 JWT 中的目標對象欄位。如果需要 API 金鑰,API Gateway 會呼叫 Service Control API 來驗證金鑰。

  4. Service Control 會查詢金鑰以進行驗證,並確保與金鑰相關聯的專案已啟用 API。如果金鑰無效或專案尚未啟用 API,則會拒絕呼叫,並透過 Service Control API 進行記錄。

  5. 如果 Service Control 成功驗證金鑰,系統即會將要求以及所有原始標頭和 JWT 驗證標頭 (如適當) 轉送至後端。

  6. 當 API Gateway 收到後端的回應時,就會將該回應傳回給呼叫端,並將最後的時間資訊傳送到 Trace。系統會透過 Service Control API 記錄呼叫點,該 API 會將指標和記錄寫入適當的目的地。

後續步驟