關於 Cloud SQL 驗證 Proxy

本頁面概要說明 Cloud SQL 驗證 Proxy,並說明如何使用該 Proxy 建立經過授權、加密及安全的連線,連線至您的執行個體。

如要瞭解如何使用 Cloud SQL 驗證 Proxy,請參閱逐步操作說明,並點選所需環境的連結:

您不需要使用 Cloud SQL Auth Proxy 或設定 SSL,即可從 App Engine 標準環境App Engine 彈性環境連線至 Cloud SQL。

Cloud SQL 驗證 Proxy 的優點

Cloud SQL Auth Proxy 是一種 Cloud SQL 連接器,可讓您安全存取執行個體,而無需授權網路設定 SSL

Cloud SQL 驗證 Proxy 和其他 Cloud SQL 連接器具備下列優點:

  • 安全的連線:Cloud SQL 驗證 Proxy 會透過傳輸層安全標準 (TLS) 1.3 搭配 Go 的規則選取的密碼編譯,自動加密進出資料庫的流量。SSL 憑證用於驗證用戶端和伺服器身分,且不受資料庫通訊協定影響;您不需要管理 SSL 憑證。
  • 更輕鬆的連線授權:Cloud SQL 驗證 Proxy 會使用 IAM 權限來控管哪些使用者和裝置可以連線至 Cloud SQL 執行個體。因此,Cloud SQL 驗證 Proxy 會處理 Cloud SQL 的驗證,無需提供靜態 IP 位址。
  • IAM 資料庫驗證。您可以選擇讓 Cloud SQL 驗證 Proxy 自動重新整理 OAuth 2.0 存取權杖。如要瞭解這項功能,請參閱「Cloud SQL IAM 資料庫驗證」。

Cloud SQL 驗證 Proxy 不會提供新的連線路徑,而是仰賴現有的 IP 連線。如要使用私人 IP 連線至 Cloud SQL 執行個體,Cloud SQL 驗證 Proxy 必須位於可存取與執行個體相同虛擬私人雲端網路的資源中。

限制

如果您使用情境感知存取權和 IAM 資料庫驗證,就無法使用 Cloud SQL 驗證 Proxy。嘗試登入執行個體時,IAM 驗證會失敗。

Cloud SQL 驗證 Proxy 的運作方式

Cloud SQL 驗證 Proxy 會在本機環境中執行本機用戶端。應用程式會使用資料庫使用的標準資料庫通訊協定,與 Cloud SQL 驗證 Proxy 進行通訊。

Cloud SQL 驗證 Proxy 會使用安全通道,與在伺服器上執行的隨附程序進行通訊。透過 Cloud SQL 驗證 Proxy 建立的每個連線,都會建立與 Cloud SQL 執行個體的一個連線。

應用程式連線至 Cloud SQL 驗證 Proxy 時,會檢查應用程式與目標 Cloud SQL 執行個體之間是否有現有連線。如果不存在連線,就會呼叫 Cloud SQL Admin API 取得暫時性 SSL 憑證,並使用該憑證連線至 Cloud SQL。暫時性 SSL 憑證會在大約一小時後失效。Cloud SQL 驗證 Proxy 會在憑證到期前重新整理這些憑證。

Cloud SQL 驗證 Proxy 不提供連線集區,但可搭配其他連線集區來提高效率。

下圖顯示 Cloud SQL 驗證 Proxy 如何連線至 Cloud SQL:

從用戶端軟體連線至 SQL 執行個體的 Cloud SQL 驗證 Proxy 圖表

使用 Cloud SQL 驗證 Proxy 的必要條件

如要使用 Cloud SQL 驗證 Proxy,您必須符合下列規定:

  • 您必須啟用 Cloud SQL Admin API。
  • 您必須為 Cloud SQL 驗證 Proxy 提供 Google Cloud 驗證憑證
  • 您必須提供有效的資料庫使用者帳戶和密碼給 Cloud SQL Auth Proxy。
  • 執行個體必須要有公開 IPv4 位址,或設定為使用私人 IP

    您不需要開放所有外部位址存取該公開 IP 位址,因此無須將該位址新增為已獲授權的網路位址。

