SSL 暗号化は、データベースクライアントと ApsaraDB RDS for PostgreSQL インスタンス間で送信されるデータを保護します。このトピックでは、クラウド証明書を設定して SSL 暗号化を有効にし、暗号化された接続を使用してご利用のインスタンスに接続する手順について説明します。
証明書の種類
SSL 暗号化には 3 種類の証明書が利用可能です。それぞれ異なる目的で使用されます。
| 項目 | クラウド証明書 | カスタム証明書 | クライアント CA 証明書 |
|---|---|---|---|
| 目的 | サーバー証明書 — クライアントがサーバーを認証するために使用します | サーバー証明書 — クライアントがサーバーを認証するために使用します | クライアント証明書 — サーバーがクライアントを認証するために使用します |
| 発行元 | Alibaba Cloud | 認証局 (CA) または自己署名 | 自己署名 |
| 有効期間 | 365 日 | カスタマイズ可能 | カスタマイズ可能 |
| 保護対象のエンドポイント | 1 | 1 つ以上 | 使用されるクラウド証明書またはカスタム証明書によって異なります |
SSL 暗号化を有効にし、サーバーを認証するには、クラウド証明書またはカスタム証明書のいずれかを必ず設定する必要があります。クライアント CA 証明書の設定はオプションであり、サーバーがクライアントを認証できるようにします。
クラウド証明書とカスタム証明書はどちらもサーバー側を保護します。内部エンドポイントとパブリックエンドポイントの両方を同時に保護するには、「カスタム証明書」を使用します。
ApsaraDB RDS for PostgreSQL は、TLS 1.0、TLS 1.1、および TLS 1.2 をサポートします。
前提条件
開始する前に、以下を確認してください。
PostgreSQL 10 以降が稼働し、クラウドディスクを使用する ApsaraDB RDS for PostgreSQL インスタンス (サーバーレスインスタンスはサポートされていません)
pgAdmin 4 がインストールされていること — pgAdmin 4 からダウンロードします
IP アドレスホワイトリストが設定され、インスタンス上に少なくとも 1 つのアカウントが作成されていること — 詳細については、「IP アドレスホワイトリストの設定」および「データベースとアカウントの作成」をご参照ください。
注意事項
証明書の更新: クラウド証明書の有効期間は365日間です。有効期限切れの前に、Alibaba Cloud から電子メールとサイト内メッセージの通知を送信し、証明書を自動的に更新します。更新スケジュールをカスタマイズするには、[スケジュール イベント] ダイアログボックスを使用します。詳細については、「スケジュール済みイベントの管理」をご参照ください。
パフォーマンスへの影響: SSL 暗号化を有効にすると、CPU 使用率が増加し、読み取り/書き込みレイテンシーが追加されます。
既存の接続: SSL を有効にした後、既存のすべての接続を閉じて再確立し、暗号化を有効にしてください。
インスタンスの再起動: 次の操作により、RDS インスタンスが再起動します (それぞれ約 3 分かかります)。これらの操作はオフピーク時間中に実行してください。
クラウド証明書の設定
設定済みのクラウド証明書によって保護されているエンドポイントの変更
SSL 暗号化の無効化
ステップ 1: クラウド証明書で SSL を有効にする
[インスタンス] ページに移動します。上部のナビゲーションバーで、ご利用の RDS インスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
左側のナビゲーションウィンドウで、[データセキュリティ] をクリックします。表示されたページで、[SSL] タブをクリックします。
「[SSL]」タブが表示されていない場合は、お使いのインスタンスが前提条件に記載されている要件を満たしていることを確認してください。
[クラウド証明書] を選択します。[設定] を [データベース証明書の設定(データベース偽装を防止)] の横でクリックし、保護するエンドポイントを選択します。
- 各クラウド証明書は、1つのエンドポイントを保護します。インスタンスにパブリックエンドポイントがある場合は、これを保護してください。内部エンドポイントはプライベートネットワーク内でのみアクセス可能でありリスクが低く、一方でパブリックエンドポイントはより露出しているためです。 - 「[保護対象エンドポイントの選択]」ダイアログボックスに内部エンドポイントのみが表示される場合、まだパブリックエンドポイントが申請されていません。詳しくは、「ApsaraDB RDS for PostgreSQL インスタンスのエンドポイントおよびポート番号の表示と変更」をご参照ください。 - 保存をクリックすると、インスタンスステータスが約3分間「[SSL設定の変更中]」に変わります。ステータスが「[実行中]」に戻るまで、次の操作を待ってください。

