除了諸如建立、更新及刪除服務的管理動作以外,開發人員通常會想先以私人方式測試服務,再將其發布。這個選項適用於 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 帳戶,或是由身分識別提供者管理並與員工身分聯盟連結的使用者帳戶。
使用使用者帳戶提供的憑證登入工具。
建議您分配開發及使用服務所需的最低權限組合。請確保服務的身分與存取權管理政策僅限於最少數量的使用者和服務帳戶。