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