

# SSL/TLS を使用して RDS for PostgreSQL への接続を保護する
<a name="PostgreSQL.Concepts.General.Security"></a>

RDS for PostgreSQL では、PostgreSQL DB インスタンスの Secure Socket Layer (SSL) 暗号化がサポートされています。SSL を使用して、アプリケーションと PostgreSQL DB インスタンスとの PostgreSQL 接続を暗号化できます。また、PostgreSQL DB インスタンスへのすべての接続に SSL の使用を強制することができます。RDS for PostgreSQL では、SSL の後継プロトコルである Transport Layer Security (TLS) もサポートされています。

Amazon RDS およびデータ保護 (SSL/TLS を使用した接続の暗号化を含む) の詳細については、「[Amazon RDS でのデータ保護](DataDurability.md)」を参照してください。

**Topics**
+ [PostgreSQL DB インスタンスで SSL を使用する](PostgreSQL.Concepts.General.SSL.md)
+ [新しい SSL/TLS 証明書を使用して PostgreSQL DB インスタンスに接続するようにアプリケーションを更新する](ssl-certificate-rotation-postgresql.md)

# PostgreSQL DB インスタンスで SSL を使用する
<a name="PostgreSQL.Concepts.General.SSL"></a>

Amazon RDS は、PostgreSQL DB インスタンスの Secure Socket Layer (SSL) 暗号化をサポートします。SSL を使用して、アプリケーションと PostgreSQL DB インスタンスとの PostgreSQL 接続を暗号化できます。デフォルトでは、RDS for PostgreSQL は SSL/TLS を使用し、すべてのクライアントが SSL/TLS を使用して接続することを想定していますが、必須にすることもできます。RDS for PostgreSQL は、Transport Layer Security (TLS) バージョン 1.1、1.2、および 1.3 をサポートしています。

