SSL 暗号化を有効にした後でも、クライアントアクセス制御が設定されていない場合、クライアントは PGSSLMODE=disable パラメーターを使用して SSL なしで接続できます。すべてのクライアントに対して SSL 接続を強制するには、このトピックの手順に従ってください。
前提条件
-
ご利用の RDS for PostgreSQL インスタンスで SSL 暗号化が有効になっている必要があります。詳細については、「クラウド証明書を使用した SSL 暗号化の迅速な有効化」または「カスタム証明書を使用した SSL 暗号化の有効化」をご参照ください。
-
方法 1 を使用する場合は、クライアント証明書を検証するためにクライアント CA 証明書を設定する必要があります。詳細については、「クライアント CA 証明書の設定」をご参照ください。
操作手順
RDS for PostgreSQL では、クライアント接続に SSL 暗号化を強制するために、以下の方法が提供されています。
方法 1:クライアント ACL
クライアント CA 証明書を設定した後、RDS for PostgreSQL インスタンスでクライアント ACL を設定して、クライアントアクセスを管理できます。クライアントは、有効なクライアント証明書と秘密鍵を提示し、指定された認証方式を使用してデータベースに接続する必要があります。
-
クライアント ACL を設定すると、PostgreSQL データベースインスタンスが約 1 分間利用できなくなります。
-
RDS for PostgreSQL データベースでクライアントアクセス制御が設定されていない場合、認証方式のデフォルトは
preferです。これにより、クライアントはPGSSLMODE=disableを使用して SSL なしで接続できます。非 SSL 接続をブロックするには、SSL 暗号化を有効にした後、クライアント ACL を設定してprefer以外の認証方式を使用してください。
ACL の設定 の横にある 変更 をクリックし、クライアント接続のコントロールモードを選択します。
RDS for PostgreSQL インスタンスへの SSL 接続を強制するには、次のいずれかの認証方式を使用できます。
-
cert:パスワードの代わりにクライアント証明書を使用して認証します。接続を暗号化し、クライアント証明書を検証し、証明書内のコモンネーム (CN) がデータベースのユーザー名と一致することを確認します。 -
verify-ca:接続を暗号化し、設定された CA に対してクライアント証明書を検証します。 -
verify-full(RDS for PostgreSQL 12 以降でサポート):接続を暗号化し、設定された CA に対してクライアント証明書を検証し、証明書内の CN がデータベースのユーザー名と一致することを確認します。
方法 2:pg_hba.conf ファイル
SSL 暗号化を有効にした後、RDS for PostgreSQL の AD ドメインサービス設定 機能を使用して pg_hba.conf ファイルを変更できます。これにより、クライアントはデータベースに接続する際に SSL を使用することが強制されます。
インスタンスページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、対象の RDS インスタンスを見つけ、インスタンスの ID をクリックします。
-
左側のナビゲーションウィンドウで、アカウント管理 をクリックし、ADドメインサービス情報 タブをクリックします。
-
pg_hba.conf 設定ページのルールテーブルで、最初のレコードを変更し、TYPE を
hostsslに、DATABASE と USER を all に、ADDRESS を0.0.0.0/0に、METHOD を md5 に設定します。 -
提出 をクリックします。
説明[送信] をクリックすると、インスタンスステータスが約 1 分間 メンテナンス中 に変わります。新しい設定は、新しい接続にのみ適用されます。既存の接続に変更を適用するには、切断してから再接続する必要があります。