本頁面將概略說明連線至 Cloud SQL 執行個體的方式,並說明可用的驗證和授權選項。
總覽
考慮如何連線至 Cloud SQL 執行個體時,請留意以下許多選項:
- 您希望 Cloud SQL 執行個體可從網際網路存取,還是要將其保留在虛擬私有雲 (VPC) 網路中,還是要同時提供公開和私人存取權?
- 您打算自行編寫連線程式碼,還是使用公開可用的工具 (例如 Cloud SQL Auth Proxy 或 psql 用戶端) 進行連線?
- 您是要要求透過 SSL/TLS 加密,還是允許未加密的流量?
在後續章節中,我們將討論 Cloud SQL 提供的資料庫連線、授權和驗證選項。
- 連線方式:您用來連線至執行個體的網路路徑:
- 僅限虛擬私有雲的內部 IP 位址 (私人)。
- 可透過網際網路存取的外部 IP 位址 (公開)。
- 如何授權 - 哪些連線已授權,且允許連線至 Cloud SQL 執行個體:
- Java 和 Python 適用的 Cloud SQL Auth Proxy 和 Cloud SQL 連接器程式庫 - 這些程式庫可根據 IAM 提供存取權。
- 自行管理的 SSL/TLS 憑證:只允許使用特定公開金鑰的連線。
- 授權網路:可連線的 IP 位址清單。
- 如何驗證 - 登入資料庫的方法。
- 內建資料庫驗證:使用資料庫引擎中設定的使用者名稱/密碼登入。
- IAM 資料庫驗證:使用電子郵件或 OAuth 2.0 權杖做為密碼登入。
請參考下列資訊,決定最適合您的連線、授權和驗證選項。
事前準備
授予應用程式的存取權限,並不會讓資料庫使用者帳戶自動連結執行個體。您必須要有可用來連線的資料庫使用者帳戶,才能連線至執行個體。而對於新的執行個體,這代表您必須已經設定預設的使用者帳戶。詳情請參閱「運用內建驗證機制管理使用者」。
如何連線至 Cloud SQL
資料庫連線會耗用伺服器與連線中應用程式的資源,因此請務必使用合適的連線管理做法,以便將應用程式耗用的資源降到最低,同時降低超過 Cloud SQL 連線限制的可能性。詳情請參閱「管理資料庫連線」。
公開和私人 IP
在 Cloud SQL 中,公開 IP 代表您可透過公開網際網路存取執行個體。相反地,如果執行個體只使用私人 IP,則無法透過公開網際網路存取,但可以透過虛擬私有雲 (VPC) 存取。Cloud SQL 執行個體可同時具備公開和私人 IP 位址。
私人 IP
私人 IP 是可透過虛擬私有雲 (VPC) 存取的 IPv4 位址。
您可以使用這個位址,從其他可存取 VPC 的資源連線。透過私人 IP 進行的連線通常延遲時間較短,且攻擊向量有限,因為這些連線不需要穿越網際網路。您可以選擇要求所有連線都使用 Cloud SQL Proxy 或自行管理的 SSL 憑證。
建議您在有權存取虛擬私人雲端的資源上,透過用戶端連線時,使用私人 IP 設定執行個體。如要進一步瞭解哪些資源可使用私人 IP,請參閱「私人 IP 的規定」。
針對私人 IP 路徑,下列服務和應用程式會透過無伺服器虛擬私有雲端存取直接連線至您的執行個體:
- App Engine 標準環境
- App Engine 彈性環境
- Cloud Run 函式
- Cloud Run
進一步瞭解如何搭配使用私人 IP 與 Cloud SQL
如要瞭解如何在執行個體中新增私人 IP,請參閱下列任一說明:
公開 IP
公開 IP 是可在公開網際網路上外部使用的 IPv4 位址。這個位址可接收來自 Google 網路內外裝置的連線,包括住家或辦公室等地點。
為確保執行個體安全無虞,使用公開 IP 連線至 Cloud SQL 執行個體的所有連線都必須透過 Cloud SQL Auth Proxy 或授權網路授權。
如果您從不符合 VPC 規定的用戶端連線,建議您使用公開 IP 設定執行個體。
如要瞭解如何在執行個體中新增公開 IP,請參閱「設定公開 IP 連線」。
如需有關使用公開 IP 將 psql 用戶端連線至 Cloud SQL 執行個體的資訊,請參閱「使用資料庫用戶端連線」一文。
動態指派的 IP 位址
有些應用程式必須使用動態指派的 IP 位址或臨時 IP 位址連結 Cloud SQL 執行個體。平台式服務 (PaaS) 應用程式就屬於這種情況。
在這種情況下,您必須使用 Cloud SQL 驗證 Proxy。
執行個體的連線選項
本節說明 Cloud SQL 支援的連線至執行個體功能。這個部分也包含建立、停用和啟用執行個體的支援連結選項。
支援功能
下表列出 Cloud SQL 支援的功能,可透過私人連線連線至執行個體。
功能 | 僅具備私人服務存取權的執行個體 | 僅使用 Private Service Connect 的執行個體 | 同時具備私人服務存取權和 Private Service Connect 的執行個體 |
---|---|---|---|
從多個虛擬私有雲連線 | 不支援。 | 支援。 | 使用 Private Service Connect 端點即可支援。 |
pglogical 、PL/Proxy 、dblink 和 postgres_fdw 擴充功能 |
支援。 | 不支援。 | 使用私人服務存取權的傳出連線功能即可支援。 |
外部備援機制 | 支援。 | 不支援。 | 使用私人服務存取權的傳出連線功能即可支援。 |
寫入端點 | 支援。 | 不支援。 | 支援私人服務存取權。 |
變更私人服務存取權的相關聯虛擬私有雲網路 | 支援。 | 不適用。 | 因為執行個體已啟用 Private Service Connect,因此不支援私人服務存取權。不適用於 Private Service Connect。 |
用戶端 IP 位址對 Cloud SQL 的顯示狀態 | 支援。 | 不支援。 | 使用私人服務存取 IP 位址即可支援。使用 Private Service Connect 端點時不支援。 |
建立執行個體的連線選項
Cloud SQL 支援私人 IP 和公開 IP 設定。您可以根據應用程式需求選擇連線選項。
您可以設定私人 IP,讓 Cloud SQL 執行個體在虛擬私人雲端網路中保持私密。系統支援下列類型的私人連線:
- 私人服務存取權:透過單一虛擬私有雲網路連線至 Cloud SQL 執行個體
- Private Service Connect:從屬於不同群組、團隊、專案或機構的多個虛擬私有雲網路連線至 Cloud SQL 執行個體
如果您希望執行個體透過公用網際網路,存取 Google Cloud網路內部和外部的用戶端連線,請為執行個體設定公開 IP。
Cloud SQL 支援下列建立執行個體的連線選項:
- 僅限私人服務存取權
- 僅限 Private Service Connect
- 僅限公開 IP
- 私人服務存取權和 Private Service Connect
- 公開 IP 和私人服務存取權
- 公開 IP、私人服務存取和 Private Service Connect
停用連線選項
Cloud SQL 支援停用下列執行個體的連線選項:
- 在同時具備私人服務存取權和公開 IP 的執行個體上使用公開 IP
- 在含有公開 IP、私人服務存取權和 Private Service Connect 的執行個體上使用公開 IP
- 在同時具備 Private Service Connect 和私人服務存取權的執行個體上使用 Private Service Connect
- 在具有 Private Service Connect、私人服務存取權和公開 IP 的執行個體上使用 Private Service Connect
啟用連線選項
Cloud SQL 支援為執行個體啟用下列連線選項:
- 在僅有公用 IP 的執行個體上存取私人服務
- 僅限私人服務存取權的執行個體上的 Private Service Connect
- 在同時具備私人服務存取權和公開 IP 的執行個體上使用 Private Service Connect
- 僅具備私人服務存取權的執行個體上的公開 IP
限制
- 不支援同時使用公開 IP 和 Private Service Connect 建立執行個體。
- 在同時具備私人服務存取權和 Private Service Connect 的執行個體上,無法停用私人服務存取權。
- 在同時具備私人服務存取權和公開 IP 的執行個體上,系統不支援停用私人服務存取權。
- 如果您的執行個體只使用公開 IP,則無法同時啟用私人服務存取權和 Private Service Connect。請先啟用私人服務存取權,再啟用 Private Service Connect。
- 對於已啟用 Private Service Connect 的執行個體,系統不支援使用授權網路的 IP 白名單。
如何授權存取 Cloud SQL
Cloud SQL 語言連接器
Cloud SQL 語言連接器是用戶端程式庫,可在連線至 Cloud SQL 執行個體時提供加密和 IAM 授權。Cloud SQL 建議您使用 Cloud SQL 語言連接器,透過其他連線選項連線至 Cloud SQL 執行個體。
您可以直接使用這些程式庫的支援程式設計語言。這些 Proxy 提供與 Cloud SQL Auth Proxy 相同的驗證機制,但不需要外部程序。這可提升安全性,並減少連線至 Cloud SQL 的設定需求。使用公開 IP 位址或私人 IP 位址連線時,Cloud SQL 語言連接器也會使用相同的程式碼。
如要開始使用,請參閱「關於 Cloud SQL 語言連接器」。
Cloud SQL 驗證 Proxy
Cloud SQL Auth Proxy 可讓您使用 Identity and Access Management (IAM) 權限授權及保護連線。Cloud SQL 驗證 Proxy 會使用使用者或服務帳戶的憑證驗證連線,並在 Cloud SQL 執行個體授權的 SSL/TLS 層中包裝連線。如要進一步瞭解 Cloud SQL 驗證 Proxy 的運作方式,請參閱「關於 Cloud SQL 驗證 Proxy」一文。
使用 Cloud SQL Auth Proxy 是驗證與 Cloud SQL 執行個體連線的建議方法,因為這是最安全的方法。
Cloud SQL 驗證 Proxy 是開放原始碼程式庫,以可執行的二進位檔發行。Cloud SQL 驗證 Proxy 會充當中介伺服器,監聽傳入的連線,並以 SSL/TLS 包裝這些連線,然後將其傳遞至 Cloud SQL 執行個體。
部分環境提供使用 Cloud SQL 驗證 Proxy 連線的機制。如要瞭解如何使用這些環境進行連線,請參閱下列任一文章:
- 從 Cloud Run 連線
- 從 Cloud Run 函式連線
- 從 App Engine 標準環境連線
- 從 App Engine 彈性環境連線
- 從 Google Kubernetes Engine 連線
自行管理的 SSL/TLS 憑證
您可以設定專屬於 Cloud SQL 執行個體的用戶端/伺服器 SSL/TLS 憑證,而非使用 Cloud SQL 驗證 Proxy 來加密連線。這些憑證可用於驗證用戶端和伺服器彼此的連線,並加密兩者之間的連線。
強烈建議您在未使用 Cloud SQL 驗證 Proxy 時,使用自行管理的 SSL/TLS 憑證來提供加密功能。否則,您的資料就會以不安全的方式傳輸,並可能遭到第三方攔截或檢查。
如要開始使用自行管理的 SSL/TLS 憑證,請參閱「使用 SSL/TLS 憑證進行授權」一文。
已授權網路
除非使用 Cloud SQL Auth Proxy,否則只有來自授權網路的連線才能連線至執行個體的公開 IP 位址。授權網路是指使用者指定的 IP 位址或範圍,這些位址或範圍具有連線權限。
如要開始使用授權網路,請參閱「使用授權網路進行授權」一文。
如何驗證 Cloud SQL
驗證功能會驗證使用者的身分,提供存取權控管。對於使用者而言,只要輸入憑證 (使用者名稱和密碼),即可完成驗證。對於應用程式而言,只要使用者憑證指派給服務帳戶,即可完成驗證。
Cloud SQL 會使用資料庫內建的驗證機制,透過使用者名稱和密碼進行驗證。詳情請參閱「建立及管理 PostgreSQL 使用者」一文。
Cloud SQL 也已整合 IAM,協助您更有效地監控及管理使用者和服務帳戶的資料庫存取權。這項功能稱為 IAM 資料庫驗證。進一步瞭解 IAM 資料庫驗證。
進一步瞭解如何建立及管理使用 IAM 資料庫驗證功能的使用者。
連線至 Cloud SQL 的工具
下表列出連線至 Cloud SQL 的部分選項:
連線選項 | 更多資訊 |
---|---|
Cloud SQL 驗證 Proxy | |
gcloud CLI | |
Cloud SQL 語言連接器 | |
Cloud Shell | |
Cloud Code | |
使用第三方資料庫管理工具連線 | |
pgAdmin | |
Toad Edge | |
Blendo |
程式碼範例
任何可讓您連線至 Unix 或 TCP 通訊端的程式語言,都能用來連線至 Cloud SQL 驗證 Proxy。以下是 GitHub 完整範例中的程式碼片段,可協助您瞭解這些程式碼片段如何在應用程式中搭配運作。
疑難排解
如果無法順利連線,請參閱下列頁面,瞭解如何偵錯或找出已知問題的解決方案:
後續步驟
- 如要瞭解如何連線,請參閱 Cloud SQL for PostgreSQL 快速入門指南。
- 瞭解管理資料庫連線的最佳做法。
- 瞭解 IAM 資料庫驗證。
- 瞭解如何使用本機機器或 Compute Engine 中的 psql 用戶端建立連線。
- 瞭解如何設定 IP 連線能力。
- 瞭解 Cloud SQL 驗證 Proxy。
- 瞭解支援的選項。