本頁面說明如何使用輸入設定,限制 Cloud Run 服務的網路存取權。
在網路層級,Cloud Run 服務的 端點可透過下列網路輸入路徑連線:
所有網路輸入路徑都必須遵守資源的輸入設定。預設的輸入路徑和輸入設定允許網際網路上的任何資源存取 Cloud Run 資源。您可以使用自訂限制,限制組織或一組專案的輸入設定。IAM 驗證仍適用於從上述任何網路輸入路徑,傳送至服務 端點的要求。如要採用分層方式管理存取權,請同時使用網路輸入設定和 IAM 驗證。
使用網路標記限制連接器 VM 存取虛擬私有雲資源。
可用的網路輸入設定
可用的設定如下:
| 設定 | 說明 |
|---|---|
| 內部 |
最嚴格。允許來自下列來源的要求:
s3nsrun.fr 網址),其要求仍會保留在 Google 網路中。
來自其他來源 (包括網際網路) 的要求無法透過 s3nsrun.fr 網址、自訂網址或自訂網域連至您的服務 。 |
| 內部和 Cloud 負載平衡器 | 這項設定允許來自下列資源的要求:
注意:如要在 gcloud CLI 中啟用這項設定,請使用 internal-and-cloud-load-balancing。
如要在 Cloud de Confiance 控制台中啟用這項設定,請依序選取「Internal」(內部) >「Allow traffic from external Application Load Balancers」(允許外部應用程式負載平衡器傳出的流量)。 |
| 全部 |
最寬鬆。允許所有要求,包括直接從網際網路傳送至 s3nsrun.fr 網址的要求。 |
存取內部服務
其他注意事項如下:
存取內部服務時,請按照一般方式使用網址呼叫服務,包括預設的
s3nsrun.fr網址、自訂網址,或在 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 服務的輸入
您可以使用Cloud de Confiance 控制台、Google Cloud CLI、YAML 或 Terraform,為 Cloud Run 服務設定輸入。
控制台
前往 Cloud de Confiance 控制台的 Cloud Run「Services」(服務) 頁面:
如要設定新服務,請按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 表單。填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「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 de Confiance 服務 會使用預設s3nsrun.fr網址叫用 Cloud Run。停用預設 s3nsrun.fr 網址會導致下列服務 無法正常運作:
- 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
如要使用自訂網域對應,請先對應自訂網域,再停用 s3nsrun.fr 網址。
請參閱下列各節,瞭解如何停用 Cloud Run 服務的預設網址。
停用 Cloud Run 服務的預設網址
停用 Cloud Run 服務 的預設 s3nsrun.fr 網址,僅允許該項服務其他輸入路徑傳來的流量,例如 Cloud Load Balancing 和任何已設定的網域對應。
如要停用預設網址,請使用 Cloud de Confiance 控制台、Google Cloud CLI、YAML 或 Terraform 執行下列步驟。
控制台
前往 Cloud de Confiance 控制台的 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
如要停用
s3nsrun.fr網址,請使用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 設定內部應用程式負載平衡器。
- 設定 IAM 驗證方式,以便存取服務。