本頁說明如何搭配使用私人 IP 與 Cloud SQL。如需設定 Cloud SQL 執行個體以使用私人 IP 的逐步操作說明,請參閱「設定私人 IP」。
如需 Cloud SQL 網路的 Terraform 解決方案,請參閱簡化的雲端網路設定解決方案。
總覽
如要將 Cloud SQL 執行個體設定為使用私人 IP,必須啟用私人服務存取權。透過私人服務存取權,您可以在虛擬私有雲網路與基礎 Google Cloud 服務供應商的虛擬私有雲網路之間建立私人連線。 Google Cloud 提供服務的實體 (例如 Cloud SQL) 稱為服務供應商。每個 Google Cloud 服務都會建立子網路來佈建資源。子網路的 IP 位址範圍通常是由服務選擇的 /24 CIDR 區塊,並且來自分配的 IP 位址範圍。
透過私有連線,服務不必經過網際網路或使用外部 IP 位址,即可連上。因此,私人 IP 的網路延遲時間比公開 IP 短。
您可以使用私人服務存取權連線至 Cloud SQL 執行個體:
來自可存取虛擬私有雲網路的內部來源。
透過VPN 通道、反向 SSH 通道或 Cloud Interconnect,從外部來源連線至 VPC 網路。
您可以連線至各區域的私人 IP 位址。您也可以透過專案之間的共用 VPC 建立連線。
分配的 IP 位址範圍
如要在虛擬私有雲網路中使用具有私人 IP 的 Cloud SQL 執行個體,您需要分配 IP 位址範圍,為這個虛擬私有雲設定私人服務存取權。如要整理 Cloud SQL 執行個體,您可能需要為私人連線分配多個 IP 位址範圍。設定 Cloud SQL 執行個體的私人 IP 時,您可以同時選取虛擬私有雲網路和分配的 IP 位址範圍。
分配的範圍大小
請為 Cloud SQL 和您打算使用的其他Google Cloud 代管服務分配足夠大的 IP 範圍,這些服務都需要從分配的範圍取得專屬 IP 區塊。大小下限為單一 /24 區塊 (256 個位址),但建議大小為 /16 區塊 (65,536 個位址)。
分配 IP 位址範圍時,請考量您打算建立的執行個體數量。
子網路遮罩 | 地址 | 可用的 Cloud SQL 執行個體 |
---|---|---|
/24 | 256 | 50 |
/23 | 512 | 100 |
/22 | 1024 | 200 |
/21 | 2048 | 400 |
/20 | 4096 | 800 |
Cloud SQL 使用 /24 CIDR 範圍做為範圍單位,每個單位只能用於單一區域中的 Cloud SQL 執行個體。舉例來說,如果您建立兩個 Cloud SQL 執行個體,但位於兩個不同區域,則必須至少有兩個 /24 CIDR 範圍。
此外,如果專案在 2021 年 4 月 1 日前開始使用 Cloud SQL,Postgres 執行個體就無法與 MySQL 和 SQL Server 執行個體共用相同的範圍單元,且每個區域都需要自己的範圍單元。較新的專案不受這項限制影響。
為網路設定私人服務存取權
在特定 VPC 網路首次設定私人 IP 連線時,您需要執行一次性程序,為 Cloud SQL 設定私人服務存取權。
建立私人服務存取權後,您可以建立設定為使用私人 IP 的 Cloud SQL 執行個體,或為現有的 Cloud SQL 執行個體設定私人 IP。如需逐步操作說明,請參閱「設定私人 IP」。
每當您變更已建立的連線,也需要
更新 vpc-peerings
。
私人 IP 的相關規定
使用私人 IP 時,網路及應用程式環境必須滿足下列需求。此外,首次設定私人 IP 時,需要額外的 IAM 權限。
應用程式環境需求
- 如果您要從 GKE 建立連線,則必須在虛擬私人雲端原生叢集中執行 GKE 1.8 以上的版本。
API 和身分與存取權管理 (IAM) 需求
- 您必須為專案啟用 Service Networking API。
- 如要管理私人服務存取權連線,使用者必須具備下列 IAM 權限。如果使用者沒有必要權限,您可能會收到權限不足的錯誤訊息。
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
如果您使用共用 VPC 網路,也需要在主專案中新增相同使用者,並指派相同權限。
如果您使用共用虛擬私人雲端網路,也需要為主專案啟用 Service Networking API。
範例
在下列範例中,客戶的虛擬私有雲端網路針對服務分配了 10.240.0.0/16
位址範圍,並建立了使用該分配範圍的私人連線。 Google Cloud 每個 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 驗證 Proxy。
Cloud SQL 預設不會從虛擬私有雲得知非 RFC 1918 子網路路徑。您需要更新 Cloud SQL 的網路對等互連,才能匯出任何非 RFC 1918 路徑。
安全性
透過私人服務存取權傳輸的流量會經過一定程度的加密。詳情請參閱「Google Cloud的虛擬網路加密和驗證」。
Cloud SQL Auth Proxy 可設定為使用私人 IP 連線,並透過 IAM 憑證提供驗證,以及使用輪替的 SSL/TLS 憑證提供端對端加密。
如果您的安全規定要求您管理自行管理的 SSL/TLS 憑證,請參閱「設定 SSL/TLS」一文中的操作說明。
為每個具有私人 IP 位址的執行個體建立一個 VPC 網路,可提供比將所有執行個體放在「預設」VPC 網路中更好的網路隔離效果。
多個虛擬私有雲連線
Cloud SQL 透過私人服務存取權支援私人 IP 位址。建立 Cloud SQL 執行個體時,Cloud SQL 會在本身的虛擬私有雲端 (VPC) 內建立執行個體,這個 VPC 稱為 Cloud SQL VPC。如要啟用私人 IP,請設定 Cloud SQL 虛擬私有雲與虛擬私有雲網路之間的對等互連連線。這樣一來,虛擬私有雲網路中的資源就能存取 Cloud SQL 虛擬私有雲網路中 Cloud SQL 資源的內部 IP 位址。
Cloud SQL 會在內部實作私人服務存取權,透過 VPC 網路對等互連,允許兩個 VPC 網路間的內部 IP 位址連線,無論這些網路是否屬於同一個專案或機構都一樣。不過,由於虛擬私有雲網路對等互連不具遞移性,因此只會在直接對等互連的兩個虛擬私有雲之間廣播路徑。如果您有其他虛擬私有雲,就無法使用原始虛擬私有雲設定的連線存取 Cloud SQL 資源。
如要解決這項限制,並使用私人 IP 位址將 Cloud SQL 執行個體連線至多個虛擬私有雲,可以使用下列連線選項:
- 使用自訂通告路徑連線
- 使用中繼 Proxy (SOCKS5) 連線
- 以服務形式使用 Cloud SQL 驗證 Proxy 連線
如要進一步瞭解如何連線多個虛擬私有雲,請參閱將執行個體連線至多個虛擬私有雲。
私有 IP 主題的快速參考資料
管理使用私人 IP 的 Cloud SQL 執行個體時,您可能會對下列主題感興趣:
主題 | 討論 |
---|---|
共用虛擬私有雲網路 | 您可以在共用虛擬私人雲端網路中建立具有私人 IP 位址的 Cloud SQL 執行個體。不過,您無法將共用虛擬私人雲端網路中的私人 IP 位址指派給「現有」Cloud SQL 執行個體。 |
區域 | 您可以透過跨區域的私人 IP 連線。 |
舊版網路 | 您無法透過舊版網路連線到 Cloud SQL 執行個體的私人 IP。舊版網路不支援虛擬私有雲網路對等互連或私人服務存取權。 |
移除私人 IP | 將 Cloud SQL 執行個體設定成使用私人 IP 後,您無法從該執行個體移除私人 IP 功能。 |
公開和私人 IP | 您可以使用公開 IP 和私人 IP 連線至同一個 Cloud SQL 執行個體,這兩種連線方式不會互相干擾。 |
現有 Cloud SQL 執行個體 | 您可以在建立執行個體時,設定執行個體使用私人 IP。您也可以將現有執行個體設定為使用私人 IP。設定現有執行個體使用私人 IP 或變更執行個體連線的網路,均會造成執行個體重新啟動,進而導致幾分鐘的停機時間。 |
靜態 IP 位址 | 如果是公開和私人 IP 位址,Cloud SQL 執行個體的傳入位址是靜態位址,不會變更。除了外部伺服器副本的傳出公開 IP 位址一律為靜態外,傳出位址不一定為靜態。 |
備用資源 | 副本 會繼承主要執行個體的私人 IP 狀態。您無法直接設定副本的私人 IP。如果使用私人 IP 位址連線至副本,則不需要為副本建立額外的 VPC 私人連線,因為副本也會從主要執行個體繼承連線。 |
Cloud SQL 驗證 Proxy | 如要使用私人 IP 連線至 Cloud SQL 執行個體,Cloud SQL Auth Proxy 必須位於可存取與執行個體相同虛擬私有雲網路的資源上。如果執行個體同時啟用這兩種 IP 類型,Cloud SQL Auth Proxy 預設會使用公開 IP。如要確保使用私人 IP,您需要將 -ip_address_types=PRIVATE 旗標傳遞至 Cloud SQL Auth Proxy。瞭解詳情。 |
無伺服器虛擬私有雲存取 | 如要從無伺服器來源 (例如 App Engine 標準環境、Cloud Run 或 Cloud Run 函式) 連線,應用程式或函式會透過無伺服器虛擬私有雲存取直接連線至執行個體,不需要 Cloud SQL Auth Proxy。 |
虛擬私有雲網路對等互連 | 使用私人服務存取權的連線必須使用虛擬私有雲網路對等互連。不過,您不會明確建立虛擬私有雲網路對等互連,因為對等互連是 Google Cloud的內部機制。建立私人服務存取權連線後,您可以在Google Cloud 控制台的
虛擬私有雲網路對等互連頁面上,查看其基礎虛擬私有雲網路對等互連,但除非您想
移除私人連線,否則請勿刪除。 進一步瞭解虛擬私有雲網路對等互連。 |
VPC Service Controls | VPC Service Controls 可讓您更進一步降低他人竊取資料的風險。您可以使用 VPC Service Controls,在 Cloud SQL 執行個體周圍建立範圍。VPC Service Controls 會限制從外部存取範圍內的資源。只有範圍內的用戶端和資源可以彼此互動。詳情請參閱 VPC Service Controls 總覽。 此外,請一併查看使用 VPC Service Controls 時的 Cloud SQL 限制。如要將 VPC Service Controls 與 Cloud SQL 搭配使用,請參閱「設定 VPC Service Controls」。 |
遞移性的對等互連 | 只有直接對等網路可以進行通訊,遞移對等互連則不受支援。換句話說,如果虛擬私有雲網路 N1 與 N2 和 N3 具有對等連線,但是 N2 和 N3 未直接連線,則虛擬私有雲網路 N2 無法透過
虛擬私有雲網路對等互連與虛擬私有雲網路 N3 進行通訊。 一個專案中的用戶端可以使用 共用 VPC 網路,連線至多個專案中的 Cloud SQL 執行個體。 |
移動 Cloud SQL 執行個體 | Cloud SQL 執行個體只能在所屬專案擁有的網路之間移動。此外,Cloud SQL 執行個體無法在專案之間移動,也無法在不同專案代管的網路之間移動。 |
後續步驟
- 瞭解如何設定私人 IP。
- 進一步瞭解私人服務存取權。
- 瞭解如何為 Cloud SQL 執行個體設定私人服務存取權。
- 進一步瞭解 Cloud VPN。
- 進一步瞭解虛擬私有雲網路。
- 進一步瞭解 VPC 網路對等互連。
- 進一步瞭解共用 VPC。
- 進一步瞭解 Cloud SQL 驗證 Proxy。