如要充分瞭解本內容,您應熟悉下列概念:
- 基本網路
- Google Cloud 虛擬私有雲 (VPC) 網路
為了確保服務和應用程式的網路流量安全,許多機構會使用私人網路,並透過周邊控制項防止資料外洩。 Google Cloud 私人網路可能具有下列屬性:
- 您可能擁有多個資源,例如虛擬機,這些資源位於一個或多個 VPC 網路中。
- 這些 VM 可能屬於許多不同專案,且可能透過共用 VPC 相互連線。
- 您可能擁有地端部署工作負載或透過 Cloud VPN 或 Cloud Interconnect 連接到此環境的其他雲端上的工作負載。
- 您可能已啟用 VPC Service Controls perimeter,以降低資料竊取風險。
- 您可能有多個私人網路,每個網路對應不同的環境,例如一個用於實際工作環境、一個用於測試環境,以及一個用於開發環境。
與 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 的流量會透過虛擬私有雲網路轉送:
- 配置來源資源所有交通路線透過 VPC 網路並啟用私人 Google 存取權限在與直接 VPC 出口或連接器關聯的子網路上。
- 設定 Private Service Connect 或內部應用程式負載平衡器,以面對您的目標 Cloud Run 資源。完成這項設定後,您就能使用內部 IP 位址存取 Cloud Run,因此要求會透過 VPC 網路傳送。
- 在與 source 資源關聯的子網路上啟用 Private Google Access,並將 配置 DNS 將
run.appURL 解析到private.googleapis.com(199.36.153.8/30) 或restricted.googleapis.com(199.36.153.4/30) 範圍。對這些範圍的要求會透過虛擬私有雲網路轉送。
接收來自虛擬私有雲網路的要求
根據預設,只有具備外部 IP 位址或使用 Cloud NAT 的資源,才能直接存取網際網路和 Pub/Sub、Cloud Run 等Google Cloud 服務。如要為其他資源啟用通往 Cloud Run 的流量路徑,有幾種做法:
- 最直接的方法是在代管資源的子網路上啟用Private Google Access。啟用 Private Google Access 後,子網路上的資源就能透過預設
run.app網址存取 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.app網址存取 Cloud Run 資源。 - 如需負載平衡功能和控制項,請考慮使用內部應用程式負載平衡器。 採用這種做法時,虛擬私有雲網路中的資源會使用與內部應用程式負載平衡器相關聯的網址,存取 Cloud Run 資源。
- 如果您希望將您的服務作為代管服務向內部用戶端開放,並能夠控制哪些專案可以存取它,則可以將其託管在內部應用程式負載平衡器上。使用 Private Service Connect 發布服務。需要使用服務的專案可以透過 Private Service Connect 端點或 Private Service Connect 後端存取服務。
系統會沿著要求傳送的路徑傳回回應。
Shared VPC 的特別注意事項
使用 Cloud Run Ingress 控制項的 internal 設定,強制所有流量都必須來自私人網路時,只有在下列情況下,系統才會將 Shared VPC 流量視為「內部」流量:
Cloud Run 資源是在 Shared VPC 主專案中執行。
共用 VPC 網路連入:Cloud Run 資源會附加至共用 VPC 網路。在這個情境中,請注意下列事項:
只有設定直接虛擬私有雲輸出的服務修訂版本或 Cloud Run 執行個體,或是設定無伺服器虛擬私有雲存取連接器將流量傳送至共用虛擬私有雲網路的服務修訂版本或 Cloud Run 執行個體,才會接受來自該共用虛擬私有雲網路的流量。
要求會根據流量方向使用不同路徑。從 Cloud Run 發送到共用 VPC 網路的請求透過直接 VPC 出口或連接器進行路由。不過,從共用 VPC 網路傳送至 Cloud Run 的要求會使用標準的連入路徑。
如要將 Cloud Run 資源從 Shared VPC 網路中分離,請重新部署資源,但不要啟用 VPC 網路存取權,或將資源設定為將流量傳送至其他 VPC 網路。
您使用內部應用程式負載平衡器來 Proxy 流量。
您已將 Shared VPC 主機和所有服務專案放在相同的 VPC Service Controls 範圍內。如要設定 VPC Service Controls,請參閱「使用 VPC Service Controls (VPC SC)」一文。
專案以外其他虛擬私有雲網路的特別注意事項
當使用 Cloud Run ingress controls 並啟用 internal 設定以強制所有流量必須來自您的私人網路時,來自專案外部其他 VPC 網路的流量將不會被識別為「內部」流量,但以下情況除外:
- 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 範圍內,系統會視為「內部」要求。
- 從相同專案或 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 服務,系統不會將其視為內部要求,因此 Cloud Run 資源無法接收這類要求 (如果已將 Ingress 設為
internal或internal-and-cloud-load-balancing)。
接收來自地端部署資源或其他雲端的請求
您可以透過多種方式,私下接收來自地端部署資源和其他雲端的要求。
- 基本設定:如要讓來自內部部署資源和其他雲端的請求通過私人網路,請設定內部部署主機的私人 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。如果將輸入設定為 internal,服務只會允許來自專案、專案連結的 Shared VPC 網路,以及 VPC Service Controls 範圍的要求。視要求來源而定,這項設定會有一些限制。如要瞭解這些限制以及如何因應,請參閱「接收來自私人網路的要求」一節。
您可以為每個 Cloud Run 資源指定輸入設定,也可以強制機構中的所有 Cloud Run 資源使用偏好的輸入設定。
- 為每個 Cloud Run 資源指定入口設置: 看設定入口。
- 如要為專案、資料夾或機構中的所有 Cloud Run 資源強制執行特定連入設定:請設定
run.allowedIngress機構政策限制。如要瞭解如何自訂,請參閱「自訂清單限制條件政策」。
將要求傳送至私人網路
如果 Cloud Run 資源需要存取私人網路上的資源,請為網路的私人要求設定路徑。設定方式取決於要求的最終目的地。
向虛擬私有雲網路傳送要求
如要向虛擬私有雲網路傳送要求,您必須設定直連虛擬私有雲輸出或無伺服器 VPC 存取連接器。比較直連虛擬私有雲輸出和 VPC 連接器。如要瞭解相關費用,請參閱定價。
設定直連虛擬私有雲輸出或連接器時,預設會套用下列考量事項:
所有 DNS 查詢都會傳送至與虛擬私有雲網路輸出設定相關聯的虛擬私有雲網路所設定的 DNS 伺服器。
系統會使用直連虛擬私有雲輸出或連接器,將對內部 IP 位址的要求轉送至虛擬私有雲網路。除非您的 egress 設定 另有配置,否則對公共目標的請求將繼續直接路由到網路。
如果要求是透過直連虛擬私有雲輸出或連接器轉送,回應會沿著要求傳送的路徑返回。從虛擬私有雲網路傳送至 Cloud Run 的要求會透過其他技術啟用,不會透過直連虛擬私有雲輸出或連接器轉送,而這些要求的回應會透過相同路徑傳回。如要進一步瞭解如何從虛擬私有雲網路傳送要求至 Cloud Run,請參閱「接收來自虛擬私有雲網路的要求」。
將要求傳送至專案外部的虛擬私有雲網路
若要傳送請求至專案外部的虛擬私有雲網路:
- 如果您使用 Shared VPC,請參閱「連線至 Shared VPC 網路」。
- 如要連線至專案中的虛擬私有雲,請為其他虛擬私有雲網路設定直連虛擬私有雲輸出或連接器。
- 對等互連的虛擬私有雲網路:如要傳送至與使用虛擬私有雲網路輸出功能的虛擬私有雲對等互連的虛擬私有雲,則不需要額外設定。不過,託管虛擬私有雲網路輸出流量的子網路中的 VM,必須能夠連線至目標虛擬私有雲網路。
- 其他虛擬私有雲網路: 對於專案以外的虛擬私有雲網路,如果它們不屬於同一個 Shared VPC 環境或與您的專案虛擬私有雲網路對等連接,請在設定虛擬私有雲網路輸出後配置 Private Service Connect。
向其他 Cloud Run 資源發送請求 Google Cloud 服務
從一個 Cloud Run 資源到另一個 Cloud Run 資源或對其他Google Cloud 服務的請求都保留在 Google 的內部網路中,並受 VPC Service Controls 的約束。
如要對設有嚴格 Ingress 設定的 Cloud Run 資源提出要求,必須進行額外設定。請參閱「接收來自其他 Cloud Run 資源或 App Engine 的要求」。
將要求傳送至地端部署資源和其他雲端
若要透過私有網路向地端部署資源和其他雲端平台發送請求,您必須執行以下操作:
- 請確認虛擬私有雲網路已設定為將流量私下轉送至目的地,例如透過 VPN 通道。
- 設定服務,向虛擬私有雲網路傳送要求。
- 要求所有要求都傳送至虛擬私有雲網路。
要求所有要求都傳送至虛擬私有雲網路
如要規定 Cloud Run 資源的所有要求都必須傳送至虛擬私有雲網路,請指定 all-traffic 虛擬私有雲網路輸出設定。您可以為每個使用虛擬私有雲網路輸出的 Cloud Run 資源指定輸出設定,也可以為專案、資料夾或機構中的所有 Cloud Run 資源強制使用偏好的輸出設定。
這項功能在下列情況下非常實用:
- 您想要為 Cloud Run 資源設定 靜態出站 IP 位址。
- 您想為 Cloud Run 資源的所有輸出流量套用防火牆規則。
- 您希望透過私有網路向地端部署資源和其他雲端發送請求。
如果 Cloud Run 資源向虛擬私有雲網路以外的最終目的地提出要求,則要求一律會傳送至虛擬私有雲網路,這會增加已設定的無伺服器 VPC 存取連接器頻寬用量,因此可能會提高費用。流量增加時,連接器會自動向外擴充,但流量減少時不會水平縮減。如要瞭解相關費用,請參閱定價。
- 如要為個別 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 虛擬機器,請使用服務帳戶控管權限和驗證。
後續步驟
如要進一步瞭解如何使用直接網路路徑提供低延遲和高處理量,請參閱「直連虛擬私有雲搭配虛擬私有雲網路輸出」。