Cloud SQL Auth Proxy

你的 Cloud SQL 執行個體沒有公網 IP。
按名字夠到它,不用堡壘機 VM。

開啟連線時,AgentsRoom 會啟動 Cloud SQL Auth Proxy,並讓自己的資料庫客戶端從中穿過。你只需給出執行個體連線名 project:region:instance,或者從你自己的 gcloud 登入能看到的列表裡挑一個。

代理由你的 Application Default Credentials(應用預設憑證)授權,所以 AgentsRoom 不儲存任何服務帳號金鑰。啟用 IAM 資料庫身份驗證後,連資料庫密碼也不需要。而且 AI 程式設計代理也能以唯讀方式查詢同一個執行個體。

Cloud SQL Auth Proxy
無公網 IP
AgentsRoom
127.0.0.1:由作業系統挑選的埠
cloud-sql-proxy
--private-ip --auto-iam-authn
你的 gcloud 登入TLS 1.3, IAM
Cloud SQL 執行個體
acme-prod:europe-west1:orders
預留一個空閒的迴環埠
僅限迴環,絕不落到區域網上不存金鑰,不用堡壘機 VM

AgentsRoom 如何經由 Cloud SQL Auth Proxy 訪問私有 IP 上的 Cloud SQL 執行個體,而應用這一側什麼都不儲存。

只有私有 IP 的 Cloud SQL 執行個體,是正確的配置,也是彆扭的配置。資料庫待在你的 VPC 裡,公網 IP 是關著的,能夠到它的只有那張網路內部的機器。然後,為了一個 bug,你需要在筆記本上看三行資料。

Google 早就給出了答案:Cloud SQL Auth Proxy。它向執行個體開啟一條加密連線,授權靠的是你的 Google 身份,而不是 IP 白名單,並把它暴露成一個本地埠。真正的麻煩在它周圍的一切:要安裝它,要記住執行個體連線名,要在開啟客戶端之前先在終端裡啟動它,用完之後還常常忘了關。

這一部分由 AgentsRoom 來做。在資料庫連線的「經由」欄位裡選 Google Cloud SQL,填上執行個體,需要的話勾選「私有 IP」或「IAM 資料庫身份驗證」,從此開啟那個資料庫就是一次點選的事。代理隨連線啟動,也隨連線停止。

繞開它的那些常規辦法,每一種都要你付出代價

同一個問題的三種答案,以及它們各自向你收取的費用。

專為此事而設的堡壘機 VM

一台開著 SSH 埠的 Compute Engine VM,只為了偶爾有人要隧道連到資料庫,就一直留在 VPC 裡。它要打補丁,每小時都在花錢,它的 SSH 金鑰和防火牆規則還會隨著團隊人員變動而逐漸失真。

公網 IP 加白名單

開啟公網 IP,再把你家的地址加進授權網路,在地址變掉之前都管用,而這期間資料庫一直在網際網路上監聽。這種例外,從來沒人真的去撤銷。

放在筆記本上的服務帳號金鑰

為了跑代理而下載一份 JSON 金鑰,是人人事後都後悔的捷徑:一份長期有效的憑證躺在下載資料夾裡,被複制進腳本和提示詞,沒人輪換,也沒人能追蹤。

從一個私有 Cloud SQL 執行個體到一份結果集

四個步驟,做一次就夠,之後就是一次點選的事。

01

用 gcloud 登入一次

在你的機器上執行 gcloud auth application-default login。它建立的 Application Default Credentials(應用預設憑證)就是代理訪問執行個體時使用的憑證。AgentsRoom 既不讀取其中任何內容,也不儲存。

02

在「經由」裡選好執行個體

新建一個 MySQL 或 PostgreSQL 連線,在「經由」裡選 Google Cloud SQL。輸入執行個體連線名 project:region:instance,或者點「列出我的執行個體」,從你的 gcloud 登入能看到的執行個體裡挑一個。主機和埠欄位會消失:執行個體本身就是地址。

03

選好私有 IP 和 IAM 身份驗證

執行個體沒有公網地址、而你的機器透過 VPN 或 Interconnect 能到達它的 VPC 時,勾選「私有 IP」。想用你的 Google 身份登入,就勾選「IAM 資料庫身份驗證」:密碼欄位會消失,使用者就是你的 IAM 資料庫使用者。

04

自己查,或者讓代理去查

開啟連線時,會預留一個空閒的迴環埠,在其上啟動 cloud-sql-proxy,並一直等到它接受 TCP 連線。主控台像連線其他任何連線一樣連到 127.0.0.1,AI 代理也可以經由 MCP 以唯讀方式查詢它。關閉連線時,代理也隨之停止。

實際跑起來的是什麼

AgentsRoom 啟動的那條命令

這裡沒有重新實現任何東西。AgentsRoom 把 Google 自己的 cloud-sql-proxy 二進位制檔案(2 版)作為子程序執行,引數直接傳入而不經過 shell。如果你曾經手動啟動過代理,這就是你早已認得的那一行。

