除了諸如建立、更新及刪除服務的管理動作以外,開發人員通常會想先以私人方式測試服務,再將其發布。這個選項適用於 Cloud Run 服務,不適用於 Cloud Run 作業。
事前準備
請務必授予要驗證的服務存取權。您必須將 Cloud Run Invoker 角色授予開發人員或開發人員群組:
主控台使用者介面
前往 Google Cloud 控制台
選取服務,但不要點選。
按一下右側側邊面板中的「權限」分頁標籤。(您可能需要先按一下右上角的「顯示資訊面板」)。
按一下「新增主體」。
在「New principals」(新增主體) 欄位中,輸入開發人員帳戶電子郵件地址。
從「Select a role」(選取角色) 下拉式選單中選取
Cloud Run Invoker角色。按一下 [儲存]。
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 的值為
user或group,視您授權的對象是單一開發人員或群組而定。 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 政策僅限於最少數量的使用者和服務帳戶。