設定開發環境

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

事前準備

在 API Gateway 中建立 API 前,請確認您具備下列條件:

  • 建立 Google Cloud 專案,而且具備專案的編輯者擁有者角色。初次部署之後,您可以將更多受限制的服務設定編輯者角色授予使用者、群組或服務帳戶。

  • 準備 Google Cloud CLI,如下文所述。

  • 按照下文所述啟用必要的 Google 服務。

  • 請按照下方的說明設定用於建立 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 

啟用必要服務

API Gateway 要求您啟用下列 Google 服務:

名稱 標題
apigateway.googleapis.com API Gateway API
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com Service Control API

如要確認必要服務已啟用,請執行:

gcloud services list

如果必要的服務並未列出,請執行下列指令加以啟用:

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

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

設定服務帳戶

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

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

針對 API Gateway,使用者必須具備服務帳戶物件上的 iam.serviceAccounts.actAs 權限,才能建立或更新 API 設定或閘道。服務帳戶使用者角色也具有這項權限。

您可以使用下列指令,為使用者新增服務帳戶的角色和權限:

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) 說明文件

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

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID \
  --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 --project=PROJECT_ID

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

使用 OpenID Connect

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

後續步驟