瞭解如何使用私人 IP

本頁面說明如何在 Cloud SQL 中使用私人 IP。如需設定 Cloud SQL 執行個體以使用私人 IP 的逐步操作說明,請參閱「設定私人 IP」。

如需 Cloud SQL 網路的 Terraform 解決方案,請參閱「簡化的 Cloud Networking 設定解決方案」。

總覽

將 Cloud SQL 執行個體設定成使用私人 IP 時,您需要私人服務存取權。私人服務存取權可讓您在虛擬私有雲網路底層 Google Cloud 服務供應商的虛擬私有雲網路之間建立私人連線。 Google Cloud 提供服務 (例如 Cloud SQL) 的實體稱為服務供應商。每個 Google Cloud 服務都會建立子網路來佈建資源。子網路的 IP 位址範圍通常是由服務選擇的 /24 CIDR 區塊,並且來自分配的 IP 位址範圍。

私人連線可讓您存取服務,不必經過網際網路或使用外部 IP 位址。因此,私人 IP 的網路延遲時間比公開 IP 短。

您可以使用私人服務存取權連線至 Cloud SQL 執行個體:

您可以連線至不同地區的私人 IP 位址。您也可以在專案之間使用共用虛擬私有雲進行連線。

分配的 IP 位址範圍

如要在具有私人 IP 的虛擬私人雲端網路中使用 Cloud SQL 執行個體,您必須分配 IP 位址範圍,為這個虛擬私人雲端網路設定私人服務存取權。如要整理 Cloud SQL 執行個體,您可能需要為私人連線分配多個 IP 位址範圍。設定私人 IP 的 Cloud SQL 執行個體時,您可以同時選取虛擬私有雲網路和已分配的 IP 位址範圍。

分配的範圍大小

請為 Cloud SQL 和您打算使用的其他Google Cloud 受管理服務分配足夠大的 IP 範圍,因為每項服務都需要從已分配的範圍中取得專屬 IP 區塊。大小下限為單一 /24 區塊 (256 個位址),但建議大小為 /16 區塊 (65,536 個位址)。

分配 IP 位址範圍時,請考量您預計建立的執行個體數量。

子網路遮罩 地址 可用的 Cloud SQL 執行個體
/2425650
/23512100
/221024200
/212048400
/204096800

Cloud SQL 會使用 /24 CIDR 範圍做為範圍單位,每個單位只能用於單一地區的 Cloud SQL 執行個體。舉例來說,如果您建立兩個 Cloud SQL 執行個體,但位於兩個不同的區域,則至少需要兩個 /24 CIDR 範圍。

此外,如果專案是在 2021 年 4 月 1 日前開始使用 Cloud SQL,Postgres 執行個體就無法與 MySQL 和 SQL Server 執行個體共用相同的範圍單位,且需要在每個地區建立專屬範圍單位。較新的專案不受此限制。

為網路設定私人服務存取權

第一次在特定 VPC 網路上設定私人 IP 連線時,您必須執行一次性程序,設定 Cloud SQL 的私人服務存取權

建立私人服務存取權後,您可以建立 Cloud SQL 執行個體,並將其設定為使用私人 IP,或是為現有的 Cloud SQL 執行個體設定私人 IP。如需逐步操作說明,請參閱「設定私人 IP」。

每次變更已建立的連線時,都必須 更新 vpc-peerings

私人 IP 相關規定

使用私人 IP 時,網路及應用程式環境必須滿足下列需求。此外,首次設定私人 IP 時,您必須具備額外的 IAM 權限。

應用程式環境需求

API 和身分與存取權管理 (IAM) 需求

  • 您必須為專案啟用 Service Networking API
  • 如果您使用的是共用虛擬私有雲網路,也必須為主專案啟用 Service Networking API。

  • 如要管理私人服務存取權連線,使用者必須具備下列 IAM 權限。如果使用者沒有必要權限,您可能會收到權限不足的錯誤訊息。
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    如果您使用的是共用 VPC 網路,也需要在主專案中新增相同使用者,並指派相同的權限。

範例

