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