本文說明私人服務連線如何為 Cloud SQL 提供私人 IP 連線,並涵蓋 IP 位址分配、網路和安全性考量,以及多個虛擬私有雲連線能力。
私人服務連線會以虛擬私有雲網路對接連線的形式實作,連結虛擬私有雲網路與 Cloud SQL 執行個體所在的服務供應商虛擬私有雲網路。這項私人網路連線可讓虛擬私有雲網路中的 VM 執行個體和您存取的 Google Cloud服務,僅使用私人 IP 位址與 Cloud SQL 執行個體通訊。VM 執行個體不需要網際網路存取權或外部 IP 位址,即可連線至可透過私人服務存取權存取的服務。
IP 位址
如要在虛擬私有雲網路中使用私人服務存取權,虛擬私有雲必須有一或多個可用的 IP 位址範圍 (如要進一步瞭解 IP 位址,請參閱「IP 位址」)。這些範圍必須夠大,才能容納 Cloud SQL 和您打算使用的任何其他 Google Cloud代管服務。Cloud 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 執行個體。
- 強制區隔網路架構:使用
--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 子網路。舉例來說,如要將 MySQL 執行個體放在兩個區域,分配的 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 VPC) 中建立執行個體。如要啟用私人 IP,請設定 Cloud SQL 虛擬私有雲與虛擬私有雲網路之間的對等互連連線。這樣一來,虛擬私有雲網路中的資源就能存取 Cloud SQL 虛擬私有雲網路中 Cloud SQL 資源的內部 IP 位址。
Cloud SQL 使用虛擬私有雲網路對接,在內部實作私人服務連線,允許內部 IP 位址在兩個虛擬私有雲網路之間連線,無論這些網路是否屬於相同專案或組織。不過,由於虛擬私有雲網路對接不具傳遞性,因此只會在直接對接的兩個虛擬私有雲之間廣播路由。如果您有其他虛擬私有雲,就無法透過原始虛擬私有雲設定的連線存取 Cloud SQL 資源。
如要解決這項限制,並使用私人 IP 位址將 Cloud SQL 執行個體連線至多個 VPC,可以使用下列連線選項:
- 使用自訂 advertise 路由連線
- 使用中介 Proxy (SOCKS5) 連線
- 使用 Cloud SQL Auth Proxy 做為服務連線
如要進一步瞭解如何連線至多個虛擬私有雲,請參閱「將執行個體連線至多個虛擬私有雲網路」。
後續步驟
- 進一步瞭解 IP 位址。
- 進一步瞭解 Cloud VPN。
- 進一步瞭解虛擬私有雲網路。
- 進一步瞭解虛擬私有雲網路對接。
- 進一步瞭解Shared VPC。