在下列範例中,客戶的虛擬私人雲端網路針對 Google Cloud 服務分配了 10.240.0.0/16 位址範圍,並建立了使用該分配範圍的私人連線。每個 Google Cloud 服務 (例如 Cloud SQL) 都會使用分配的區塊建立子網路,以便在指定地區中佈建新資源,例如 Cloud SQL 執行個體。

私人 IP 設定圖示總覽。

  • 指派給私人連線的分配範圍為 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 子網路。舉例來說,如果要將 SQL Server 執行個體放在兩個區域中,則分配的 IP 位址範圍必須包含至少兩個可用的 /24 子網路。

使用私人 IP 位址連線至 Cloud SQL 執行個體的連線會自動授權使用 RFC 1918 位址範圍。這樣一來,所有私人用戶端都能存取資料庫,而無須透過 Cloud SQL 驗證 Proxy。

根據預設,Cloud SQL 不會從 VPC 學習非 RFC 1918 子網路路徑。您必須更新網路對等連線至 Cloud SQL,才能匯出任何非 RFC 1918 路徑。

安全性

透過私人服務存取權提供的流量,會採用特定等級的加密技術。詳情請參閱 Google Cloud的虛擬網路加密和驗證

Cloud SQL 驗證 Proxy 可設定為使用私人 IP 連線,並透過 IAM 憑證提供驗證,以及使用輪替 SSL/TLS 憑證進行端對端加密。

如果安全性規定要求您自行管理的 SSL/TLS 憑證,請參閱「設定 SSL/TLS」中的操作說明。

為每個執行個體建立一個具有私人 IP 位址的 VPC 網路,比將所有執行個體放入「預設」VPC 網路,可提供更佳的網路隔離功能。

多個虛擬私有雲連線

Cloud SQL 透過私人服務存取權支援私人 IP 位址。建立 Cloud SQL 執行個體時,Cloud SQL 會在其專屬的虛擬私有雲 (VPC) 中建立執行個體,稱為 Cloud SQL VPC。如要啟用私人 IP,您必須在 Cloud SQL 虛擬私有雲網路和虛擬私有雲網路之間設定對等互連連線。這樣一來,虛擬私人雲端網路中的資源就能存取 Cloud SQL 虛擬私有雲網路中的 Cloud SQL 資源內部 IP 位址。

使用虛擬私有雲網路對等互連功能,Cloud SQL 會在內部實作私人服務存取權,讓內部 IP 位址可跨兩個虛擬私有雲網路連線,無論這兩個網路是否屬於同一個專案或機構都沒問題。不過,由於 VPC 網路對等互連不具備遞移性,因此只會在兩個直接對等互連的 VPC 之間廣播路徑。如果您有其他虛擬私人雲端網路,則無法使用與原始虛擬私人雲端網路建立的連線存取 Cloud SQL 資源。

如要克服這項限制,並使用私人 IP 位址將 Cloud SQL 執行個體連線至多個 VPC,您可以使用下列連線選項:

  • 使用自訂的廣告路徑連線
  • 使用中介 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 驗證 Proxy 必須位於可存取與執行個體相同虛擬私人雲端網路的資源中。如果執行個體同時啟用兩種 IP 類型,Cloud SQL 驗證 Proxy 預設會使用公開 IP。為確保使用私人 IP,您必須將 -ip_address_types=PRIVATE 標記傳遞至 Cloud SQL Auth Proxy。瞭解詳情
無伺服器虛擬私有雲存取 如要從無伺服器來源 (例如 App Engine 標準環境Cloud RunCloud Run 函式) 連線,您的應用程式或函式會透過無伺服器虛擬私人雲端存取直接連線至執行個體,而不需要 Cloud SQL 驗證 Proxy。
虛擬私有雲網路對等互連 使用私人服務存取權的連線必須使用虛擬私人雲端網路對等互連。不過,您不需要明確建立虛擬私有雲網路對等互連,因為對等互連是 Google Cloud的內部機制。建立私人服務存取權連線後,您可以在Google Cloud 控制台的「VPC Network Peering」頁面中查看其基礎虛擬私人雲端網路對等互連,但除非您想 移除私人連線,否則請勿刪除。

進一步瞭解虛擬私有雲網路對等互連。

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 執行個體無法在專案之間移動,也無法在不同專案代管的網路之間移動。

後續步驟