設定開發環境

本文說明如何設定 API Gateway 開發環境。

必要條件

如要在 API Gateway 中建立 API,請先完成下列步驟:

準備 Google Cloud CLI 以進行部署

如要準備部署作業,請按照下列步驟操作:gcloud

  1. 安裝並初始化 gcloud CLI
  2. 更新 gcloud CLI:
    gcloud components update
  3. 確認 gcloud CLI 已獲授權,可存取您的資料和服務:
    gcloud auth login

    系統將開啟新的瀏覽器分頁,並提示您選擇一個帳戶。

  4. 設定預設專案。將 PROJECT_ID 替換為您的 Google Cloud 專案 ID:
    gcloud config set project PROJECT_ID 

啟用必要的 Google 服務

API Gateway 需要啟用下列 Google Cloud 服務:

名稱 服務名稱
API Gateway API apigateway.googleapis.com
Service Management API servicemanagement.googleapis.com
Service Control API servicecontrol.googleapis.com

如要啟用必要服務,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往「APIs & Services」(API 與服務) >「API Library」(API 程式庫) 頁面。

    前往 API 程式庫

  2. 在「API Library」(API 程式庫) 頁面中,在搜尋列輸入所需 API 名稱。
  3. 在搜尋結果中選取 API 頁面。
  4. 在 API 頁面中,按一下「啟用」
  5. 針對上表列出的每項服務,重複執行這些步驟。

Google Cloud CLI

使用下列指令啟用服務:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

如要進一步瞭解 gcloud 服務,請參閱 gcloud 服務

設定用於建立 API 設定的服務帳戶

在閘道上部署的 API 設定會使用與閘道服務帳戶相關聯的權限執行。

最佳做法是在用於 API Gateway 的專案中建立專屬服務帳戶。然後,只為服務帳戶指派存取後端服務所需的權限。這樣一來,您就能限制與 API 設定相關聯的權限。

如果是 API 閘道,建立或更新 API 設定或閘道的使用者,必須對服務帳戶物件擁有 iam.serviceAccounts.actAs 權限。「服務帳戶使用者」角色也具有此權限。

如要將必要角色和權限新增至閘道服務帳戶,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶) 頁面。

    前往「Service accounts」(服務帳戶)

  2. 選取所需專案,或建立新專案。
  3. 按一下所需服務帳戶。
  4. 按一下「Permissions」(權限) 分頁標籤。
  5. 按一下「管理存取權」
  6. 按一下「新增角色」,然後將 Service Account User 角色指派給主體,以便在建立 API 設定時參照服務帳戶。
  7. 按一下 [儲存]

Google Cloud CLI

使用下列指令,將角色和權限新增至使用者的服務帳戶:

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
--member user:USER_EMAIL \
--role roles/iam.serviceAccountUser

其中:

  • SERVICE_ACCOUNT_EMAIL 是服務帳戶的電子郵件地址,格式為 SA_NAME@PROJECT_ID.iam.gserviceaccount.com
  • USER_EMAIL 是使用者的電子郵件地址。

例如:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
--member user:myemail@email.com \
--role roles/iam.serviceAccountUser

此外,閘道服務帳戶也必須具備存取後端服務所需的權限。例如:

  • 如果是 Cloud Functions 後端,服務帳戶必須指派 Cloud Functions 叫用者角色。
  • 如果是 Cloud Run 後端,服務帳戶必須獲派「Cloud Run 叫用者」角色。
  • 如果是 App Engine 後端,您必須按照「設定 IAP 存取權」一文中的步驟,將「受 IAP 保護的網路應用程式使用者」角色授予與閘道相關聯的服務帳戶。

限制與 API 設定相關聯的權限,可進一步保護後端系統。詳情請參閱身分與存取權管理 (IAM) 說明文件

建立服務帳戶後,請使用 --backend-auth-service-account 選項,在建立 API 設定時指定該服務帳戶的電子郵件地址:

gcloud api-gateway api-configs create CONFIG_ID \
--api=API_ID --openapi-spec=API_DEFINITION \
--backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

如要進一步瞭解如何建立 API 設定,請參閱建立 API 設定

使用預設服務帳戶

部分 Google Cloud 產品會定義預設服務帳戶。 舉例來說,如果您使用 Compute Engine,並為專案啟用 Compute Engine API,系統會為您建立預設的 Compute Engine 服務帳戶。預設服務帳戶的電子郵件地址如下:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

如果您將必要權限指派給預設服務帳戶,建立 API 設定時可以省略 --backend-auth-service-account 選項:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION 

詳情請參閱「Compute Engine 預設服務帳戶」。

使用 OpenID Connect

API Gateway 對後端服務的要求可能會使用驗證。這些要求會使用由閘道服務帳戶簽署的 OpenID Connect (OIDC) 權杖保護。請確認後端服務已正確設定,可接受 OIDC 權杖進行驗證和授權。Cloud Run 函式、Cloud Run 和 Identity Aware Proxy (IAP) 都提供這項選項。

後續步驟