建立公開 Cloud Run 服務的方法有兩種:
必要的角色
如要停用或重新啟用服務的 Invoker IAM 檢查,您必須具備下列權限:
run.services.createrun.services.updaterun.services.setIamPolicy
Cloud Run 管理員 (roles/run.admin) 角色已具備這些權限。如需完整的角色清單和相關聯的權限,請參閱「Cloud Run IAM 角色」。
停用 Cloud Run Invoker IAM 檢查
如要建立公開服務,建議停用 Cloud Run 叫用者 IAM 檢查。Cloud Run 預設會強制執行這項檢查。如果專案須遵守機構政策中的網域限定共用限制,請使用這個解決方案。
如要停用檢查:
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
如要設定新服務,請按一下「建立服務」,然後視需要填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「安全性」分頁。
選取「允許公開存取」。
按一下「建立」或「儲存」。
gcloud
如為新服務,請使用
gcloud run deploy指令並加上--no-invoker-iam-check旗標:gcloud run deploy SERVICE_NAME --no-invoker-iam-check
將
SERVICE_NAME改為服務名稱。如為現有服務,請使用
gcloud run services update指令並加上--no-invoker-iam-check旗標:gcloud run services update SERVICE_NAME --no-invoker-iam-check
將 SERVICE_NAME 改為服務名稱。
YAML
如要查看及下載設定,請按照下列步驟操作:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/invoker-iam-disabled:註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: 'true' name: SERVICE_NAME
將 SERVICE_NAME 替換為 Cloud Run 服務名稱。
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列項目新增至google_cloud_run_v2_service 資源:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
invoker_iam_disabled = true
template {
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
- SERVICE:Cloud Run 服務的名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
部署後,請前往服務的 HTTPS 端點,確認檢查是否已停用。
重新啟用 Cloud Run Invoker IAM 檢查
如要重新啟用檢查,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下服務,然後點選「安全性」。
選取「需要驗證」,然後選取「Identity and Access Management (IAM)」。
按一下 [儲存]。
gcloud
傳遞
--invoker-iam-check旗標來更新服務:gcloud run services update SERVICE_NAME --invoker-iam-check
將
SERVICE_NAME改為服務名稱。
YAML
如要查看及下載設定,請按照下列步驟操作:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/invoker-iam-disabled:註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: 'false' name: SERVICE_NAME
將
SERVICE_NAME換成 Cloud Run 服務名稱。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列項目新增至google_cloud_run_v2_service 資源:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
invoker_iam_disabled = false
template {
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
- SERVICE:Cloud Run 服務的名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
部署完成後,請前往服務的 HTTPS 端點,確認檢查是否已重新啟用。
設定 Cloud Run 叫用者 IAM 檢查的組織政策
如果您是管理員,可以使用 constraints/run.managed.requireInvokerIam 受管理限制,限制停用 Invoker IAM 檢查的功能。這項限制預設不會強制執行。
將 Cloud Run IAM 叫用者角色指派給 allUsers 成員類型
您可以將 Cloud Run 叫用者 IAM 角色指派給 allUsers 成員類型,允許公開存取服務。
您必須具備 run.services.setIamPolicy 權限,才能在 Cloud Run 服務上設定驗證。Cloud Run 管理員角色具備此權限。如需完整的角色清單和相關聯的權限,請參閱「Cloud Run IAM 角色」。
控制台
如果是現有的 Cloud Run 服務:
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
找出要公開的服務,然後按一下左側的核取方塊。請勿點選服務本身。
在右上角的資訊窗格中,按一下「權限」分頁標籤。如果資訊窗格未顯示,你可能需要按一下「顯示資訊面板」,然後按一下「權限」。
按一下「Add principal」(新增主體)。
在「New principals」(新增主體) 欄位中輸入值 allUsers。
從「Select a role」(請選擇角色) 選單中,選取「Cloud Run Invoker」(Cloud Run 叫用者) 角色。
按一下 [儲存]。
系統會提示您確認要將這項資源設為公開。按一下「允許公開存取」,將變更套用至服務的 IAM 設定。
如要公開發布新服務,請建立服務,並在「Authentication」(驗證) 專區中選取「Allow public access」(允許公開存取)。如要將服務設為私人,請選取「需要驗證」。
gcloud
如要公開服務,請使用 gcloud run services 指令將特別的 allUsers 成員類型新增到服務,並授予 roles/run.invoker 角色:
gcloud run services add-iam-policy-binding [SERVICE_NAME] \ --member="allUsers" \ --role="roles/run.invoker"
部署服務時,請執行 gcloud run deploy 指令,讓服務可公開存取:
gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated
YAML
建立名為 policy.yaml 的檔案,並加入以下內容:
bindings:
- members:
- allUsers
role: roles/run.invoker
使用下列項目,允許現有 SERVICE 的公開存取權:
gcloud run services set-iam-policy SERVICE policy.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_service 資源中新增下列項目:如要更新 roles/run.invoker 的服務 IAM 繫結,請新增下列資源,參照您的 Cloud Run 服務:
這項繫結只對指定角色具有授權性。服務 IAM 政策中的其他 IAM 繫結會保留。