本頁面會簡要說明 Cloud SQL 驗證 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 位址。
Cloud SQL 驗證 Proxy 不會提供新的連線路徑,而是仰賴現有的 IP 連線。如要使用私人 IP 連線至 Cloud SQL 執行個體,Cloud SQL Auth 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:
使用 Cloud SQL 驗證 Proxy 的規定
如要使用 Cloud SQL 驗證 Proxy,必須符合下列條件:
- 您必須啟用 Cloud SQL Admin API。
- 您必須提供 Google Cloud 驗證憑證給 Cloud SQL 驗證 Proxy。
- 您必須提供有效的資料庫使用者帳戶與密碼給 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
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.17.1/cloud-sql-proxy.linux.amd64
- 將 Cloud SQL 驗證 Proxy 設為允許執行:
chmod +x cloud-sql-proxy
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.17.1/cloud-sql-proxy.linux.386
- 如果找不到
curl
指令,請執行sudo apt install curl
,然後重複下載指令。 - 將 Cloud SQL 驗證 Proxy 設為允許執行:
chmod +x cloud-sql-proxy
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.17.1/cloud-sql-proxy.darwin.amd64
- 將 Cloud SQL 驗證 Proxy 設為允許執行:
chmod +x cloud-sql-proxy
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.17.1/cloud-sql-proxy.darwin.arm64
- 將 Cloud SQL 驗證 Proxy 設為允許執行:
chmod +x cloud-sql-proxy
cloud-sql-proxy.exe
。cloud-sql-proxy.exe
。Cloud SQL 驗證 Proxy 有不同的容器映像檔,例如 distroless
、alpine
和 buster
。預設的 Cloud SQL 驗證 Proxy 容器映像檔使用 distroless
,其中不含任何殼層。如需 Shell 或相關工具,請根據 alpine
或 buster
下載映像檔。
詳情請參閱「Cloud SQL Auth Proxy 容器映像檔」。
您可以使用 Docker 執行下列指令,將最新映像檔提取至本機電腦:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.17.1
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
。
執行 cloud-sql-proxy
可執行檔,並使用 --help
引數,即可查看完整的啟動選項清單。
您可以在本機環境的任何位置安裝 Cloud SQL 驗證 Proxy。Cloud SQL Auth Proxy 二進位檔的位置不會影響 Proxy 監聽應用程式資料的位置。
如要進一步瞭解如何啟動 Cloud SQL 驗證 Proxy,請參閱「啟動 Cloud SQL 驗證 Proxy」。
使用服務帳戶進行驗證
Cloud SQL Auth Proxy 必須先以 Cloud SQL IAM 身分驗證,才能授權連線至 Cloud SQL 執行個體。
使用服務帳戶的優點是,您可以專為 Cloud SQL Auth Proxy 建立憑證檔案,只要該檔案正在執行,就會明確且永久連結至 Cloud SQL Auth Proxy。因此,如果生產環境執行個體並非在 Compute Engine 執行個體上執行,建議使用服務帳戶。
如需從多部機器叫用 Cloud SQL 驗證 Proxy,可以在系統映像檔中複製憑證檔案。
您必須建立及管理憑證檔案,才能使用這個方法。只有具備 resourcemanager.projects.setIamPolicy
權限的使用者 (例如專案擁有者) 才能建立服務帳戶。如果Google Cloud 使用者沒有這項權限,您必須請其他人為您建立服務帳戶,或使用其他方法驗證 Cloud SQL Auth Proxy。
瞭解如何 建立服務帳戶。
服務帳戶的所需權限
使用服務帳戶提供 Cloud SQL Auth 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 Auth Proxy 建立通訊端的位置和方式,以及驗證方式。通訊端用於與 Cloud SQL 通訊。
如需 Cloud SQL 驗證 Proxy 選項的相關說明,請參閱下列資訊:
- Cloud SQL 驗證 Proxy 的驗證選項
- Cloud SQL 驗證 Proxy 呼叫範例
- Cloud SQL Auth Proxy GitHub 頁面
- Cloud SQL 驗證 Proxy 說明,以
./cloud-sql-proxy --help
顯示
在正式環境中使用 Cloud SQL 驗證 Proxy
在正式環境中使用 Cloud SQL Auth Proxy 時,您可以採取一些步驟,確保 Cloud SQL Auth Proxy 為應用程式提供所需的可用性。
確認 Cloud SQL 驗證 Proxy 是以持續性服務的形式執行
如果 Cloud SQL 驗證 Proxy 程序停止,透過該程序的所有現有連線都會中斷,且應用程式無法再透過 Cloud SQL 驗證 Proxy 建立與 Cloud SQL 執行個體的連線。為避免發生這種情況,請務必將 Cloud SQL 驗證 Proxy 做為持續性服務執行,這樣一來,即使 Cloud SQL 驗證 Proxy 因任何原因結束,也會自動重新啟動。您可以使用 systemd
、upstart
或 supervisor
等服務完成這項操作。如果是 Windows 作業系統,請以 Windows 服務的形式執行 Cloud SQL 驗證 Proxy。一般來說,請確保 Cloud SQL Auth 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 驗證 Proxy GitHub 版本頁面,查看 Cloud SQL 驗證 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 Operator
Cloud SQL Proxy 運算子是開放原始碼的 Kubernetes 運算子,可自動將 GKE 叢集中的工作負載連線至 Cloud SQL 資料庫。Cloud SQL 驗證 Proxy 運算子會使用自訂資源 AuthProxyWorkload,指定特定工作負載的 Cloud SQL 驗證 Proxy 設定。Cloud SQL 驗證 Proxy 運算子會讀取這項資源,並將具備必要設定的 Cloud SQL 驗證 Proxy 容器新增至適當的工作負載。
在 GKE 叢集中安裝運算子,並設定工作負載和 Cloud SQL 執行個體後,Cloud SQL Auth Proxy 運算子會自動設定 Cloud SQL Auth Proxy,並將 GKE 工作負載連線至 Cloud SQL 執行個體。
Cloud SQL 驗證 Proxy 運算子也會檢查 Cloud SQL 驗證 Proxy 的狀態。如果 Cloud SQL 驗證 Proxy 無法連線,Cloud SQL 驗證 Proxy 運算子會輸出偵錯資訊,並提供指引,協助您排解及修正常見的設定問題。
詳情請參閱使用 Cloud SQL Proxy Operator 連線。