如果您要連線的 Cloud SQL 執行個體使用共用憑證授權單位 (CA)serverCaMode 設定,則在用戶端端,您必須使用 Cloud SQL Auth Proxy 2.13.0 以上版本。

如果您要連線的 Cloud SQL 執行個體使用客戶管理的 CA 做為 serverCaMode 設定,則在用戶端端,您必須使用 Cloud SQL Auth Proxy 2.14.3 以上版本。

如果執行個體使用客戶管理的 CA 做為伺服器 CA 模式,您可以使用自訂 DNS 名稱設定執行個體。您可以在伺服器憑證的自訂主體別名 (SAN) 欄位中提供自訂 DNS 名稱。

為執行個體設定自訂 DNS 名稱後,您就可以使用 DNS 名稱,從 Cloud SQL 語言連接器連線至執行個體。

下載並安裝 Cloud SQL 驗證 Proxy

Linux 64 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.amd64
  2. 將 Cloud SQL 驗證 Proxy 設為可執行:
    chmod +x cloud-sql-proxy

Linux 32 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.386
  2. 如果找不到 curl 指令,請執行 sudo apt install curl 並重複下載指令。
  3. 將 Cloud SQL 驗證 Proxy 設為可執行:
    chmod +x cloud-sql-proxy

macOS 64 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.amd64
  2. 將 Cloud SQL 驗證 Proxy 設為可執行:
    chmod +x cloud-sql-proxy

Mac M1

  1. 下載 Cloud SQL 驗證 Proxy:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.arm64
      
  2. 將 Cloud SQL 驗證 Proxy 設為可執行:
      chmod +x cloud-sql-proxy
      

Windows 64 位元

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x64.exe 上按一下滑鼠右鍵,然後選取「Save Link As」(另存連結為),即可下載 Cloud SQL 驗證 Proxy。將檔案重新命名為 cloud-sql-proxy.exe

Windows 32 位元

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「Save Link As」(另存連結為),即可下載 Cloud SQL 驗證 Proxy。將檔案重新命名為 cloud-sql-proxy.exe

Cloud SQL 驗證 Proxy Docker 映像檔

Cloud SQL 驗證 Proxy 有不同的容器映像檔,例如 distrolessalpinebuster。預設的 Cloud SQL 驗證 Proxy 容器映像檔會使用 distroless,其中不含任何殼層。如果您需要殼層或相關工具,請下載以 alpinebuster 為基礎的映像檔。詳情請參閱「Cloud SQL 驗證 Proxy 容器映像檔」。

您可以使用下列指令,透過 Docker 將最新映像檔提取至本機電腦:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0

其他作業系統

如果是未列於上述說明的其他作業系統,您可以從原始碼編譯 Cloud SQL 驗證 Proxy

Cloud SQL 驗證 Proxy 啟動選項

啟動 Cloud SQL 驗證 Proxy 時,請提供下列資訊:

  • 要與哪些 Cloud SQL 執行個體建立連線
  • Proxy 要在哪裡聆聽應用程式傳送至 Cloud SQL 的資料
  • Proxy 要去哪裡尋找用來向 Cloud SQL 驗證應用程式的憑證
  • (如有需要) 要使用的 IP 位址類型。

您提供的 Cloud SQL 驗證 Proxy 啟動選項,會決定 Proxy 是監聽 TCP 通訊埠還是 Unix 通訊端。如果是監聽 Unix 通訊端,系統會在您選擇的位置建立通訊端,通常是 /cloudsql/ 目錄。針對 TCP,Cloud SQL 驗證 Proxy 預設會監聽 localhost

使用引數 --help 執行 cloud-sql-proxy 可執行檔,即可查看完整的啟動選項清單。

您可以在本機環境的任何位置安裝 Cloud SQL 驗證 Proxy。Cloud SQL Auth Proxy 二進位檔的位置不會影響其聆聽應用程式資料的位置。

如要進一步瞭解如何啟動 Cloud SQL 驗證 Proxy,請參閱「啟動 Cloud SQL 驗證 Proxy」。