cloud-sql-proxy acme-prod:europe-west1:orders \
  --address 127.0.0.1 --port 54321 \
  --private-ip \
  --auto-iam-authn

執行個體和兩個選項都來自你儲存的連線。本地埠則在開啟時由作業系統挑選。

代理會先接受本地連線,再去檢查別的,出了問題就斷開它並把原因寫進日誌。AgentsRoom 會讀取這份日誌,告訴你真正的原因:代理沒有安裝,你的 gcloud 登入已經過期(並附上該執行的命令),你的帳號缺少 Cloud SQL Client 角色,執行個體沒有私有 IP,或者執行個體名寫錯了。

前置條件

它跑起來之前,有哪些條件必須成立

AgentsRoom 驅動你既有的 Google Cloud 配置,而不是取代它。這些條件,和代理單獨使用時所需要的完全一樣。

  • 你機器上的 cloud-sql-proxy

    Cloud SQL Auth Proxy 的 2 版,位於你的 PATH 中。最快的辦法是 gcloud components install cloud-sql-proxy;Google 也提供獨立下載。如果找不到它,AgentsRoom 會明說,並給出該執行的命令。

  • Application Default Credentials

    執行一次 gcloud auth application-default login 即可。這個登入過期時,錯誤資訊會告訴你重新執行它,而不是只給你看一個關閉的套接字。

  • Cloud SQL Client 角色

    你的 Google 帳號需要在執行個體所屬專案裡擁有 Cloud SQL Client 角色,並且該專案裡要啟用 Cloud SQL Admin API。IAM 資料庫身份驗證還需要 Cloud SQL Instance User 角色,以及執行個體上的一個 IAM 使用者。

  • 用於下拉選單的 gcloud

    「列出我的執行個體」會在你當前啟用的專案裡,或者你剛開始輸入的那個專案裡執行 gcloud sql instances list。沒有 gcloud 也行,手動輸入連線名即可。

  • 通往 VPC 的路徑,供私有 IP 使用

    使用私有 IP,意味著你的機器本身必須能到達執行個體所在的 VPC,途徑可以是 VPN、Interconnect,或者網路內部的某台機器。沒有這條路徑時,請關掉「私有 IP」,改用公網 IP,並依靠代理的加密。

代理做什麼,又拒絕做什麼

這些性質決定了:把它配置好留在筆記本上,是否安全。

僅限迴環

代理只監聽 127.0.0.1,別的都不聽。資料庫絕不會被重新發布到區域網上,所以咖啡館的 Wi-Fi 不會變成通往正式環境的路。

由作業系統挑選的埠

AgentsRoom 向作業系統要一個空閒埠,並把它交給代理。不用記固定埠,也不會和你手動啟動的另一個代理衝突。

就緒就是真就緒

只有在本地埠接受 TCP 之後,連線才會開啟,而一啟動就退出的代理,會如實報告它列印出的原因。沒有隨便的 sleep,也不會有客戶端連得太早。

不存金鑰

代理由你的 Application Default Credentials 授權。AgentsRoom 儲存的是執行個體連線名和兩個選項,其中沒有任何一項是憑證,服務帳號金鑰也從不接觸應用。

資料庫保持唯讀

資料庫連線在建立時是唯讀的。要寫入,必須先把該連線設為可寫並明確確認,而在標記為正式環境的連線上,這個確認會更醒目。

每次呼叫一條陳述式

每次呼叫只攜帶一條陳述式,所以分號後面藏不了任何東西;結果集也有上限,寬泛的查詢不會把視窗或代理的上下文撐爆。

為什麼這意味著更少的訪問,而不是更多

執行個體這一側什麼都不用開。公網 IP 可以繼續關著,不用往授權網路里加任何網路,也不用為了偶爾一次查詢,讓一台開著 SSH 埠的 VM 一直活著。代理對到執行個體的連線做端到端加密。

授權仍然留在你的組織管理它的地方:你的 Google 身份及其 IAM 角色。授予該身份的訪問,會和其他任何 Cloud SQL 連線一樣被記錄,並且在角色被移除的那天結束。AgentsRoom 儲存的是執行個體名、「私有 IP」的選擇和 IAM 的選擇,僅此而已,沒有任何東西能被讀到它們的人拿去重放。

資料庫一側的防護欄,和每一個 AgentsRoom 連線得到的一樣:預設唯讀,每次呼叫一條陳述式,結果集有上限,以及一個會讓寫入確認更嚴格的正式環境標記。經由 MCP 查詢的 AI 代理拿到的是結果集,而不是憑證;除非你把該連線設為可寫,併為它開啟「允許代理寫入」,否則它無法寫入。

不支援的內容

支援 MySQL 和 PostgreSQL,暫不支援 SQL Server

Cloud SQL 可以執行 MySQL、PostgreSQL 和 SQL Server。AgentsRoom 能經由代理訪問前兩種,目前還沒有 SQL Server 客戶端。自帶專用代理的 AlloyDB 同樣不在支援範圍內。

