跳到主要內容

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 環境變數

export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"

API_KEY 預留位置替換為您的 Prisma Postgres 實例的 API 金鑰值。

啟動 TCP 隧道

若要啟動代理伺服器,請執行以下命令

npx @prisma/ppg-tunnel
顯示CLI結果
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,如 TablePlusDataGrip)連線到您的 Prisma Postgres 編輯器。若要執行此操作,您只需要提供上述輸出中的 hostport。TCP 隧道將透過您的 Prisma Postgres 連線 URL 中的 API 金鑰處理身份驗證,因此您可以省略 usernamepassword 的值。

自訂 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 資料庫。