使用服務帳戶進行驗證

Cloud SQL 驗證 Proxy 需要以 Cloud SQL IAM 身分驗證,才能授權連線至 Cloud SQL 執行個體。

使用服務帳戶的優點是,您可以專門為 Cloud SQL 驗證 Proxy 建立憑證檔案,只要 Cloud SQL 驗證 Proxy 執行中,就會明確且永久地連結至該檔案。因此,如果工作執行個體未在 Compute Engine 執行個體上執行,建議您使用服務帳戶。

如果您需要從多部機器叫用 Cloud SQL 驗證 Proxy,可以複製憑證檔案。

您必須建立及管理憑證檔案,才能使用這個方法。只有擁有 resourcemanager.projects.setIamPolicy 權限的使用者 (例如專案擁有者) 才能建立服務帳戶。如果您的Google Cloud 使用者沒有這項權限,您必須請其他人為您建立服務帳戶,或使用其他方法驗證 Cloud SQL 驗證 Proxy。

瞭解如何 建立服務帳戶

服務帳戶的所需權限

使用服務帳戶為 Cloud SQL 驗證 Proxy 提供憑證時,必須具備足夠的權限才能建立服務帳戶。如果您使用更精細的身分與存取權管理 (IAM) 角色來管理 Cloud SQL 權限,就必須將包含 cloudsql.instances.connect 權限的角色提供給該服務帳戶。包含此權限的預先定義 Cloud SQL 角色如下:

  • Cloud SQL 用戶端
  • Cloud SQL 編輯者
  • Cloud SQL 管理員

如果您是使用舊版專案角色 (檢視者、編輯者、擁有者),則服務帳戶至少必須具備「編輯者」角色。

保持 Cloud SQL 驗證 Proxy 的最新狀態

Google 會不定期推出新版 Cloud SQL 驗證 Proxy,您可以查看 Cloud SQL Auth Proxy GitHub 版本頁面,瞭解目前的版本。Google Groups Cloud SQL 公告論壇中也會註記未來的 Proxy 版本。

API 使用量

Cloud SQL 驗證 Proxy 會向 Cloud SQL Admin API 發出要求。這些要求會計入專案的 API 配額。

啟動 Cloud SQL 驗證 Proxy 時,API 用量會達到最高。Cloud SQL 驗證 Proxy 執行時,每個已連線的執行個體每小時會發出 2 次 API 呼叫。

Cloud SQL 驗證 Proxy 參數和旗標

Cloud SQL 驗證 Proxy 在啟動時會接受多個旗標和參數。這些選項會決定 Cloud SQL 驗證 Proxy 建立用於與 Cloud SQL 通訊的通訊端的位置和方式,以及驗證方式。

如需有關 Cloud SQL 驗證 Proxy 選項的說明,請參閱以下資訊:

在實際環境中使用 Cloud SQL 驗證 Proxy

在實際工作環境中使用 Cloud SQL 驗證 Proxy 時,您可以採取一些步驟,確保 Cloud SQL 驗證 Proxy 可為應用程式提供必要的可用性。

確保 Cloud SQL 驗證 Proxy 以持久服務的形式執行

如果 Cloud SQL 驗證 Proxy 程序停止,透過該程序的所有現有連線都會中斷,且應用程式將無法再透過 Cloud SQL 驗證 Proxy 建立任何 Cloud SQL 執行個體連線。為避免發生這種情況,請務必將 Cloud SQL 驗證 Proxy 設為持續性服務,這樣一來,如果 Cloud SQL 驗證 Proxy 因任何原因中止,就會自動重新啟動。您可以使用 systemdupstartsupervisor 等服務來達成這項目標。針對 Windows 作業系統,請將 Cloud SQL 驗證 Proxy 做為 Windows 服務執行。一般來說,請確認 Cloud SQL 驗證 Proxy 的正常運作時間與應用程式程序相同。

應用程式需要多少個 Cloud SQL 驗證 Proxy

