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検証のレベルは、requireverify-caverify-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モード

次の表に、様々なsslmode値によって対処されるリスクと、それぞれに対するセキュリティへの影響および関連するオーバーヘッドを示します。

sslmode 盗聴保護 MITM保護
無効化 × × セキュリティは気にしないし、暗号化のオーバーヘッドは払いたくない。
許可 場合による × セキュリティは気にしませんが、暗号化のオーバーヘッドはサーバーが要求した場合にお支払いします。
優先 場合による × 暗号化は気にしませんが、暗号化をサポートしている場合は、暗号化のオーバーヘッドを支払う必要があります。
次の × データを暗号化して、オーバーヘッドを受け入れます。ネットワークは、自分が望むサーバに常に接続することを保証します。
検証 CAポリシーに依存 データを暗号化し、オーバーヘッドを受け入れます。信頼しているサーバに接続したい。
完全確認 データを暗号化し、オーバーヘッドを受け入れます。信頼するサーバーに接続し、それが指定したサーバーであることを確認したい。

様々なsslmodesの詳細は、表31-1 SSL MODE DESCRIPTIONSを参照してください。

OCI Database with PostgreSQLでは、規制およびコンプライアンス要件のために非SSL接続がサポートされていないため、sslmoderequire以上(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以上に設定して問題を解決することをお薦めします。

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データベースへの接続時に接続の問題を回避するために、これらのツールでsslmoderequire以上に構成する方法を示します。

確認

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。