SSL モードで PostgreSQL に接続する
    
    Shihab Sikder
    2023年10月12日
    
    PostgreSQL
    PostgreSQL SSL
    
 
Postgres は、データベースに接続しようとしているときに、SSL を使用して接続のセキュリティを確認します。HTTP ではデフォルトで無効になっていますが、HTTPS では、Postgres データベースで操作を実行するために接続の SSL モードが必要です。
接続がプライベートでない場合、複数の攻撃パラメータが存在する可能性があります。誰でも簡単にデータベースの request-response を介してスニッフィングツールを使用できます。
PostgreSQL の SSL モードとは
Postgres は、さまざまなタイプの SSL モードを提供します。まず、Postgres の一般的な接続文字列を見てみましょう。
const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>'
これで、次のようにパラメータ sslmode を追加できます。
const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>?sslmode=<ssl_mode>'
Postgres が提供する SSL モードのリストは次のとおりです。
| sslmode | 盗聴防止 | MITM 保護 | 説明 | 
|---|---|---|---|
| disable | いいえ | いいえ | セキュリティについては気にしません。データは暗号化されません。 | 
| allow | 多分 | いいえ | セキュリティを気にせず、接続を暗号化します。 | 
| prefer | 多分 | いいえ | 暗号化の使用を強制することはありません。サーバーが暗号化のオーバーヘッドをサポートしている場合、サーバーは暗号化します。 | 
| require | はい | いいえ | データを暗号化すると、暗号化のオーバーヘッドが発生し、ネットワークはユーザーが接続したい正しいサーバーを保証します。 | 
| verify-ca | はい | CA ポリシーに依存します | データ、暗号化のオーバーヘッドを暗号化し、常に信頼できるサーバーに接続します。 | 
| verify-full | はい | はい | データは暗号化され、ユーザーはオーバーヘッドを受け入れ、ネットワークとサーバーの両方が信頼され、要求された特定のサーバーにのみ接続します。 | 
このフラグは環境変数に設定することもできます。
PGSSLMODE=verify-full PGSSLROOTCERT=ca.pem
ここでは、ca.pem が鍵となります。CA から収集する必要があります。CA は証明書機関の略です。
Postgres SSL モードでサーバーを完全に構成するには、このブログの手順に従ってください。
これは、SSL モードに関する Postgres の公式ドキュメントからのメモです。
Using NULL-SHA or NULL-MD5 ciphers, authentication can be done without any encryption overhead. A man-in-the-middle, on the other hand, might read and pass communications between the client and the server. In addition, as compared to the overhead of authentication, encryption has a low overhead. NULL ciphers are not recommended for these reasons.
また、公式ドキュメントこちらをご覧ください。彼らは、SSL モードを使用しながら証明書に自己署名する方法を示しました。
        チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
    
著者: Shihab Sikder
    
