RDS Proxy を介した Aurora PostgreSQL への接続時のみ psql の SCRAM 認証エラーが発生する場合の対処方法

RDS Proxy を介した Aurora PostgreSQL への接続時のみ psql の SCRAM 認証エラーが発生する場合の対処方法

Clock Icon2025.02.09

困っている内容

EC2 インスタンス(psql v9) から RDS Proxy 経由で Aurora PostgreSQL へ接続しようとした所、以下のエラーが発生し接続に失敗しました。

psql: SCRAM authentication requires libpq version 10 or above

しかし、Aurora PostgreSQL の設定は以下の通りであり、SCRAM 認証を行っている認識はありません。
また、RDS Proxy を経由せずに EC2 インスタンスから直接 Aurora PostgreSQL へ接続を試行した場合には、接続が成功します。

  • Aurora PostgreSQL: エンジンバージョン 15.8
  • DB クラスターのパラメータグループ: カスタムパラメータグループ
    • password_encryption: md5
    • rds.accepted_password_auth_method: md5+scram
  • DB インスタンスのパラメータグループ: default.aurora-postgresql15
  • データベースユーザのパスワード暗号化方法(encryption_type): md5

RDS Proxy を介した場合でも接続が成功するようにしたいのですが、どのように対処すればいいのでしょうか?

どう対処すればいいの?

RDS Proxy の詳細画面にて、「クライアント認証タイプ」の値を確認してください。

RDSProxy_details_auth

「クライアント認証タイプ」の値が「SCRAM SHA 256」の場合は、以下いずれかの対処方法の実施をご検討ください。

  • RDS Proxy の「クライアント認証タイプ」を「PostgreSQL MD5」へ変更する
  • psql のバージョンを SCRAM 認証がサポートされているバージョンへアップグレードする

RDS Proxy を介してデータベースへ接続する場合、RDS Proxy に設定されている「クライアント認証タイプ」の値に基づいて、クライアントからの接続を認証します。
そのため、「クライアント認証タイプ」が「SCRAM SHA 256」の場合、SCRAM 認証がサポートされていないバージョンの psql からの接続時に SCRAM 認証エラーが発生します。

なお、AWS マネジメントコンソール上から RDS Proxy の「クライアント認証タイプ」を変更すると、該当の RDS Proxy に関連付けされた全ての Secrets Manager シークレットに反映されます。[1]

重要
クライアント認証タイプIAM 認証フィールド の値は、このプロキシに関連付けられているすべての Secrets Manager シークレットに適用されます。シークレットごとに異なる値を指定するには、代わりに AWS CLI または API を使用してプロキシを変更します。

もしシークレットごとに異なる「クライアント認証タイプ」を設定されたい場合には、AWS CLI または API を使用してください。[2][3]

脚注
  1. RDS Proxy の変更 - Amazon Aurora ↩︎

  2. modify-db-proxy — AWS CLI 2.24.0 Command Reference ↩︎

  3. ModifyDBProxy - Amazon Relational Database Service ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.