Cloud SQL 連接器是程式庫,可提供加密功能,並在連線至 Cloud SQL 執行個體時,根據 Identity and Access Management (IAM) 進行授權。如果沒有網路路徑,連接器就無法提供連線至 Cloud SQL 執行個體的路徑。
如要連線至 Cloud SQL 執行個體,也可以使用資料庫用戶端或 Cloud SQL 驗證 Proxy。如要進一步瞭解如何連線至 Cloud SQL 執行個體,請參閱「關於連線選項」頁面。
本頁將討論下列 Cloud SQL 連接器:
- Cloud SQL Java 連接器
- Cloud SQL Python 連接器 (在 Colab 中開啟)
- Cloud SQL Go 連接器
- Cloud SQL Node.js 連接器
優點
使用 Cloud SQL 連接器可享有下列優點:
- IAM 授權:使用 IAM 權限控管可連線至 Cloud SQL 執行個體的使用者或項目。
- 便利性:免除管理 SSL 憑證、設定防火牆規則或啟用授權網路的需求。
事前準備
- 啟用 Cloud SQL Admin API。
啟用 API 時所需的角色
如要啟用 API,您需要具備服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。 - 建立 Cloud SQL 執行個體,包括設定預設使用者。
如要進一步瞭解如何建立執行個體,請參閱建立執行個體。
如要進一步瞭解如何設定預設使用者,請參閱「設定預設使用者帳戶的密碼」。
- 設定連線至 Cloud SQL 執行個體所需的角色和權限。
設定
Java
Cloud SQL Java 連接器是連線至 Cloud SQL 執行個體時,提供 IAM 授權和加密的程式庫。如果沒有網路路徑,這個連接器無法提供連線至 Cloud SQL 執行個體的路徑。
安裝
如要瞭解如何使用 Cloud SQL Java 連接器,建構及使用 JDBC 和 R2DBC 的驅動程式,請參閱下列連結:
- JDBC:使用 JDBC 連線至 Cloud SQL。
- R2DBC:使用 R2DBC 連線至 Cloud SQL。
如需在應用程式中使用這個程式庫的範例,請參閱這些範例應用程式。
驗證
這個程式庫會使用應用程式預設憑證,驗證與 Cloud SQL 伺服器的連線。
如要在本機啟用憑證,請使用下列 gcloud 指令:
gcloud auth application-default login
連結 Intellij
如要將 IntelliJ 連線至 Cloud SQL 執行個體,您需要在驅動程式設定頁面的「Additional Files」部分,將程式庫新增為含有依附元件的 JAR。舉例來說,您可以在這個頁面找到預先建構的 Fat JAR。
Python
Cloud SQL Python 連接器是可與資料庫驅動程式搭配使用的程式庫,讓具備足夠權限的使用者連線至 Cloud SQL 資料庫,不必手動將 IP 加入許可清單或管理 SSL 憑證。
如需使用 Cloud SQL Python 連接器的互動式範例,請開啟 Cloud SQL Python 連接器筆記本。
SQL Server 支援的驅動程式為 pytds。
安裝
如要安裝最新版本的 Cloud SQL Python 連接器,請使用 pip install 指令,並為資料庫指定 pytds 驅動程式:
pip install "cloud-sql-python-connector[pytds]"
驗證
這個程式庫會使用應用程式預設憑證,驗證與 Cloud SQL 伺服器的連線。
如要在本機啟用憑證,請使用下列 gcloud 指令:
gcloud auth application-default login
Go
Cloud SQL Go 連接器是專為 Go 語言設計的 Cloud SQL 連接器。為提升安全性,這個連接器會在用戶端連接器和伺服器端 Proxy 之間,使用手動驗證的強大 TLS 1.3 加密,與資料庫通訊協定無關。
安裝
您可以使用 go get 安裝這個存放區:
go get cloud.google.com/go/cloudsqlconn
Node.js
Node.js 連接器是專為 Node.js 執行階段設計的程式庫,可讓您安全連線至 Cloud SQL 執行個體。
安裝
您可以使用 npm install 安裝程式庫:
npm install @google-cloud/cloud-sql-connector
使用
Java
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
Python
如需使用程式庫的詳細操作說明,請參閱「 如何使用這個連接器」。在 GitHub 上查看連線測試程式碼範例。
Go
如需如何使用程式庫的詳細說明,請參閱「 使用方式」。在 GitHub 上查看連線測試程式碼範例。
Node.js
如需使用程式庫的詳細操作說明,請參閱「 使用方式」。
強制執行
透過連接器強制執行,您可以強制規定只能使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至 Cloud SQL 執行個體。強制執行連接器後,Cloud SQL 會拒絕直接連線至資料庫。
如果您使用已啟用 Private Service Connect 的執行個體,則有相關限制。如果執行個體已啟用連接器強制執行功能,就無法為該執行個體建立讀取副本。同樣地,如果執行個體有讀取副本,就無法為該執行個體啟用連接器強制執行功能。
gcloud
如要強制僅使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至執行個體,請使用 gcloud sql instances patch 指令:
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement=REQUIRED
將 INSTANCE_NAME 改成 Cloud SQL 執行個體的名稱。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:Cloud SQL 執行個體的名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{
"kind": "sql#instance",
"name": INSTANCE_NAME,
"project": PROJECT_ID,
"settings": {
"connectorEnforcement": "REQUIRED",
"kind": "sql#settings"
}
}請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
疑難排解
驅動程式版本
請務必使用最新版本的 Cloud SQL 連接器和資料庫驅動程式,以免發生不相容問題。部分舊版驅動程式不受支援。
連線路徑
Cloud SQL 連接器會授權連線,但不會提供新的連線路徑。舉例來說,如要使用私人 IP 位址連線至 Cloud SQL 執行個體,應用程式必須已具備虛擬私有雲存取權。
針對連線問題進行偵錯
如需連線問題的相關說明,請參閱「疑難排解」和「偵錯連線問題」頁面。
後續步驟
- 請參閱 GitHub 上的 Cloud SQL Java 連接器首頁。
- 請參閱 GitHub 上的 Cloud SQL Python 連接器首頁。
- 進一步瞭解 Cloud SQL Auth Proxy。
- 進一步瞭解身分與存取權管理。
- 瞭解支援的選項。