仙kisenon

接続文字列

Kisenon エンドポイントの形式、TLS、ロールとパスワードのルール。

すべての Kisenon エンドポイントは、標準的な postgresql:// URI を公開します。

postgresql://<role>:<pwd>@<endpoint_id>.<region>.kisenon.com:5432/<database>?sslmode=require

構成要素

フィールド意味
<role>ブランチ上に作成された Postgres ロール。エンドポイントカードには自動作成された app ロールが表示されます。SQL で追加できます。
<pwd>ロールのパスワード。作成時に一度だけ表示されます。SQL でローテーションします。
<endpoint_id>エンドポイントごとに安定(例 5e0c7d1a-8b2f-4e36-9a41-c7d2e8f03b15)。SNI でルーティングされます。
<region>プロジェクトのリージョンスラッグ — 現在は usc1(米国中部、GCP)。ハードコードではなく導出されます。リージョン を参照してください。
kisenon.comデータプレーンの apex。TLS SNI 経由でエンドポイントにルーティングします。
5432標準の Postgres ポート。
<database>デフォルトは main。CREATE DATABASE で追加します。
?sslmode=requireTLS は必須。require は暗号化しますが、ほとんどのドライバーはこのモードではサーバー証明書をチェックしません。サーバー証明書の検証 を参照してください。

TLS

エンドポイントは *.<region>.kisenon.com 向けの Let's Encrypt 証明書で TLS を終端するため、 カスタム CA は不要です。

Kisenon が発行する接続文字列(コンソールの Connection string 形式、keon connection-string、 API)は sslmode=require を使います。接続は暗号化されますが、require ではほとんどの ドライバーがサーバー証明書をチェックしません。すべてのドライバーが受け付ける唯一の値である ため、これをデフォルトとしています。

サーバー証明書の検証

ドライバーに証明書チェーン と ホスト名の両方をチェックさせるには、ドライバーごとの パラメーターを使ってください。コンソールのドライバー別の形式は、すでにこれを使っています。

ドライバーパラメーター
psql などの libpq ツール(libpq 16 以上)sslmode=verify-full&sslrootcert=system
Python: psycopg 3、psycopg2、SQLAlchemy、Djangosslmode=verify-full&sslrootcert=system(下記のバイナリ wheel を参照)
Node.js: pg、Drizzle、postgres.jssslmode=verify-full
Prisma 6 および 7sslmode=verify-full&sslaccept=strict
Go: pgx v5.7.0 以上、lib/pq v1.12.0 以上sslmode=verify-full&sslrootcert=system
Go: それより古い pgx または lib/pqsslmode=verify-full
Java: JDBC、Springsslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory
.NET: Npgsql、EF CoreSSL Mode=VerifyFull
@kisenon/serverless追加は不要です。HTTPS/WebSocket で接続し、sslmode は無視します。

つまずきやすい点:

  • 16 より古い libpq は sslrootcert=system を理解しません。その場合は意図的な フォールバックとして sslmode=require を使ってください。暗号化はされますが、検証はされません。
  • Node.js のドライバーに sslrootcert=system を渡さないでください。 pg(およびそれを使う Prisma 7)は system という名前のファイルを読もうとして失敗します。postgres.js はこれを サーバーに送り、サーバーが接続を拒否します。
  • Python のバイナリ wheel(psycopg[binary]、psycopg2-binary)は独自の OpenSSL を同梱して おり、そのシステムトラストストアは空です。そのため sslrootcert=system は certificate verify failed で失敗します。SSL_CERT_FILE で OS のバンドルを指定してください。 Debian/Ubuntu では SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt です。パスは他のシステムでは 異なります。
  • Windows には PEM 形式の信頼ストアがないため、libpq ベースのクライアント (psql、psycopg、Ruby の pg gem)では sslrootcert=system が certificate verify failed で失敗します。代わりに sslrootcert に CA バンドルファイルを指定してください。 Python では certifi を使います: pip install certifi のうえ sslrootcert=certifi.where() (どの OS でも動くため、コンソールの Python 形式はこれを使っています)。psql や Rails では https://curl.se/ca/cacert.pem から Mozilla のバンドルをダウンロードし、そのパスを渡します: sslrootcert=C:\certs\cacert.pem。
  • Prisma 6 は、sslmode の値にかかわらず、sslaccept=strict を設定しない限り証明書を チェックしません。
  • postgres.js は sslmode=require では証明書をチェックしません。
  • JDBC は sslmode=verify-full だけだと ~/.postgresql/root.crt を探します。 sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory を指定すると、代わりに JVM のトラストストアを使います。

プロキシがエンドポイントへルーティングする仕組み

データプレーンのプロキシは、2 つのシグナルから、接続がどのエンドポイントに属するかを順番 に判断します。

  1. クライアントが送る場合は、neon.endpoint_id の スタートアップオプション。
  2. フォールバックとして、TLS の SNI ホスト名(<endpoint_id>.<region>.kisenon.com)。

ルーティングにユーザー名フィールドは 参照されません — ブランチが定義する任意のロールを 選んでください。コンソールが生成する接続文字列はホスト名にエンドポイントを含むので、自動 的に SNI 経由でルーティングされ、追加で何かを設定する必要はありません。

クライアントが SNI でエンドポイントを提示できない場合にのみ、neon.endpoint_id を明示的 に渡してください — 例えば Server Name 拡張を送らない TLS スタックや、ホストを書き換える トンネルなどです。ほとんどの Postgres ドライバはデフォルトで SNI を送るので、これが必要に なることはまれです。

接続プーリング

プーリングは GA でデフォルトオン です — すべてのエンドポイントは、直接ホストと並んで プール化ホストを持ちます(2026-07-18 以降)。

プール化ホストは <endpoint_id>-pooler.<region>.kisenon.com です — 同じエンドポイントで、 ホストラベルに -pooler が挿入されたもの — ポート 5432 で sslmode=require を使用します。

postgresql://<role>:<pwd>@<endpoint_id>-pooler.<region>.kisenon.com:5432/<database>?sslmode=require

コンソールの Connect パネルと API レスポンスはどちらも、直接の connection_uri と並んで connection_uri_pooled を渡します。

プーラーは トランザクションプーリング モード(コンピュートごとの PgBouncer サイドカー) で動作します。これは、各トランザクションがサーバー接続を借りてすぐに返せる、多数の短命な 接続 — サーバーレス関数、エッジランタイム、エージェント — に理想的です。

代わりに直接(プール化されていない :5432)接続を使うべきなのは、次が必要な場合です。

  • LISTEN / NOTIFY。
  • セッションレベルのアドバイザリロック。
  • 単一のトランザクションを超えて存続する必要のあるセッションの SET / GUC。
  • サーバー側のプリペアドステートメント。

直接の connection_uri は常に利用可能で、決して削除されないので、これらは以前とまったく 同じように動作し続けます。直接接続の前段に置くクライアント側プール(PgBouncer やドライバ 組み込みのプール)も引き続き有効です。

エンドポイントをプーリングから除外するには、作成時に pooler_enabled: false フィールドを 使うか、PATCH /v1/endpoints/{endpointId} を使用します。デフォルトは true です。

複数のエンドポイント

同じブランチ上に複数のエンドポイントを生成できます。それらはストレージを共有しますが、接続 制限とキャッシュは独立しています。次の用途で分離するのに使えます。

  • アプリと分析のトラフィック。
  • 読み取りレプリカ(ブランチ上の任意のエンドポイントは、書き込まなければ本質的に読み取り レプリカです)。
  • 開発ブランチ上の環境ごとのエンドポイント。
接続文字列 · Kisenon