メインコンテンツにスキップ

TCPトンネル

Prisma Postgres には、ローカルデータベースワークフロー向けに設計された認証プロキシである @prisma/ppg-tunnel パッケージを使用して、TCPトンネル経由で安全にアクセスできます。このパッケージは、ローカルTCPサーバーを介してPrisma Postgresへのセキュアな接続を確立し、トラフィックルーティングと認証を自動的に処理しながら、セキュアなアクセスを可能にします。

注記

これは Prisma Postgres の アーリーアクセス 機能です。本番環境での使用は推奨されておらず、アプリケーションレベルのアクセスを目的としたものではありません。

アーリーアクセス期間中は、TCPトンネルの使用は無料です。

前提条件

  • Node.js がマシンにインストールされていること
  • Prisma Postgres データベース接続文字列が DATABASE_URL という環境変数として設定されていること

環境変数のエクスポート

トンネルは、DATABASE_URL 環境変数が Prisma Postgres インスタンスの接続URLに設定されていることを想定しています。.env ファイルに DATABASE_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 クライアント(psqlTablePlusDataGrip などのGUI)を使用して Prisma Postgres エディターに接続できます。これを行うには、上記の出力から hostport のみを提供する必要があります。TCPトンネルは、Prisma Postgres 接続URLのAPIキーを介して認証を処理するため、usernamepassword の値は省略できます。

ホストとポートのカスタマイズ

デフォルトでは、トンネルは 127.0.0.1 でリッスンし、ランダムなポートを割り当てます。Prisma Postgres データベースへのアクセスを提供するものであるため、信頼されたネットワーク内でのみ公開する必要があります。--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 データベースへの直接アクセス権を持っていることを確認してください。