驗證開發人員

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

事前準備

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

主控台使用者介面

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

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

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

  4. 按一下「新增主體」

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

  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 與 Cloud Run 服務名稱,用於繫結 IAM 政策。
  • EMAIL 與您要授予權限的使用者電子郵件帳戶。

測試私人服務

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

在 Google Cloud CLI 中使用 Cloud Run 代理

如要測試私人服務,最簡單的方式就是使用 Google Cloud CLI 中的 Cloud Run 代理伺服器。這會將私人服務代理至 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 權杖。這種做法可將權杖用途限制在指定服務,進而提升安全性。如果是 Google 帳戶以外的帳戶,請使用Workforce Identity Federation 叫用 Cloud Run 服務,這樣就不必下載服務帳戶金鑰。

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