您不必為每個應用程式程序建立 Proxy 程序,許多應用程式程序可以共用單一 Cloud SQL 驗證 Proxy 程序。每個工作站或虛擬機器執行一個 Cloud SQL Auth Proxy 用戶端程序。

如果您要為虛擬機器使用自動調整大小功能,請務必在虛擬機器設定中加入 Cloud SQL 驗證 Proxy,這樣一來,每當啟動新的虛擬機器時,就會有專屬的 Cloud SQL 驗證 Proxy 程序。

無論是透過限制還是集中管理連線,您都可以自行管理應用程式需要多少連線。Cloud SQL 驗證 Proxy 不會對新連線率或持續連線數量設下任何限制。

減少 Cloud SQL 驗證 Proxy 的輸出內容

如需縮減 Cloud SQL 驗證 Proxy 記錄的大小,請在啟動 Cloud SQL 驗證 Proxy 時設定 --quiet。不過,請注意,這樣做會降低 Cloud SQL 驗證 Proxy 輸出內容在診斷連線問題時的有效性。

容錯移轉對 Cloud SQL 驗證 Proxy 的影響

如果您在已設定為高可用性的執行個體上執行 Cloud SQL 驗證 Proxy,且發生備援,透過 Cloud SQL 驗證 Proxy 的連線會受到影響,就像透過 IP 連線一樣:所有現有連線都會遺失,應用程式必須建立新的連線。然而並不需要任何人為操作介入,應用程式會繼續使用先前所用的相同連線字串。

保持 Cloud SQL 驗證 Proxy Docker 映像檔的最新狀態

Cloud SQL 驗證 Proxy Docker 映像檔是以特定版本的 Cloud SQL 驗證 Proxy 為基礎。當 Cloud SQL 驗證 Proxy 推出新版本時,請拉取新版本的 Cloud SQL 驗證 Proxy Docker 映像檔,以便保持環境的最新狀態。您可以檢查 Cloud SQL Auth Proxy GitHub 版本頁面查看 Cloud SQL Auth Proxy 的最新版本。

如何強制使用 Cloud SQL 驗證 Proxy

您可以使用 ConnectorEnforcement 強制在 Cloud SQL 執行個體連線中使用 Cloud SQL 驗證 Proxy。在連接器強制執行的情況下,系統會拒絕直接資料庫連線。

如要使用連接器強制執行機制,請使用 instances API 中的 ConnectorEnforcement 欄位。

如果您使用的是啟用 Private Service Connect 的執行個體,則有以下限制。如果執行個體已啟用連接器強制執行,您就無法為該執行個體建立唯讀備用資源。同樣地,如果執行個體有唯讀備用資源,就無法為該執行個體啟用連接器強制執行。

如要進一步瞭解如何強制只使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至執行個體,請參閱「強制使用 Cloud SQL Auth Proxy」。

關於 Cloud SQL Proxy 操作員

Cloud SQL Proxy Operator 是開放原始碼 Kubernetes 運算子,可自動將 GKE 叢集中的工作負載連結至 Cloud SQL 資料庫。Cloud SQL 驗證 Proxy Operator 會使用自訂資源 AuthProxyWorkload,指定特定工作負載的 Cloud SQL 驗證 Proxy 設定。Cloud SQL 驗證 Proxy Operator 會讀取這項資源,並在適當的工作負載中新增 Cloud SQL 驗證 Proxy 容器,並套用必要的設定。

在 GKE 叢集中安裝操作員,並設定工作負載和 Cloud SQL 執行個體時,Cloud SQL 驗證 Proxy 操作員會自動設定 Cloud SQL 驗證 Proxy,並將 GKE 工作負載連結至 Cloud SQL 執行個體。

Cloud SQL 驗證 Proxy 運算子也會檢查 Cloud SQL 驗證 Proxy 的狀態。如果 Cloud SQL 驗證 Proxy 無法連線,Cloud SQL 驗證 Proxy Operator 會輸出偵錯資訊,並提供指引,協助您排解及修復常見的設定問題。

詳情請參閱「使用 Cloud SQL Proxy Operator 進行連線」。

後續步驟