Secure Socket Layer (SSL) 接続を使用して Amazon Aurora PostgreSQL 互換エディションの DB クラスターに接続したいと考えています。
簡単な説明
SSL または Transport Layer Security (TLS) を使用して、アプリケーションから Aurora PostgreSQL 互換 DB クラスターへの接続を暗号化できます。SSL 接続と TLS 接続は、クラスターに単一レイヤーのセキュリティを提供し、クライアントとクラスターの間を移動するデータを暗号化します。詳細については、「SSL/TLS を使用して DB クラスターへの接続を暗号化する」を参照してください。
セキュリティを確保するには、接続する前に、クライアントとサーバーの両方で SSL 接続を設定する必要があります。サーバーで SSL が設定されていない場合、クライアントはパスワードなどの機密情報を送信する可能性があります。SSL で保護された接続を作成する方法の詳細については、PostgreSQL ウェブサイトの SSL サポートを参照してください。
PostgreSQL の SSL モードは以下のとおりです。
- verify-full
- verify-ca
- require
- prefer
- allow
- disable
ユースケースに適した SSL モードを選択する方法の詳細については、PostgreSQL ウェブサイトの「さまざまなモードで提供される保護」を参照してください。
解決策
Amazon Relational Database Service (Amazon RDS) は、クラスターの作成時にクラスターの SSL または TLS 証明書を作成します。詳細については、「Aurora PostgreSQL のセキュリティ」を参照してください。
SSL/TLS 経由で DB クラスターに接続する
- SSL/TSL 証明書をダウンロードします。
- 証明書をオペレーティングシステムにインポートします。
- SSL/TLS で Aurora PostgreSQL 互換の DB クラスターに接続します。
例:
psql -h DBInstance.cluster-Account-Number.eu-west-1.rds.amazonaws.com -p 5432 "dbname=postgres user=postgres sslrootcert=global-bundle.pem sslmode=verify-full"
rds.force\ _ssl を 1 (オン) に設定すると、新しい SSL 設定をサポートするために DB インスタンスの pg_hba.conf ファイルが変更されます。pg\ _hba\ _file\ _rules ビューを使用して、pg\ _hba.conf ファイルの内容の概要を表示できます。rds.force\ _ssl を 1 (オン) に設定すると、pg\ _hba\ _file\ _rules ビューのタイプ値が hostssl に更新されます。
DB クラスターへの接続に SSL/TLS の使用を要求できます。これを行うには、rds.force_ssl パラメーターを使用します。rds.force\ _ssl パラメーターはデフォルトで 0 に設定されています。0 の値はオフになっていることを示しています。このパラメーターをオンにするには、rds.force\ _ssl を 1 に設定します。これにより、DB クラスターへの接続には SSL/TLS が必要となります。
詳細については、「SSL/TLS による Aurora PostgreSQL データの保護」を参照してください。
SSL 接続を確認する
SSL 接続を確認するには、次のコマンドを実行します。
postgres=> select ssl_is_used(); ssl_is_used
-------------
t
(1 row)
postgres=> select ssl_cipher();
ssl_cipher
-----------------------------
ECDHE-RSA-AES128-GCM-SHA256
(1 row)
注: Amazon RDS インスタンス SSL は一方向 SSL です。これは、クライアントがサーバーの ID を確認できることを意味します。