驗證開發人員

除了諸如建立、更新及刪除服務的管理動作以外,開發人員通常會想先以私人方式測試服務,再將其發布。這個選項適用於 Cloud Run 服務,不適用於 Cloud Run 作業。

事前準備

請務必授予要驗證的服務存取權。您必須將 Cloud Run Invoker 角色授予開發人員或開發人員群組:

主控台使用者介面

  1. 前往 Google Cloud 控制台

    前往 Google Cloud 控制台

  2. 選取服務,但不要點選。

  3. 按一下右側側邊面板中的「權限」分頁標籤。(您可能需要先按一下右上角的「顯示資訊面板」)。

  4. 按一下「新增主體」

  5. 在「New principals」(新增主體) 欄位中,輸入開發人員帳戶電子郵件地址。

  6. 從「Select a role」(選取角色) 下拉式選單中選取 Cloud Run Invoker 角色。

  7. 按一下 [儲存]

gcloud

使用 gcloud run services add-iam-policy-binding 指令:

gcloud run services add-iam-policy-binding SERVICE \
  --member='USER:EMAIL' \
  --role='roles/run.invoker'

其中

  • SERVICE 是服務名稱。
  • USER 的值為 usergroup,視您授權的對象是單一開發人員或群組而定。
  • EMAIL 是電子郵件帳戶。

    例如:

    gcloud run services add-iam-policy-binding myservice \
    --member='user:test-user@gmail.com' \
    --role='roles/run.invoker'

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定的 google_cloud_run_v2_service 資源中新增下列項目:

resource "google_cloud_run_v2_service_iam_binding" "binding" {
  project = "PROJECT"
  location = "LOCATION"
  name = "SERVICE"
  role = "roles/run.invoker"
  members = [
      "user:EMAIL",
  ]
}

更改項目:

  • PROJECT 替換為服務所屬的專案 ID。
  • LOCATION,其中包含 Cloud Run 服務的位置。
  • SERVICE,並將 IAM 政策繫結至該 Cloud Run 服務。
  • EMAIL,並授予使用者電子郵件帳戶權限。

測試私人服務

您可以使用 Cloud Run Proxy 或 curl 測試私人服務。

在 Google Cloud CLI 中使用 Cloud Run Proxy

如要測試私人服務,最簡單的方式是使用 Google Cloud CLI 中的 Cloud Run Proxy。這會將私人服務代理至 http://localhost:8080 (或以 --port 指定的通訊埠),並提供有效帳戶的權杖或您指定的其他權杖。您可以使用網路瀏覽器或 curl 等工具。建議您使用這種方式,在瀏覽器中私下測試網站或 API。

您可以在 Linux、macOS、WSL (建議)cygwin 環境中,使用下列指令列在本機 Proxy 服務:

gcloud run services proxy SERVICE --project PROJECT-ID

使用curl

或者,您也可以使用 curl 等工具,在 Authorization 標頭中傳遞驗證憑證,在沒有 Proxy 的情況下測試私人服務:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

為了讓 curl 指令得以運作,您必須針對具有 run.routes.invoke 權限的使用者傳送有效 ID 權杖,例如 Cloud Run 管理員或 Cloud Run 叫用者。請參閱 Cloud Run IAM 角色,取得完整的角色清單和相關聯的權限。

如要取得登入 gcloud CLI 身分的有效 ID 權杖,請使用 gcloud auth print-identity-token 指令。只要帳戶對服務具有 run.routes.invoke 權限,即可使用 gcloud CLI 建立的權杖,在任何專案中叫用 HTTP 要求。

在開發方面,請使用 gcloud CLI 產生的 ID 權杖。不過請注意,這類權杖缺少目標對象聲明,因此容易受到重播攻擊。在正式環境中,請使用為服務帳戶核發的 ID 權杖,並指定適當的目標對象。這種做法可限制權杖只能用於預期服務,進而提升安全性。對於非使用者帳戶,請使用員工身分聯盟叫用 Cloud Run 服務,這樣就不必下載服務帳戶金鑰。

本文所稱的「使用者帳戶」是指 Google 帳戶,或是由識別資訊提供者管理並與員工身分聯盟連結的使用者帳戶。

使用使用者帳戶提供的憑證登入工具。

建議您分配開發及使用服務所需的最低權限組合。請確保服務的 IAM 政策僅限於最少數量的使用者和服務帳戶。