SSL サポートおよび PostgreSQL データベースの一般情報については、PostgreSQL ドキュメントの「[SSL Support](https://www.postgresql.org/docs/11/libpq-ssl.html)」を参照してください。JDBC を介した SSL 接続の使用については、PostgreSQL ドキュメントの「[Configuring the Client](https://jdbc.postgresql.org/documentation/head/ssl-client.html)」を参照してください。

PostgreSQL 用の SSL は、すべての AWS リージョンで利用が可能です。インスタンスの作成時に、PostgreSQL DB インスタンス用の SSL 証明書が、Amazon RDS により作成されます。SSL 証明書認証を有効にした場合、SSL 証明書には、なりすまし攻撃から保護するために、SSL 証明書の共通名 (CN) として DB インスタンスのエンドポイントが含まれます。

**Topics**
+ [SSL 経由での PostgreSQL DB インスタンスへの接続](#PostgreSQL.Concepts.General.SSL.Connecting)
+ [PostgreSQL DB インスタンスへの SSL 接続を必須にする](#PostgreSQL.Concepts.General.SSL.Requiring)
+ [SSL 接続ステータスを確認する](#PostgreSQL.Concepts.General.SSL.Status)
+ [RDS for PostgreSQL の SSL 暗号スイート](#PostgreSQL.Concepts.General.SSL.Ciphers)

## SSL 経由での PostgreSQL DB インスタンスへの接続
<a name="PostgreSQL.Concepts.General.SSL.Connecting"></a>

**SSL を使用して PostgreSQL DB インスタンスに接続するには**

1. 証明書をダウンロードします。

   証明書のダウンロードについては、[SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md) を参照してください。

1. SSL 経由の PostgreSQL DB インスタンスへの接続

   SSL を使用して接続するとき、クライアントでは証明書チェーンを検証するかどうかを選択できます。接続パラメータで `sslmode=verify-ca` または `sslmode=verify-full` を指定すると、RDS CA 証明書が信頼ストアに存在するか、または接続 URL で参照されることをクライアントは要求します。この要求は、データベース証明書に署名する証明書チェーンを検証するためのものです。

   psql や JDBC など、クライアントに SSL サポートが設定されている場合、クライアントは初期にデフォルトで SSL を使用してデータベースへの接続を試みます。クライアントが SSL を使用して接続できない場合、SSL を使用しない接続に戻ります。使用されるデフォルトの `sslmode` モードは、libpq ベースのクライアント (psql など) と JDBC では異なります。libpq ベースのクライアントおよび JDBC クライアントはデフォルトで `prefer` に設定されます。

   `sslrootcert` パラメータを使用して証明書を参照します (`sslrootcert=rds-ssl-ca-cert.pem` など)。

以下は、証明書検証で SSL を使用して PostgreSQL DB インスタンスに接続するために `psql` を使用する例です。

```
$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com 
    port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"
```

## PostgreSQL DB インスタンスへの SSL 接続を必須にする
<a name="PostgreSQL.Concepts.General.SSL.Requiring"></a>

`rds.force_ssl` パラメータを使用することで、PostgreSQL DB インスタンスへの接続に SSL の使用を必須にすることができます。RDS for PostgreSQL バージョン 15 以降では、`rds.force_ssl` パラメータのデフォルト値は 1 (オン) です。その他すべての RDS for PostgreSQL メジャーバージョン 14 以前では、このパラメータのデフォルト値は 0 (オフ) です。`rds.force_ssl` パラメータを 1 (オン) に設定すれば、DB クラスターへの接続で SSL/TLS を必須にすることができます。`rds.force_ssl` パラメータを 1 に設定すれば、DB インスタンスへの接続に SSL を必須にすることができます。

このパラメータの値を変更するには、カスタム DB パラメータグループを作成する必要があります。次に、カスタム DB パラメータグループ内で `rds.force_ssl` の値を `1` に変更して、この機能をオンにします。RDS for PostgreSQL DB インスタンスを作成する前にカスタム DB パラメータグループを準備する場合は、作成プロセス中に (デフォルトのパラメータグループではなく) そのパラメータグループを選択できます。RDS for PostgreSQL DB インスタンスが既に実行された後でこれを行う場合は、インスタンスがカスタムパラメータグループを使用するようにインスタンスを再起動する必要があります。詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

DB インスタンスで `rds.force_ssl` 機能がアクティブになっている場合、SSL を使用していない接続試行は拒否され、次のメッセージが表示されます。

```
$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser
psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off
```

## SSL 接続ステータスを確認する
<a name="PostgreSQL.Concepts.General.SSL.Status"></a>

接続の暗号化ステータスは、DB インスタンスに接続するときにログオンバナーに表示されます。

```
Password for user master: 
psql (10.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.
postgres=>
```

また、`sslinfo` エクステンションをロードしてから、`ssl_is_used()` 関数を呼び出して、SSL が使用されているかどうかを調べることもできます。この関数は、この接続が SSL を使用している場合に `t` を返し、それ以外の場合に `f` を返します。

```
postgres=> CREATE EXTENSION sslinfo;
CREATE EXTENSION
postgres=> SELECT ssl_is_used();
ssl_is_used
---------
t
(1 row)
```

詳細については、次のクエリを使用して `pg_settings` から情報を取得できます。

```
SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%';
             Parameter name             |                  value                  |                      short_desc
----------------------------------------+-----------------------------------------+-------------------------------------------------------
 ssl                                    | on                                      | Enables SSL connections.
 ssl_ca_file                            | /rdsdbdata/rds-metadata/ca-cert.pem     | Location of the SSL certificate authority file.
 ssl_cert_file                          | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file.
 ssl_ciphers                            | HIGH:!aNULL:!3DES                       | Sets the list of allowed SSL ciphers.
 ssl_crl_file                           |                                         | Location of the SSL certificate revocation list file.
 ssl_dh_params_file                     |                                         | Location of the SSL DH parameters file.
 ssl_ecdh_curve                         | prime256v1                              | Sets the curve to use for ECDH.
 ssl_key_file                           | /rdsdbdata/rds-metadata/server-key.pem  | Location of the SSL server private key file.
 ssl_library                            | OpenSSL                                 | Name of the SSL library.
 ssl_max_protocol_version               |                                         | Sets the maximum SSL/TLS protocol version to use.
 ssl_min_protocol_version               | TLSv1.2                                 | Sets the minimum SSL/TLS protocol version to use.
 ssl_passphrase_command                 |                                         | Command to obtain passphrases for SSL.
 ssl_passphrase_command_supports_reload | off                                     | Also use ssl_passphrase_command during server reload.
 ssl_prefer_server_ciphers              | on                                      | Give priority to server ciphersuite order.
(14 rows)
```

また、次のクエリを使用して、RDS for PostgreSQL DB インスタンスの SSL 使用状況に関するすべての情報をプロセス、クライアント、およびアプリケーション別に収集することもできます。

```
SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type
   FROM pg_stat_ssl
   JOIN pg_stat_activity
   ON pg_stat_ssl.pid = pg_stat_activity.pid
   ORDER BY ssl;
 Database name | User name | ssl |  client_addr   |    application_name    |         backend_type
---------------+-----------+-----+----------------+------------------------+------------------------------
               |           | f   |                |                        | autovacuum launcher
               | rdsadmin  | f   |                |                        | logical replication launcher
               |           | f   |                |                        | background writer
               |           | f   |                |                        | checkpointer
               |           | f   |                |                        | walwriter
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      |                        | client backend
 rdsadmin      | rdsadmin  | t   | 127.0.0.1      | PostgreSQL JDBC Driver | client backend
 postgres      | postgres  | t   | 204.246.162.36 | psql                   | client backend
(8 rows)
```

SSL 接続に使用される暗号を識別するには、次のようにクエリを実行します。

```
postgres=> SELECT ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

`sslmode` オプションの詳細については、*PostgreSQL ドキュメント*の「[Database connection control functions](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)」を参照してください。

## RDS for PostgreSQL の SSL 暗号スイート
<a name="PostgreSQL.Concepts.General.SSL.Ciphers"></a>

PostgreSQL 設定パラメータ [ssl\$1ciphers](https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL) は、TLS 1.2 以下のバージョンを使用する際、SSL 接続で許可される暗号スイートのカテゴリを指定します。

 RDS for PostgreSQL 16 以降では、許可リストに登録された暗号スイートから特定の値を使用するように `ssl_ciphers` パラメータを変更できます。これは、データベースインスタンスの再起動を必要としない動的パラメータです。許可リストに登録された暗号スイートを表示するには、Amazon RDS コンソールまたは次の AWS CLI コマンドを使用します。

```
aws rds describe-db-parameters --db-parameter-group-name <your-parameter-group> --region <region> --endpoint-url <endpoint-url> --output json | jq '.Parameters[] | select(.ParameterName == "ssl_ciphers")'
```

次の表に、デフォルトの暗号スイートと、カスタム設定をサポートするバージョンの許可された暗号スイートの両方を示します。


| PostgreSQL エンジンのバージョン | デフォルトの ssl\$1cipher スイート値 | 許可リストに登録されたカスタム ssl\$1cipher スイート値 | 
| --- | --- | --- | 
| 18 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 17 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 16 | HIGH:\$1aNULL:\$13DES |  `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256` `TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` `TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256`  | 
| 15 | HIGH:\$1aNULL:\$13DES | カスタム ssl\$1ciphers はサポートされていません | 
| 14 | HIGH:\$1aNULL:\$13DES | カスタム ssl\$1ciphers はサポートされていません | 
| 13 | HIGH:\$1aNULL:\$13DES | カスタム ssl\$1ciphers はサポートされていません | 
| 12 | HIGH:\$1aNULL:\$13DES | カスタム ssl\$1ciphers はサポートされていません | 
| 11.4 以降のマイナーバージョン | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | カスタム ssl\$1ciphers はサポートされていません | 
| 11.1、11.2 | HIGH:MEDIUM:\$13DES:\$1aNULL | カスタム ssl\$1ciphers はサポートされていません | 
| 10.9 以降のマイナーバージョン | HIGH:MEDIUM:\$13DES:\$1aNULL:\$1RC4 | カスタム ssl\$1ciphers はサポートされていません | 
| 10.7 以前のマイナーバージョン | HIGH:MEDIUM:\$13DES:\$1aNULL | カスタム ssl\$1ciphers はサポートされていません | 

`TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384` 暗号スイートを使用するようにすべてのインスタンス接続を設定するには、次の例に示すようにパラメータグループを変更します。

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_ciphers',ParameterValue='TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',ApplyMethod=immediate"
```

この例では ECDSA 暗号を使用しています。この方式では、接続を確立するために、インスタンスが楕円曲線暗号 (ECC) に対応した認証機関を使用する必要があります。Amazon RDS が提供する認証機関の詳細については、「[認証機関](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/singWithRDS.SSL.html#UsingWithRDS.SSL.RegionCertificateAuthorities)」を参照してください。

使用中の暗号は、「[SSL 接続ステータスの決定](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status)」で説明されている方法で確認できます。

暗号の名前はコンテキストによって異なる場合があります。
+ パラメータグループで設定できる許可リストに登録された暗号は、その IANA 名で参照されます。
+ `sslinfo` および `psql` ログオンバナーは、OpenSSL 名を使用した暗号を参照します。

デフォルトでは、RDS for PostgreSQL 16 以降の `ssl_max_protocol_version` の値は TLS v1.3 です。TLS v1.3 は パラメータで指定された暗号設定を使用しないため、この `ssl_ciphers` パラメータの値を TLS v1.2 に設定する必要があります。値を TLS v1.2 として設定すると、接続は `ssl_ciphers` で定義した暗号のみを使用します。

```
aws rds modify-db-parameter-group --db-parameter-group-name <your-parameter-group> --parameters "ParameterName='ssl_max_protocol_version',ParameterValue='TLSv1.2',ApplyMethod=immediate"
```

データベース接続で SSL が使用されるようにするには、パラメータグループで `rds.force_ssl parameter` を 1 に設定します。パラメータとパラメータグループの詳細については、「[Amazon RDS のパラメータグループ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)」を参照してください。

# 新しい SSL/TLS 証明書を使用して PostgreSQL DB インスタンスに接続するようにアプリケーションを更新する
<a name="ssl-certificate-rotation-postgresql"></a>

Secure Socket Layer または Transport Layer Security (SSL/TLS) に使用される証明書には、通常、設定されたライフタイムがあります。サービスプロバイダーが認証局 (CA) 証明書を更新する際、クライアントでは、新しい証明書を使用するようにアプリケーションを更新する必要があります。以下で、クライアントアプリケーションが SSL/TLS を使用して、Amazon RDS for PostgreSQL DB インスタンスに接続されているかどうかの判別方法についての情報を参照できます。また、これらのアプリケーションが接続時にサーバーの証明書を検証しているかどうかを、確認する方法についても説明します。

**注記**  
SSL/TLS 接続の前にサーバー証明書を検証するように構成されたクライアントアプリケーションでは、クライアントのトラストストアに有効な CA 証明書を持つ必要があります。新しい証明書が必要となった場合は、クライアントトラストストアも更新を行います。

クライアントアプリケーションの信頼ストアで CA 証明書を更新した後、DB インスタンスで証明書をローテーションできます。これらの手順は、非本番環境でテストしてから、本番環境で実装することを強くお勧めします。

証明書のローテーションの詳細については、「[SSL/TLS 証明書のローテーション](UsingWithRDS.SSL-certificate-rotation.md)」を参照してください。証明書のダウンロードの詳細については、[SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md) を参照してください。PostgreSQL DB インスタンスで SSL/TLS を使用する方法については、「[PostgreSQL DB インスタンスで SSL を使用する](PostgreSQL.Concepts.General.SSL.md)」を参照してください。

**Topics**
+ [アプリケーションが SSL を使用して PostgreSQL DB インスタンスに接続しているかどうかの確認](#ssl-certificate-rotation-postgresql.determining-server)
+ [クライアントが接続するために証明書の検証を必要とするかどうかの確認](#ssl-certificate-rotation-postgresql.determining-client)
+ [アプリケーション信頼ストアの更新](#ssl-certificate-rotation-postgresql.updating-trust-store)
+ [各種アプリケーションでの SSL/TLS 接続の使用](#ssl-certificate-rotation-postgresql.applications)

## アプリケーションが SSL を使用して PostgreSQL DB インスタンスに接続しているかどうかの確認
<a name="ssl-certificate-rotation-postgresql.determining-server"></a>

DB インスタンスの設定で `rds.force_ssl` パラメータの値を確認します。デフォルトでは、バージョン 15 より前のバージョンの PostgreSQL を使用する DB インスタンスの `rds.force_ssl` パラメータは `0` (オフ) に設定されています。デフォルトでは、`rds.force_ssl` は、PostgreSQL バージョン 15 以降のメジャーバージョンを使用する DB インスタンスでは`1` (オン) に設定されています。`rds.force_ssl` パラメータが `1` (オン) に設定されている場合、クライアントは接続に SSL/TLS を使用する必要があります。パラメータグループの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

RDS PostgreSQL バージョン 9.5 以降のメジャーバージョンを使用していて、`rds.force_ssl` が `1` (オン) に設定されていない場合、`pg_stat_ssl` ビューに対してクエリを実行して SSL を使用している接続をチェックします。例えば次のクエリは、SSL 接続、および SSL を使用するクライアントに関する情報のみを返します。

```
SELECT datname, usename, ssl, client_addr 
  FROM pg_stat_ssl INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid
  WHERE ssl is true and usename<>'rdsadmin';
```

SSL/TLS 接続を使用する行のみが、接続に関する情報とともに表示されます。以下は出力例です。

```
 datname  | usename | ssl | client_addr 
----------+---------+-----+-------------
 benchdb  | pgadmin | t   | 53.95.6.13
 postgres | pgadmin | t   | 53.95.6.13
(2 rows)
```

このクエリでは、クエリ実行時点の接続のみが表示されます。結果が表示されなくても、SSL 接続を使用しているアプリケーションが存在しないわけではありません。それ以降に別の SSL 接続が確立される場合もあります。

## クライアントが接続するために証明書の検証を必要とするかどうかの確認
<a name="ssl-certificate-rotation-postgresql.determining-client"></a>

psql や JDBC など、クライアントに SSL サポートが設定されている場合、クライアントは初期にデフォルトで SSL を使用してデータベースへの接続を試みます。クライアントが SSL を使用して接続できない場合、SSL を使用しない接続に戻ります。libpq ベースのクライアント (psql など) と JDBC の両方で使用されるデフォルトの `sslmode` モードは、`prefer` に設定されています。サーバー上の証明書が検証されるのは、`sslmode` が `verify-ca` または `verify-full` に設定されて、`sslrootcert` が指定されている場合のみです。証明書が無効な場合は、エラーがスローされます。

`PGSSLROOTCERT` を使用して、`PGSSLMODE` 環境変数で証明書を検証します (`PGSSLMODE` は `verify-ca` または `verify-full` に設定)。

```
PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U masteruser -d postgres
```

`sslrootcert` 引数を使用して、接続文字列形式で `sslmode` を使用して証明書を検証します (証明書を検証するには、`sslmode` は `verify-ca` または `verify-full` に設定します)。

```
psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=masteruser dbname=postgres"
```

例えば前述の例の場合、無効なルート証明書を使用していると、クライアントで次のようなエラーが表示されます。

```
psql: SSL error: certificate verify failed
```

## アプリケーション信頼ストアの更新
<a name="ssl-certificate-rotation-postgresql.updating-trust-store"></a>

PostgreSQL アプリケーション信頼ストアの更新については、PostgreSQL ドキュメントの「[Secure TCP/IP Connections with SSL](https://www.postgresql.org/docs/current/ssl-tcp.html)」を参照してください。

ルート証明書のダウンロードについては、[SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md) を参照してください。

証明書をインポートするサンプルスクリプトについては、[証明書を信頼ストアにインポートするためのサンプルスクリプト](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script) を参照してください。

**注記**  
信頼ストアを更新するとき、新しい証明書を追加できるだけでなく、古い証明書を保持できます。

## 各種アプリケーションでの SSL/TLS 接続の使用
<a name="ssl-certificate-rotation-postgresql.applications"></a>

以下に、各種アプリケーションでの SSL/TLS 接続の使用に関する情報を示します。
+ **psql**

  接続文字列または環境可変としてオプションを指定することで、クライアントがコマンドラインから呼び出されます。SSL/TLS 接続の場合、関連するオプションは `sslmode` (環境可変 `PGSSLMODE`)、`sslrootcert` (環境可変 `PGSSLROOTCERT`) です。

  オプションの詳細なリストについては、PostgreSQL ドキュメントの「[Parameter Key Words](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS)」を参照してください。環境可変の詳細なリストについては、PostgreSQL ドキュメントの「[Environment Variables](https://www.postgresql.org/docs/current/libpq-envars.html)」を参照してください。
+ **pgAdmin**

  このブラウザベースのクライアントは、PostgreSQL データベースに接続するために使用できる使いやすいインターフェイスです。

  接続の設定については、[pgAdmin のドキュメント](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html)を参照してください。
+ **JDBC**

  JDBC は、Java アプリケーションとのデータベース接続を可能にします。

  JDBC を使用した PostgreSQL データベースへの接続に関する一般情報については、PostgreSQL JDBC ドライバードキュメントの「[データベースへの接続](https://jdbc.postgresql.org/documentation/use/#connecting-to-the-database)」を参照してください。SSL/TLS を使用した接続については、PostgreSQL JDBC ドライバードキュメントの「[クライアントの設定](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)」を参照してください。
+ **Python**: 

  PostgreSQL データベースに接続するために一般的に使用される Python ライブラリは、`psycopg2` です。

  `psycopg2` の使用については、[psycopg2 のドキュメント](https://pypi.org/project/psycopg2/)を参照してください。PostgreSQL データベースへの接続方法に関する簡単なチュートリアルについては、「[Psycopg2 Tutorial](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial)」を参照してください。connect コマンドで受け入れられるオプションについては、「[The psycopg2 module content](http://initd.org/psycopg/docs/module.html#module-psycopg2)」を参照してください。

**重要**  
データベース接続で SSL/TLS を使用することを決定し、アプリケーションの信頼ストアを更新したら、rds-ca-rsa2048-g1 証明書を使用するようにデータベースを更新できます。ステップについては、「[DB インスタンスまたはクラスターの変更による CA 証明書の更新](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)」のステップ 3 を参照してください。