ステップ 2: サーバー CA 証明書のダウンロード
クラウド証明書を設定した後、サーバー CA 証明書をダウンロードし、ご利用のクライアントマシンに保存します。クライアントはこの証明書を使用して、接続中に RDS インスタンスを認証します。
[クラウド証明書] を選択し、次に [CA 証明書のダウンロード] をクリックします。

ダウンロードしたファイルを解凍します。パッケージには 3 つのファイルが含まれています。
ファイル形式 ユースケース PEM ほとんどのクライアントとツール — デフォルトで使用します JKS Java アプリケーション。JKS ファイルは事前変換されたトラストストアです。パスワード: apsaradbP7B PKCS#7 形式の証明書ファイルを必要とする Windows アプリケーション
ステップ 3: SSL 経由での RDS インスタンスへの接続
pgAdmin での接続
この例では pgAdmin 4 V6.2.0 を使用します。ご利用のバージョンが異なる場合は、pgAdmin 4 の公式ドキュメントをご参照ください。
[pgAdmin 4] を起動します。
新しいバージョンの pgAdmin を初めて開く場合、保存された認証情報を保護するためにマスターパスワードを設定するようプロンプトが表示されます。
右クリックして、[サーバー] を選択し、[登録] > [サーバー] を選択します。

[一般] タブで、サーバーの名前を入力します。

[接続]タブをクリックし、接続詳細を入力します。
パラメーター 説明 ホスト名/アドレス RDS インスタンスのエンドポイント。プライベートネットワーク経由で接続するには内部エンドポイントを使用し、インターネット経由で接続するにはパブリックエンドポイントを使用します。これらの値を見つけるには、「ApsaraDB RDS for PostgreSQL インスタンスのエンドポイントとポート番号の表示および変更」をご参照ください。 ポート RDS インスタンスのポート番号。 [ユーザー名] アカウントのユーザー名。詳細については、「データベースとアカウントの作成」をご参照ください。 [パスワード] アカウントのパスワード。 
[パラメーター] タブをクリックし、SSL 設定を構成してください。
パラメーター 説明 SSL モード セキュリティ上の理由から、このパラメーターを Require、Verify-CA、または Verify-Full に設定することを推奨します。各値の詳細は以下のとおりです。Require — クライアントが接続を暗号化しますが、RDS インスタンスの検証は行いません。Verify-CA — クライアントが接続を暗号化し、RDS インスタンスを検証します。Verify-Full — クライアントが接続を暗号化し、RDS インスタンスを検証するとともに、サーバーの CA 証明書に記載された CN または DNS 名が、ホスト名/アドレス の値と一致するかを確認します。 ルート証明書 SSL モード を Verify-CA または Verify-Full に設定する場合に必須です。ステップ 2 でダウンロードした PEM ファイルのパスを指定します(例: D:\CA\aliyunCA\)。[保存] をクリックします。接続の詳細が正しい場合、pgAdmin はインスタンスに正常に接続します。
重要postgresデータベースはシステムデータベースです。その上で操作を実行しないでください。
その他の接続方法 (psql コマンドラインクライアント、Java JDBC など) については、「SSL 接続経由での ApsaraDB RDS for PostgreSQL インスタンスへの接続」をご参照ください。
次のステップ
ApsaraDB RDS for PostgreSQL インスタンスでのカスタム証明書の設定 — 複数のエンドポイントを同時に保護する場合、または独自の CA 署名証明書を使用する場合
ApsaraDB RDS for PostgreSQL インスタンスでのクライアント CA 証明書の設定 — サーバーがクライアントを認証するようにする場合
SSL 接続経由での ApsaraDB RDS for PostgreSQL インスタンスへの接続 — JDBC およびその他のクライアントを使用した接続例