RDS Proxy を介した Aurora PostgreSQL への接続時のみ psql の SCRAM 認証エラーが発生する場合の対処方法
困っている内容
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 の詳細画面にて、「クライアント認証タイプ」の値を確認してください。
「クライアント認証タイプ」の値が「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]