本頁說明如何使用輸入設定,限制對 Cloud Run 服務的網路存取權。
在網路層級,Cloud Run 服務的端點可透過下列網路傳入路徑存取:
所有網路輸入路徑均須遵守服務的輸入設定。 根據預設,輸入路徑和輸入設定允許網際網路上的任何資源連線至 Cloud Run 服務。您可以使用自訂限制,為機構或一組專案限制 Ingress 設定。從上述任一網路傳入路徑抵達服務端點的要求,仍適用 IAM 驗證。如要以分層方式管理存取權,請同時使用網路連入設定和 IAM 驗證。
使用網路標記限制連接器 VM 對 VPC 資源的存取權。
可用的網路進入設定
可用的設定如下:
設定 | 說明 |
---|---|
內部 |
最嚴格的限制。允許來自下列來源的要求:
run.app 網址存取您的服務,相關要求仍會留在 Google 網路內。來自其他來源 (包括網際網路) 的要求,無法透過 run.app 網址或自訂網域連線至您的服務。 |
內部和 Cloud Load Balancing | 這項設定允許下列資源提出要求:
注意:如要在 gcloud CLI 中啟用這項設定,請使用 internal-and-cloud-load-balancing 。
如要在 Google Cloud 控制台中啟用這項設定,請選取「內部」>「允許外部應用程式負載平衡器傳出的流量」。 |
全部 |
最寬鬆的設定。允許所有要求,包括直接從網際網路傳送至 run.app 網址的要求。 |
存取內部服務
其他注意事項如下:
存取內部服務時,請照常使用服務的網址呼叫服務,可以是預設的
run.app
網址,也可以是在 Cloud Run 中設定的自訂網域。如果是來自 Compute Engine VM 執行個體的要求,只要機器有外部 IP 位址或使用 Cloud NAT,就不需要進一步設定。否則,請參閱「接收來自 VPC 網路的要求」。
從 Cloud Run 或 App Engine 呼叫設為「內部」或「內部和 Cloud Load Balancing」的 Cloud Run 服務時,流量必須透過視為內部的 VPC 網路轉送。請參閱「接收來自其他 Cloud Run 服務或 App Engine 的要求」。
即使資源具有外部 IP 位址,來自相同專案中虛擬私有雲網路內資源的要求仍視為「內部」要求。
透過 Cloud VPN 和 Cloud Interconnect 連線至 VPC 網路的內部部署資源所發出的要求屬於「內部」要求。
設定 Ingress
您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 設定 Ingress。
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
如要設定新服務,請從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「網路」分頁標籤。
選取要允許的輸入流量:
按一下「建立」或「儲存」。
gcloud
如要部署新服務,請使用
--ingress
旗標部署服務:gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
取代
INGRESS
,並使用可用的 Ingress 設定:all
internal
internal-and-cloud-load-balancing
SERVICE
改為您的服務名稱- IMAGE_URL,並參照容器映像檔,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
如果要變更現有服務的 Ingress:
gcloud run services update SERVICE --ingress INGRESS
取代
INGRESS
,並使用可用的 Ingress 設定:all
internal
internal-and-cloud-load-balancing
SERVICE
改為您的服務名稱
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/ingress:
註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/ingress: INGRESS name: SERVICE spec: template: metadata: name: REVISION
取代
- SERVICE 改為您的 Cloud Run 服務名稱。
- INGRESS,並使用可用的 Ingress 設定:
all
internal
internal-and-cloud-load-balancing
- REVISION,並提供新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
- 開頭為「
SERVICE-
」 - 只能包含小寫字母、數字和
-
- 結尾不是
-
- 不超過 63 個半形字元
- 開頭為「
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源:停用預設網址
停用 Cloud Run 服務的預設 run.app
網址,只允許來自服務其他輸入路徑的流量:Cloud Load Balancing 和任何已設定的網域對應。
如要停用預設網址,請使用 Google Cloud CLI、YAML 或 Terraform 執行下列步驟。
指令列
如要停用服務的
run.app
網址,請執行gcloud beta run services update
指令並加上--no-default-url
旗標,或將--no-default-url
旗標傳遞至gcloud run deploy
指令:gcloud beta run services update SERVICE_NAME --no-default-url
其中 SERVICE_NAME 是 Cloud Run 服務的名稱。
輸出內容會顯示網址,如 None
。
如要還原預設網址,請使用 --default-url
旗標。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
如要停用
run.app
網址,請使用run.googleapis.com/default-url-disabled
註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/default-url-disabled: true run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: name: REVISION
取代
- SERVICE 改為您的 Cloud Run 服務名稱。
- REVISION,並提供新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
- 開頭為「
SERVICE-
」 - 只能包含小寫字母、數字和
-
- 結尾不是
-
- 不超過 63 個半形字元
- 開頭為「
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
如要還原預設網址,請移除 run.googleapis.com/default-url-disabled
註解。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源: resource "google_cloud_run_v2_service" "disable_default_url_service" {
name = "cloudrun-service"
location = "europe-west1"
launch_stage = "BETA"
default_uri_disabled = true
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/hello"
}
annotations = {
"run.googleapis.com/ingress" = "all" # "all" or "internal-only"
}
}
}
確認 launch_stage
和 default_uri_disabled
行位於 main.tf
檔案中。上述 google_cloud_run_v2_service
資源會指定 Cloud Run 服務,並在預覽版中停用預設網址。
如要還原預設網址,請移除 default_uri_disabled
和 launch_stage
引數。
下列 Google Cloud 服務使用預設 run.app
URL 叫用 Cloud Run。停用預設 run.app
網址會導致下列服務無法正常運作:
- 以 Cloud Run 服務為基礎的 Cloud Functions v2 API
cloudfunctions.net
URL。 - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Dialogflow CX
- Eventarc
- Firebase App Hosting
- Firebase 託管
- Pub/Sub
- 綜合監控和運作時間檢查
- Workflows
後續步驟
- 瞭解輸出設定。
- 為 Cloud Run 設定內部應用程式負載平衡器。
- 使用 Cloud Run 設定外部應用程式負載平衡器。
- 設定用來存取服務的 IAM 驗證方法。