TCP 隧道
Prisma Postgres 可以透過 TCP 隧道安全地存取,使用 @prisma/ppg-tunnel
套件,這是一個專為本地資料庫工作流程設計的身份驗證代理伺服器。此套件透過本地 TCP 伺服器建立與 Prisma Postgres 的安全連線,實現安全存取,同時自動處理流量路由和身份驗證。
這是 Prisma Postgres 的 Early Access 功能。不建議用於生產環境,也不適用於應用程式層級的存取。
在 Early Access 期間,TCP 隧道的使用將免費。
先決條件
- 您的機器上已安裝 Node.js
- Prisma Postgres 資料庫連線字串已設定為名為
DATABASE_URL
的環境變數
匯出環境變數
隧道預期您已將以下 DATABASE_URL
環境變數設定為您的 Prisma Postgres 實例的連線 URL。
若要在終端機工作階段中暫時匯出 DATABASE_URL
環境變數
- macOS
- Linux
- Windows
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
set DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
將 API_KEY
預留位置替換為您的 Prisma Postgres 實例的 API 金鑰值。
啟動 TCP 隧道
若要啟動代理伺服器,請執行以下命令
npx @prisma/ppg-tunnel
Prisma Postgres auth proxy listening on 127.0.0.1:52604 🚀
Your connection is authenticated using your Prisma Postgres API key.
...
==============================
hostname: 127.0.0.1
port: 52604
username: <anything>
password: <none>
==============================
這將在隨機指定的 TCP 連接埠上啟動隧道。代理伺服器會自動處理身份驗證,因此任何資料庫認證都會被接受。隧道也會加密流量,這表示用戶端應設定為不需要 SSL。
您現在可以使用您最愛的 PostgreSQL 用戶端(例如 psql
或 GUI,如 TablePlus 或 DataGrip)連線到您的 Prisma Postgres 編輯器。若要執行此操作,您只需要提供上述輸出中的 host
和 port
。TCP 隧道將透過您的 Prisma Postgres 連線 URL 中的 API 金鑰處理身份驗證,因此您可以省略 username
和 password
的值。
自訂 host 和 port
預設情況下,隧道會監聽 127.0.0.1
並指派隨機連接埠。由於它提供對您的 Prisma Postgres 資料庫的存取,因此應僅在受信任的網路內公開。您可以使用 --host
和 --port
旗標指定自訂 host 和 port
npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432
後續步驟
本地隧道讓您可以從第三方資料庫編輯器(如 Postico、DataGrip、TablePlus 和 pgAdmin)存取 Prisma Postgres。在此章節中了解更多資訊。
安全性考量
使用 TCP 隧道時,請記住以下事項
- 隧道不支援結構描述管理(即 Prisma Migrate 之外的 DDL 查詢)。
- 隧道不應公開給不受信任的網路。
- 務必安全地儲存 API 金鑰,並避免將其硬式編碼。
- 確保只有必要的用戶可以直接存取 Prisma Postgres 資料庫。