如要充分瞭解本內容,您應熟悉下列概念:
- 基本網路
- Google Cloud 虛擬私有雲 (VPC) 網路
為確保服務和應用程式的網路流量安全,許多機構會使用 Google Cloud 私人網路,並透過周邊控制措施防止資料外洩。私人網路可能具有下列屬性:
- 您可能有多個資源 (例如 VM) 位於一或多個虛擬私有雲網路中。
- 這些 VM 可能屬於許多不同專案,且可能透過共用 VPC 相互連線。
- 您可能已使用 Cloud VPN 或 Cloud Interconnect,將內部部署工作負載或其他雲端的工作負載連線至這個環境。
- 您可能已啟用 VPC Service Controls 範圍,以降低資料竊取風險。
- 您可能有多個私人網路,分別對應不同的環境,例如一個用於實際工作環境、一個用於測試環境,以及一個用於開發環境。
與 VM 不同,Cloud Run 資源預設不會與任何特定 VPC 網路建立關聯。本頁說明如何將 Cloud Run 資源納入私人網路。
無伺服器網路敘事
如要瞭解公有和私有網路的各種常見企業設定,請參閱無伺服器網路敘述。
這個起點會介紹下列基本到進階的 Cloud Run 情境:
- 安全地部署使用自訂網域的「Hello, World!」應用程式
- 開發企業應用程式和微服務
- 公開或私下存取資料庫和檔案系統
- 與 SaaS 供應商聯絡
- 套用安全防護控制項
請參閱對應的 Terraform 模組清單。
接收來自私人網路的要求
如要接收來自私人網路的要求,請根據下列條件進行設定:
- 要求來源。
- Cloud Run 資源是否只允許來自私人網路的要求。
舉例來說,接收來自虛擬私有雲網路的要求,可能需要與接收來自地端資源和其他雲端的要求不同的設定。
接收來自其他 Cloud Run 資源或 App Engine 的要求
如果目的地 Cloud Run 資源收到來自其他 Cloud Run 資源或 App Engine 的流量,且使用「內部」或「內部和負載平衡」的連入設定,則流量必須使用虛擬私有雲網路,才會視為內部流量。
如要接收來自其他 Cloud Run 資源或 App Engine 的要求,請執行下列步驟:
設定來源資源,使用直接虛擬私有雲輸出或連接器。
請使用下列其中一個選項,確保傳送至 Cloud Run 的流量會透過虛擬私有雲網路轉送:
- 設定來源資源,透過虛擬私有雲網路傳送所有流量,並在與 Direct VPC 輸出或連接器相關聯的子網路上啟用私人 Google 存取權。
- 設定 Private Service Connect 或內部應用程式負載平衡器,做為目的地 Cloud Run 資源的前端。完成這項設定後,您就能使用內部 IP 位址存取 Cloud Run,因此要求會透過虛擬私有雲網路轉送。
- 在與來源資源相關聯的子網路上啟用私人 Google 存取權,並設定 DNS,將
run.app網址解析為private.googleapis.com(199.36.153.8/30) 或restricted.googleapis.com(199.36.153.4/30) 範圍。系統會透過 VPC 網路轉送對這些範圍的要求。
接收來自虛擬私有雲網路的要求
根據預設,只有具備外部 IP 位址或使用 Cloud NAT 的資源,才能直接存取網際網路和Google Cloud Pub/Sub 和 Cloud Run 等服務。如要為其他資源啟用通往 Cloud Run 的流量路徑,有幾種做法:
- 最直接的方法是在代管資源的子網路上啟用私人 Google 存取權。啟用 Private Google Access 後,子網路上的資源就能透過預設
run.appURL 存取 Cloud Run 資源。從虛擬私有雲網路到 Cloud Run 的流量會留在 Google 網路中。在這種情況下,傳送至 Cloud Run 資源的要求 IP 範圍為0.0.0.0/32。也就是說,在要求記錄項目中,HttpRequest 的remoteIp屬性會是0.0.0.0。 - 如要透過虛擬私有雲網路中的內部 IP 位址存取 Cloud Run 資源 (以及其他 Google API),請考慮建立 Private Service Connect 端點,並為
run.app設定私人 DNS 區域。完成這項設定後,虛擬私有雲網路中的資源就能透過 Private Service Connect 端點 IP 位址,存取預設run.appURL 的 Cloud Run 資源。 - 如需負載平衡功能和控制項,請考慮使用內部應用程式負載平衡器。 採用這種做法時,虛擬私有雲網路中的資源會使用與內部應用程式負載平衡器相關聯的網址,存取 Cloud Run 資源。
- 如要將服務以代管服務的形式提供給內部用戶端,並控管可存取服務的專案,您可以透過內部應用程式負載平衡器代管服務,並使用 Private Service Connect 發布服務。需要使用服務的專案可以透過 Private Service Connect 端點或 Private Service Connect 後端存取服務。
系統會使用要求傳送時的路徑傳回回應。
共用虛擬私有雲的特別注意事項
使用 internal 設定搭配 Cloud Run Ingress 控制項,強制所有流量都必須來自私人網路時,只有在下列情況下,系統才會將共用 VPC 流量視為「內部」流量:
Cloud Run 資源在共用虛擬私有雲主專案中執行。
共用虛擬私有雲端連入:Cloud Run 資源會附加至共用虛擬私有雲端網路。在這個情境中,請注意下列事項:
只有設定直接虛擬私有雲輸出,或設定無伺服器虛擬私有雲存取連接器,將流量傳送至共用虛擬私有雲網路的服務修訂版本,才會接受來自該共用虛擬私有雲網路的流量。
要求會根據流量方向使用不同的路徑。從 Cloud Run 傳送至共用虛擬私有雲網路的要求,會透過直接虛擬私有雲輸出或連接器進行路由。不過,從共用虛擬私有雲網路傳送至 Cloud Run 的要求會使用標準的連入路徑。
如要將 Cloud Run 資源從 Shared VPC 網路中分離,請重新部署資源,但不要啟用虛擬私有雲網路存取權,或是將資源設定為將流量傳送至其他虛擬私有雲網路。
您使用內部應用程式負載平衡器來代理流量。
您已將 Shared VPC 主機和所有服務專案放在同一個 VPC Service Controls 範圍內。如要設定 VPC Service Controls,請參閱「使用 VPC Service Controls (VPC SC)」。
專案以外其他虛擬私有雲網路的特別注意事項
使用 internal 設定和 Cloud Run Ingress 控制項,強制規定所有流量都必須來自私人網路時,系統不會將專案外部其他虛擬私有雲網路的流量視為「內部」流量,但下列情況除外:
- VPC Service Controls 已設定為允許流量通過,且
run.googleapis.com為受限制的服務,來源子網路也已啟用 Private Google Access。 - 您的 Cloud Run 資源會使用 Private Service Connect (需要內部應用程式負載平衡器)發布為受管理服務,並從其他虛擬私有雲網路存取。
與專案外部的虛擬私有雲網路建立對等互連時,系統不會將流量視為「內部」流量。
接收來自其他 Google Cloud 服務的要求
從 Pub/Sub 等服務發出的 Cloud Run 要求會留在 Google 網路內。 Google Cloud
如果您已將 Cloud Run 輸入控制項設為僅允許「內部」流量,請注意以下幾點:
- 來自相同專案或虛擬私有雲端服務控制範圍的 BigQuery、Cloud Scheduler、Cloud Tasks、Dialogflow CX、Eventarc、Pub/Sub、合成監控 (包括正常運作時間檢查) 和 Workflows 要求,都會視為「內部」要求。
- 從相同專案或 VPC Service Controls 範圍內傳送的 Cloud Run 或 App Engine 要求,都必須經過額外設定,才能視為「內部」要求。詳情請參閱「接收來自其他 Cloud Run 服務或 App Engine 的要求」一節。
- 如果所選 Google Cloud 服務無法存取將輸入設定為
internal的 Cloud Run 資源,請注意,許多服務都支援向 Cloud Run 進行驗證,例如 Pub/Sub (支援internal和驗證)、API Gateway 和 Dialogflow CX (支援internal和驗證)。視安全性需求而定,目的地 Cloud Run 資源可能只需要驗證,而不需要「內部」連入。 - 如果要求來自先前未提及的 Google Cloud 服務,系統不會將其視為內部要求,因此將無法傳送至已將 Ingress 設為
internal或internal-and-cloud-load-balancing的 Cloud Run 資源。
接收來自地端部署資源或其他雲端的請求
您可以透過多種方式,私下接收來自地端資源和其他雲端的要求。
- 基本設定:如要讓內部部署資源和其他雲端的請求通過您的私有網路,請設定內部部署主機的私人 Google 存取權。
- 透過內部 IP 位址存取 Cloud Run 資源:如要使用內部 IP 位址呼叫 Cloud Run 資源,請建立 Private Service Connect 端點來存取 Google API、為
run.app設定私人 DNS 區域,並設定內部部署網路來存取端點。完成這項設定後,地端部署主機就能透過 Private Service Connect 端點 IP 位址,在預設run.app網址存取 Cloud Run 資源。 - 具備負載平衡功能:如需負載平衡功能和控制項,請使用內部應用程式負載平衡器。如要瞭解如何從內部部署網路存取內部應用程式負載平衡器,請參閱「使用 Cloud VPN 和 Cloud Interconnect」。
- 跨管理邊界:如要將服務以代管服務的形式提供給內部用戶端,並控管可存取服務的專案,可以使用 Private Service Connect 發布服務 (需要內部應用程式負載平衡器)。如要從內部部署主機存取服務,請建立 Private Service Connect 端點,並設定內部部署網路來存取該端點。詳情請參閱「透過混合式網路存取端點」。或者,您也可以搭配負載平衡器使用 Private Service Connect 後端。如要瞭解如何從地端網路存取負載平衡器,請參閱您使用的負載平衡器說明文件。舉例來說,如要瞭解如何存取內部應用程式負載平衡器,請參閱「使用 Cloud VPN 和 Cloud Interconnect」。
要求必須來自私人網路
如要禁止外部來源的連入流量 (輸入),請指定限制性輸入設定。最嚴格的 Ingress 設定為 internal。如果將 Ingress 設為 internal,服務只會允許來自專案、專案連結的共用虛擬私有雲網路,以及 VPC Service Controls 範圍的要求。視要求來源而定,這項設定會有一些限制。如要瞭解這些限制以及如何因應,請參閱「接收來自私有網路的要求」一節。
您可以為每個 Cloud Run 資源指定輸入設定,也可以為機構中的所有 Cloud Run 資源強制使用偏好的輸入設定。
- 為每個 Cloud Run 資源指定輸入設定:請參閱「設定輸入」。
- 如要為專案、資料夾或機構中的所有 Cloud Run 資源強制執行特定連入設定:請設定
run.allowedIngress機構政策限制。如要瞭解如何自訂清單限制條件政策,請參閱這篇文章。
將要求傳送至私人網路
如果 Cloud Run 資源需要存取私人網路上的資源,請為網路的私人要求設定路徑。設定方式取決於要求的最終目的地。
向虛擬私有雲網路傳送要求
如要向虛擬私有雲網路傳送要求,您必須設定直接虛擬私有雲輸出或無伺服器虛擬私有雲存取連接器。比較直接虛擬私有雲輸出和虛擬私有雲連接器。 如要瞭解費用,請參閱定價。
設定直接虛擬私有雲輸出或連接器時,預設會套用下列考量事項:
所有 DNS 查詢都會傳送至為與虛擬私有雲網路輸出設定相關聯的虛擬私有雲網路設定的 DNS 伺服器。
系統會使用直接虛擬私有雲輸出或連接器,將對內部 IP 位址的要求路由至虛擬私有雲網路。除非您已設定輸出設定,否則傳送至公開目的地的要求仍會直接轉送至網際網路。
如果要求是透過直接虛擬私有雲輸出或連接器轉送,回應會沿著要求傳送的路徑返回。從虛擬私有雲網路傳送至 Cloud Run 的要求會透過其他技術啟用,不會透過直接虛擬私有雲輸出或連接器轉送,而這些要求的回應會透過相同路徑傳回。如要進一步瞭解如何從虛擬私有雲網路傳送要求至 Cloud Run,請參閱「接收來自虛擬私有雲網路的要求」。
將要求傳送至專案外部的虛擬私有雲網路
如要向專案外部的虛擬私有雲網路傳送要求,請按照下列步驟操作:
- 共用虛擬私有雲使用者請參閱「連線至共用虛擬私有雲網路」。
- 如要連線至專案中的虛擬私有雲,請為其他虛擬私有雲網路設定直接虛擬私有雲輸出或連接器。
將要求傳送至其他 Cloud Run 資源和 Google Cloud 服務
從一個 Cloud Run 資源傳送至另一個資源或其他Google Cloud 服務的要求,會留在 Google 內部網路中,並受虛擬私有雲服務控管。
如要對設有嚴格 Ingress 設定的 Cloud Run 資源提出要求,必須進行額外設定。請參閱「接收來自其他 Cloud Run 資源或 App Engine 的要求」。
將要求傳送至內部部署資源和其他雲端
如要透過私有網路將要求傳送至地端部署資源和其他雲端,請完成下列步驟:
- 請確認虛擬私有雲網路已設定為將流量私下轉送至目的地,例如透過 VPN 通道。
- 設定服務,將要求傳送至虛擬私有雲網路。
- 要求所有要求都傳送至虛擬私有雲網路。
要求所有要求都傳送至虛擬私有雲網路
如要規定 Cloud Run 資源的所有要求都必須傳送至虛擬私有雲網路,請指定 all-traffic 虛擬私有雲網路輸出設定。您可以為每個使用虛擬私有雲網路輸出的 Cloud Run 資源指定輸出設定,也可以為專案、資料夾或機構中的所有 Cloud Run 資源強制使用偏好的輸出設定。
這在下列情況下非常實用:
- 您想為 Cloud Run 資源設定靜態輸出 IP 位址。
- 您想為 Cloud Run 資源的所有輸出流量套用防火牆規則。
- 您想透過私人網路,將要求傳送至地端資源和其他雲端。
如果 Cloud Run 資源向虛擬私有雲網路外部的最終目的地發出要求,則要求一律會傳送至虛擬私有雲網路,這會增加已設定的無伺服器虛擬私有雲存取連接器頻寬用量,並可能導致費用增加。流量增加時,連接器會自動向外擴充,但流量減少時不會縮減資源。如要瞭解費用,請參閱定價。
- 如要為個別 Cloud Run 資源指定輸出設定:請參閱「控管輸出服務流量」。
- 如要為專案、資料夾或機構中的所有 Cloud Run 資源強制執行特定輸出設定,請設定
run.allowedVPCEgress機構政策限制。如要瞭解如何自訂清單限制條件政策,請參閱這篇文章。
其他控制項
- 範圍控制項:如要降低一組資源的資料竊取風險,請使用 VPC Service Controls,將這些資源放在具備情境感知功能的範圍內。
- 如要瞭解 VPC Service Controls,請參閱「VPC Service Controls 總覽」。
- 如要開始使用,請參閱 Cloud Run 指南「使用 VPC Service Controls (VPC SC)」。
- 如要瞭解費用,請參閱定價。
- 精細控管:如要控管來自私有網路中特定資源的流量存取權,例如特定 Cloud Run 資源或 Compute Engine 虛擬機器,請使用服務帳戶控管權限和驗證。
後續步驟
如要進一步瞭解如何使用直接網路路徑提供低延遲和高處理量,請參閱「透過虛擬私有雲網路直接輸出至虛擬私有雲」。