下一個支援哪種引擎或服務,取決於大家提出的需求。如果你用的那個不在其中,請在公開待辦裡說一聲是哪一個,我們會把它計入。

申請你的資料庫引擎
AI 代理 + Cloud SQL

代理也能查詢它,唯讀

db_listdb_schemadb_querydb_connection_newdb_connection_save

連線建好之後,AI 程式設計代理經由 AgentsRoom MCP 只需說出連線名即可使用:db_list,db_schema 用來遍歷表和列,db_query 用來執行一條行數有上限的陳述式。代理也可以自己註冊一個 Cloud SQL 連線,用 db_connection_new 或 db_connection_save,給出執行個體連線名即可。

代理提出請求時,由 AgentsRoom 自己啟動代理程序,所以代理永遠不用接觸 Google 憑證、資料庫密碼或埠號。傳回去的只有結果集。寫入需要一個可寫的連線,以及預設關閉的「允許代理寫入」設定。

一個針對正式環境副本做除錯的代理,讀到的是能解釋這個 bug 的那幾行資料:沒有會洩漏進它上下文的憑證,應用一關閉,也沒有任何通往資料庫的路徑。

常見問題

怎樣連線一個只有私有 IP 的 Cloud SQL 執行個體?

新建一個 MySQL 或 PostgreSQL 連線,在「經由」裡選 Google Cloud SQL,填上執行個體連線名並勾選「私有 IP」。AgentsRoom 會帶上 --private-ip,在一個迴環埠上啟動 Cloud SQL Auth Proxy,並讓客戶端連到它。你的機器必須能到達執行個體所在的 VPC,例如透過 VPN 或 Interconnect。

AgentsRoom 會儲存服務帳號金鑰嗎?

不會。代理由 gcloud auth application-default login 在你的機器上建立的 Application Default Credentials 授權。AgentsRoom 儲存的是執行個體連線名和兩個選項,其中沒有任何一項是憑證。

可以不用資料庫密碼來連線嗎?

可以,使用 IAM 資料庫身份驗證。在連線裡勾選它,代理就會帶著 --auto-iam-authn 執行,用你的 Google 身份登入,密碼欄位隨之消失,使用者就是你的 IAM 資料庫使用者。執行個體必須已啟用 IAM 身份驗證,並且已建立該使用者。

需要安裝什麼?

Cloud SQL Auth Proxy 2 版(gcloud components install cloud-sql-proxy,或 Google 的獨立下載),以及用於 Application Default Credentials 的 gcloud 登入。gcloud 本身只有「列出我的執行個體」按鈕才需要。

gcloud 登入過期會怎樣?

代理會拒絕連線並把原因寫進日誌。AgentsRoom 讀取這份日誌,顯示一條通俗的提示,告訴你執行 gcloud auth application-default login,而不是丟給你一個乾巴巴的連線錯誤。然後重試即可。

用的是哪個本地埠,誰能訪問到它?

連線開啟時由作業系統挑一個空閒埠,而代理只監聽 127.0.0.1。區域網裡的任何裝置都夠不到它,連線關閉或應用退出時,代理也隨之停止。

支援哪些 Cloud SQL 引擎?

Cloud SQL for MySQL 和 Cloud SQL for PostgreSQL。Cloud SQL for SQL Server 暫不支援,因為 AgentsRoom 還沒有 SQL Server 客戶端;請在公開待辦裡提出,我們會把它計入。

能在 Windows 和 Linux 上用嗎?

能。cloud-sql-proxy 在 macOS、Windows 和 Linux 上都是原生二進位制檔案,AgentsRoom 在這三個系統上以同樣的方式啟動它。手機應用會列出同樣的連線,並經由你的桌面版以唯讀方式查詢它們。

AI 代理可以經由代理程序查詢資料庫嗎?

可以,預設唯讀。代理經由 AgentsRoom MCP 按名字指定一個已儲存的連線,由應用啟動代理程序並自己執行陳述式,傳回去的只有結果集。AI 代理從不會拿到 Google 憑證或資料庫密碼,而且除非該連線可寫、並且你為它開啟了「允許代理寫入」,否則 db_query 會拒絕任何非讀取的操作。

你可能還喜歡

查詢你的私有 Cloud SQL 執行個體

下載 AgentsRoom,選好你的 Cloud SQL 執行個體,用你自己的 gcloud 登入,經由 Cloud SQL Auth Proxy 查詢它:不用堡壘機 VM,沒有公網 IP,磁碟上也沒有金鑰。

免費下載

配套應用:隨時隨地監控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

獲取擴充功能
Chrome Web Store

把 Bug 和需求直接傳送到您的公開待辦清單。

多專案管理
多供應商
多代理執行
即時狀態
檔案差異與提交
行動應用
即時預覽
代理團隊
瀏覽器自動化
Backlog 驅動開發
提示詞庫
技能庫
檢視所有功能