從虛擬私有雲外部連線至 Cloud SQL 執行個體

本頁面說明如何從已設定的虛擬私有雲端 (VPC) 外連線至 Cloud SQL 執行個體。

事前準備

開始之前,請務必完成下列操作:

  1. 建立 Cloud SQL 執行個體
  2. 將執行個體設定為使用內部 IP 位址,而非外部 IP 位址。

關於外部連線

Cloud SQL 執行個體由 Google 代管虛擬私有雲中的多個節點組成。建立執行個體時,您也需要在其中一個虛擬私有雲與包含新執行個體的 Google 管理虛擬私有雲之間,設定私人服務存取權Private Service Connect。這個對等連線可讓您使用內部 IP 位址存取執行個體虛擬私有雲上的資源,就好像這些資源是您自己的虛擬私有雲的一部分一樣。

在下列情況下,請從已連線的虛擬私有雲外部連線至執行個體:

  • 應用程式會在您透過私人服務存取權或 Private Service Connect 連線至執行個體的 VPC 外部執行。

  • 應用程式會在 Google 網路外部的 VPC 上執行。

  • 應用程式會在位於公開網路其他位置的電腦上執行。

在所有這些情況下,您都必須設定額外服務,才能啟用這類外部連線至 Cloud SQL 執行個體。

視您的需求而定,建議您採用下列解決方案建立外部連結:

  • 如要進行專案開發或原型設計,或是在相對低成本的實際環境中運作,請在 VPC 中設定中介虛擬機器 (VM) (也稱為Bastion)。您可以透過各種方法,在這個中介 VM 上進行建構,將其轉換為外部應用程式環境與 Cloud SQL 執行個體之間的安全連線。

  • 如果是需要高可用性的實際工作環境,建議您透過 Cloud VPN 或 Cloud Interconnect 在 VPC 和應用程式之間建立永久連線

以下各節將說明這些解決方案。

透過中介 VM 連線

如要使用開放原始碼工具和最少的額外資源,從虛擬私有雲外部建立與 Cloud SQL 執行個體的連線,請在該虛擬私有雲中設定的 VM 上執行 Proxy 服務。您可以設定新的 VM,也可以使用 Cloud SQL 執行個體虛擬私有雲中已在執行的 VM。

由於這是自助式解決方案,因此使用中介 VM 通常比使用網路連線產品更省錢,且設定時間也更短。這也有缺點:連線的可用性、安全性和資料傳輸量都會依賴中介 VM,您必須在專案中維護這項服務。

透過 IAP 連線

您可以使用 Identity-Aware Proxy (IAP),安全地連線至 Cloud SQL 執行個體,而無須公開中介 VM 的內部 IP 位址。您可以結合防火牆規則和 Identity and Access Management (IAM),限制透過此路徑的存取權。因此,IAP 是開發和製作原型等非正式用途的絕佳解決方案。

Identity-Aware Proxy 架構

在這個圖表中,IAP 是虛擬私有雲外部用戶端與虛擬私有雲內部中介 VM 之間的閘道。用戶端會建立 SSH 通道連線至 IAP。Cloud SQL 驗證 Proxy 會將 VM 和 Cloud SQL 執行個體之間的流量加密。透過這兩個 Proxy,用戶端與執行個體之間的通訊就會建立。

如要設定 IAP 存取執行個體的權限,請按照下列步驟操作:

  1. 在外部用戶端上安裝 gcloud CLI

  2. 在中介 VM 上下載並安裝 Cloud SQL 驗證 Proxy

  3. 在中介 VM 上啟動 Cloud SQL 驗證 Proxy

    由於 VM 已設定內部 IP 位址,因此在啟動 Cloud SQL 驗證 Proxy 時,您必須提供 --private-ip 選項。

  4. 在 Google Cloud 專案中啟用 IAP TCP 轉送功能

    定義新的防火牆規則時,請允許輸入 TCP 流量至通訊埠 22 (SSH)。如果您使用專案的預設網路,並啟用預先填入的 default-allow-ssh 規則,則不需要定義其他規則。

  5. 使用 透過 IAP 的 SSH 設定外部用戶端和中介 VM 之間的通訊埠轉送:

    gcloud compute ssh VM_NAME \
    --tunnel-through-iap \
    --zone=ZONE_NAME \
    --ssh-flag="-L 1433:localhost:1433"

    請將以下項目改為對應的值:

    • VM_NAME::VM 名稱
    • ZONE_NAME: 與 VM 相關聯的可用區名稱
  6. 在外部用戶端上,使用 SQL Server 用戶端測試連線。

透過 SOCKS Proxy 連線

在中介 VM 上執行 SOCKS 服務,可提供靈活且可擴充的 Cloud SQL 執行個體連線,並由 Cloud SQL 驗證 Proxy 提供端對端加密功能。

如要進一步瞭解如何使用 SOCKS Proxy 連線至 Cloud SQL 執行個體,請參閱「使用中介 Proxy (SOCKS5) 連線」一文。

透過池化器連線

如果您需要在中介 VM 上安裝及執行 Cloud SQL 驗證 Proxy (而非外部用戶端),則可以搭配通訊協定感知 Proxy (也稱為集區管理工具) 啟用安全連線。ADO.NET 是 SQL Server 常用的開放原始碼集區管理工具。

在這個解決方案中,您會在中介 VM 上執行 Cloud SQL 驗證 Proxy 和集區管理工具。這樣一來,用戶端或應用程式就能透過 SSL 直接安全連線至集區管理工具,無須執行任何額外服務。集區管理工具會透過 Cloud SQL 驗證 Proxy,將 PostgreSQL 查詢傳送至 Cloud SQL 執行個體。

由於每個 Cloud SQL 執行個體都有獨立的內部 IP 位址,因此每個 Proxy 服務只能與一個特定的執行個體進行通訊:主要執行個體、待命或讀取資源池。因此,針對每個執行個體,您必須使用已適當設定 SSL 憑證的獨立集結器服務。

透過 Cloud VPN 或 Cloud Interconnect 連線

對於需要高可用性 (HA) 的實際工作,建議您使用 Google Cloud 網路連線產品,例如 Cloud VPNCloud Interconnect,具體取決於外部服務的需求和網路拓撲。接著,您可以設定 Cloud Router 來宣傳適當的路徑。

如要進一步瞭解網路連線解決方案,請參閱「選擇網路連線產品」。

後續步驟