PostgreSQLを使用したOracle Cloud Infrastructure DatabaseでのSecure Socket Layerの構成
はじめに
Oracle Cloud Infrastructure Database with PostgreSQL (OCI Database with PostgreSQL)は、データベース・インスタンスのSecure Socket Layer (SSL)暗号化のみをサポートしています。SSLを使用すると、アプリケーションとPostgreSQLデータベース・インスタンス間の接続を暗号化できます。
SSL暗号化は、PostgreSQLOCI Database with PostgreSQLインスタンスを使用してOCI Databaseへのクライアント接続を保護し、送信中にデータを保護するために不可欠です。hostssl
接続タイプを構成し、sslmode
パラメータを使用することで、セキュリティを強化するためのSSL検証のレベルを制御できます。デフォルトでは、TLSv1.2
はクライアント接続とサーバー接続の両方に対して有効になっており、業界標準の慣行に準拠しています。完全にセキュアで準拠したPostgreSQL環境では、これらのSSL設定を利用することが重要です。
セキュアなクライアント接続の場合、PostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseでは、pg_hba.conf
ファイルのhostssl
接続タイプのみが許可されます。hostssl
エントリは、SSLを使用してTCP/IP接続を暗号化し、クライアントが認証にSSLを使用することを要求します。SSL検証のレベルは、require
、verify-ca
、verify-full
などのオプションを含むsslmode
パラメータで指定することもできます。
Currently, both the ssl_max_protocol_version
and ssl_min_protocol_version
parameters are configured in OCI Database with PostgreSQL to use TLSv1.2
for both client and server connections.ただし、OCI Database with PostgreSQLでは、これらのパラメータは読取り専用システム変数であるため、特定のTLSバージョンを適用できないことに注意してください。
PostgreSQLデータベースでのSSLサポートの詳細は、SSLを使用したTCP/IP接続の保護を参照してください。
ノート: SSLサポートは、PostgreSQLのすべてのOCIリージョンで使用できます。
目的
- SSL暗号化を使用してOCI Database with PostgreSQLに接続し、データベース・インスタンスを保護します。これは、暗号化されたTCP/IP接続を確保するために
pg_hba.conf
ファイルでhostssl
接続タイプを構成することの重要性を強調し、sslmode
パラメータがSSL検証レベルをどのように制御するかを示します。さらに、このチュートリアルでは、クライアント接続とサーバー接続の両方のTLSバージョン構成について説明します。
SSLモード
次の表に、様々なsslmode
値によって対処されるリスクと、それぞれに対するセキュリティへの影響および関連するオーバーヘッドを示します。
sslmode | 盗聴保護 | MITM保護 | 文 |
---|---|---|---|
無効化 | × | × | セキュリティは気にしないし、暗号化のオーバーヘッドは払いたくない。 |
許可 | 場合による | × | セキュリティは気にしませんが、暗号化のオーバーヘッドはサーバーが要求した場合にお支払いします。 |
優先 | 場合による | × | 暗号化は気にしませんが、暗号化をサポートしている場合は、暗号化のオーバーヘッドを支払う必要があります。 |
次の | ○ | × | データを暗号化して、オーバーヘッドを受け入れます。ネットワークは、自分が望むサーバに常に接続することを保証します。 |
検証 | ○ | CAポリシーに依存 | データを暗号化し、オーバーヘッドを受け入れます。信頼しているサーバに接続したい。 |
完全確認 | ○ | ○ | データを暗号化し、オーバーヘッドを受け入れます。信頼するサーバーに接続し、それが指定したサーバーであることを確認したい。 |
様々なsslmodes
の詳細は、表31-1 SSL MODE DESCRIPTIONSを参照してください。
OCI Database with PostgreSQLでは、規制およびコンプライアンス要件のために非SSL接続がサポートされていないため、sslmode
をrequire
以上(verify-ca
またはverify-full
)に設定する必要があります。OCIのコンプライアンス標準に従って、すべての転送中接続が確実に暗号化されるようにするには、SSL接続が必要です。
OCI Database with PostgreSQLデータベース・ノードで使用される証明書は、OCI証明書サービスを介して管理されるプライベート認証局(CA)によって発行され、標準化されたOCI承認済構成に準拠します。この方法は、従来の自己署名証明書とは異なります。この証明書では、多くの場合、OpenSSLなどのツールを使用して生成された非標準設定が使用されます。
様々なSSLモードを使用したPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseへの接続の確立
SSLを使用しないPostgreSQLOCI Database with PostgreSQLを使用したOCI Databaseへの接続試行は、次のメッセージで拒否されます。
no pg_hba.conf entry for host "yy.yy.yy.yy", user "xxxxx", database "zzzzzz", no encryption
前述のエラー・メッセージが表示される場合は常に、SSLモードの値を確認し、sslmode
パラメータをrequire
以上に設定して問題を解決することをお薦めします。
-
require
SSLモードを設定します。このモードでは、接続がSSLを使用するように強制されますが、サーバーの証明書は検証されません。
psql "sslmode=require host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
-
verify-ca
SSLモードで認証局を検証します。このモードではSSLが強制され、サーバー証明書は信頼できるCAに対して検証されます。サーバー証明書がホスト名と一致するかどうかは検証されません。
psql "sslmode=verify-ca sslrootcert=<parent_directory>/<dbsystem.pub> host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
sslrootcert
:データベース・システムの接続詳細セクションからCA証明書をダウンロードし、次の場所に保存します:<parent_directory>/<dbsystem.pub>
。このファイルには信頼できるCA証明書が含まれています。これにより、サーバー証明書が有効なCAによって署名されます。
-
verify-full
SSLモードで完全検証。このモードでは、SSLを強制し、信頼できるCAに対してサーバー証明書を検証し、サーバー証明書が接続先のホスト(接続文字列のホスト名)と一致するかどうかもチェックします。
psql "sslmode=verify-full sslrootcert=<parent_directory>/<dbsystem.pub> host=<endpoint_fqdn> dbname=<database_name> user=<user_name>"
sslrootcert
:データベース・システムの接続詳細セクションからCA証明書をダウンロードし、次の場所に保存します:<parent_directory>/<dbsystem.pub>
。このファイルには信頼できるCA証明書が含まれています。
ホスト名一致:これは、両方のサーバー証明書がOCI証明書サービスを介して管理されるプライベートCAによって署名され、証明書が予想されるホスト名と一致していることを確認するため、最もセキュアなオプションです。
PostgreSQLOCI Database with PostgreSQLを使用したOCI DatabaseでのTLSバージョンの決定
次の図は、PostgreSQLOCI Database with PostgreSQLインスタンスを使用したOCI Databaseへの接続時の接続の暗号化ステータスを示しています。
次の問合せを実行して、pg_settings
から情報を取得できます。
次の問合せを使用して、PostgreSQLOCI Database with PostgreSQLインスタンスのSSL使用を使用したOCI Databaseの詳細情報をプロセス、クライアントおよびアプリケーション別に収集できます。
システム・ビューpg_stat_ssl
を使用して、すべての接続のSSLステータスを確認できます。詳細は、表27.8. pg_stat_ssl
ビューを参照してください。
異なるGUIツールでのSSLモードの構成
OCI PostgreSQLデータベースへの接続に使用できるオープンソースのGUIツールを次に示します。このタスクでは、OCI PostgreSQLデータベースへの接続時に接続の問題を回避するために、これらのツールでsslmode
をrequire
以上に構成する方法を示します。
-
pgAdmin
-
pgAdminで、「サーバー」、「登録」、「サーバー」に移動し、必要なデータベース接続の詳細を入力します。
-
「パラメータ」をクリックし、「SSL」セクションに移動して、SSLモード設定を構成できます。
-
セキュアな接続要件に準拠するために、使用可能なドロップダウン・メニューから
sslmode
がrequire
または上位レベル(verify-ca
やverify-full
など)に設定されていることを確認します。
-
-
DBeaver
-
DBeaverで、「作成」に移動して「接続」をクリックします。
-
データベース・タイプのリストからPostgreSQLを選択し、「次へ」をクリックして続行します。
-
「接続設定」で、接続設定内の「SSL」セクションを選択してSSLパラメータを構成します。
-
「SSLモード」を
require
に設定します。
-
確認
- 作者 - Kaviya Selvaraj (シニア・メンバー・テクニカル・スタッフ)
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Configure Secure Socket Layer in OCI Database with PostgreSQL
G39565-01
Copyright ©2025, Oracle and/or its affiliates.