本文說明私人服務連線如何為 Cloud SQL 提供私人 IP 連線,並涵蓋 IP 位址分配、網路和安全性考量,以及多虛擬私有雲連線。
私人服務連線是以虛擬私有雲網路對接連線的形式運作,可連結虛擬私有雲網路與 Cloud SQL 執行個體所在的服務供應商虛擬私有雲網路。這個私有網路連線可讓虛擬私有雲網路中的 VM 執行個體和您存取的服務,透過私有 IP 位址與 Cloud SQL 執行個體進行專屬通訊。 Google CloudVM 執行個體不需要網際網路存取權或外部 IP 位址,即可連線至可透過私人服務存取權存取的服務。
IP 位址
如要在虛擬私有雲網路中使用私人服務存取權,虛擬私有雲必須有一或多個可用的 IP 位址範圍 (如要進一步瞭解 IP 位址,請參閱「IP 位址」)。這些範圍必須夠大,才能容納 Cloud SQL 和您打算使用的任何其他代管服務。 Google CloudCloud SQL 和其他 Google Cloud服務都需要從分配的範圍中,取得專屬 IP 區塊。這類區塊的最小大小為 256 個位址 (前置碼長度 /24),建議大小為 65,536 個位址 (前置碼長度 /16)。
如要在多個區域或為不同資料庫類型建立執行個體,每個區域或資料庫類型至少須有 /24 範圍的可用 IP 位址。包括 Filestore 或 Memorystore 等其他應用程式。
設定私人服務存取權時,您可以選取現有範圍或分配新範圍。如要讓 Google Cloud 為您分配範圍,請按照下一節的說明操作,然後 Google Cloud 會在名稱 default-ip-range 下分配前置字串長度 /24 的範圍。
使用獨立 CIDR 範圍的時機
Cloud SQL 使用 /24 CIDR 範圍做為 IP 範圍單位,因此在某些情況下,必須使用不同的 /24 範圍。
- 區域分隔:如果您在兩個不同區域中建立兩個 Cloud SQL 執行個體,則必須分配至少兩個不同的 /24 CIDR 範圍。每個 IP 範圍單位只能用於單一區域內的 Cloud SQL 執行個體。
- 舊版 PostgreSQL 分隔:在採用舊網路架構的網路專案中,PostgreSQL 執行個體無法與 MySQL 或 SQL Server 執行個體共用相同的 IP 範圍單位。PostgreSQL 執行個體在每個區域都需要專屬的 /24 範圍。
- 強制區隔網路架構:使用
--enforce-new-sql-network-architecture旗標 (或對等 API 欄位) 建立的執行個體,無法與同一專案中採用舊網路架構的執行個體共用相同的 IP 範圍單位。使用新網路架構建立的執行個體,在每個區域都需要專屬的 /24 範圍。
私人服務連線範例
在本例中,虛擬私有雲網路為 Google Cloud 服務分配了 10.240.0.0/16 位址範圍,並使用該範圍建立私人連線。各項 Google Cloud 服務 (例如 Cloud SQL) 會從已分配的區塊建立子網路,以便在特定區域中佈建新資源,例如 Cloud SQL 執行個體。
下圖說明私人服務連線設定的下列層面:
- 私人連線會指派到
10.240.0.0/16分配範圍。服務可使用這項分配範圍建立子網路,並在其中佈建新資源。 Google Cloud - 在私人連線的 Google Cloud 服務端 Google Cloud,為客戶建立專案。專案是獨立的,也就是說,沒有其他客戶共用專案,且客戶只須支付自己佈建的資源費用。
- 每個 Google Cloud 服務都會建立子網路,以便佈建資源。
子網路的 IP 位址範圍通常是服務選擇的
/24無類別跨網域路由 (CIDR) 區塊,且來自已分配的 IP 位址範圍。您無法修改服務生產者的子網路。 服務會在先前由該服務建立的現有區域子網路中,佈建新資源。如果子網路已滿,服務會在相同區域建立新的子網路。 - 如果服務支援,客戶網路中的 VM 執行個體可以存取任何區域的服務資源。不過有些服務可能不支援跨地區通訊。詳情請參閱相關服務的說明文件。
- 如果 VM 執行個體與不同區域的資源通訊,仍須支付跨區域流量的資料傳出費用。
- Cloud SQL 執行個體會獲派 IP 位址
10.240.0.2。在客戶虛擬私有雲網路中,目的地為10.240.0.2的要求會透過服務生產者的網路轉送至私人連線。要求到達服務網路後,服務網路會包含將要求導向正確資源的路徑。 - 虛擬私有雲網路之間的流量會在Google Cloud 網路內部傳輸,不會經過公開網際網路。
網路注意事項
Cloud SQL 會為每個區域從私人服務存取權 IP 範圍分配 /24 子網路。舉例來說,如要在兩個區域中放置 PostgreSQL 執行個體,分配的 IP 位址範圍至少須包含兩個大小為 /24 的可用子網路。
使用私人 IP 位址連至 Cloud SQL 執行個體的連線,會自動獲得 RFC 1918 位址範圍的授權。這樣一來,所有私人用戶端都能存取資料庫,不必經過 Cloud SQL Auth Proxy。
根據預設,Cloud SQL 不會從虛擬私有雲辨識非 RFC 1918 子網路路徑。您必須更新 Cloud SQL 的網路對等互連,才能匯出任何非 RFC 1918 路由。
安全性考量
透過私人服務存取權傳輸的流量會經過一定程度的加密。詳情請參閱 Google Cloud 虛擬網路加密和驗證。
您可以設定 Cloud SQL Auth Proxy,使用私人服務存取權連線,並透過 IAM 憑證進行驗證,以及使用輪替 SSL/TLS 憑證進行端對端加密。
如果安全性規定要求您自行管理 SSL/TLS 憑證,請參閱「設定 SSL/TLS」中的操作說明。
為每個具有私人 IP 位址的執行個體建立一個虛擬私有雲網路,可提供比將所有執行個體放入「預設」虛擬私有雲網路更好的網路隔離效果。
多個虛擬私有雲連線能力
Cloud SQL 透過私人服務存取權支援私人 IP 位址。建立 Cloud SQL 執行個體時,Cloud SQL 會在自己的虛擬私有雲網路 (稱為 Cloud SQL 虛擬私有雲) 中建立執行個體。如要啟用私人 IP,必須在 Cloud SQL 虛擬私有雲和您的虛擬私有雲網路之間設定對接連線。這樣一來,虛擬私有雲網路中的資源就能存取 Cloud SQL 虛擬私有雲網路中 Cloud SQL 資源的內部 IP 位址。
Cloud SQL 會在內部實作私人服務存取權,透過虛擬私有雲網路對等互連,允許兩個虛擬私有雲網路之間的內部 IP 位址連線,無論這些網路是否屬於相同專案或機構,都沒問題。不過,由於虛擬私有雲網路對接不具傳遞性,因此只會在直接對接的兩個虛擬私有雲之間廣播路由。如果您有其他虛擬私有雲,則無法使用原始虛擬私有雲設定的連線存取 Cloud SQL 資源。
如要克服這項限制,並使用私人 IP 位址將 Cloud SQL 執行個體連線至多個虛擬私有雲,可以使用下列連線選項:
- 使用自訂 advertise 路由連線
- 使用中介 Proxy (SOCKS5) 連線
- 使用 Cloud SQL Auth Proxy 做為服務連線
如要進一步瞭解如何連結多個虛擬私有雲,請參閱「將執行個體連線至多個虛擬私有雲網路」。
後續步驟
- 進一步瞭解 IP 位址。
- 進一步瞭解 Cloud VPN。
- 進一步瞭解虛擬私有雲網路。
- 進一步瞭解虛擬私有雲網路對接。
- 進一步瞭解 Shared VPC。