PostgreSQL接続時にThe authentication type 10 is not supported. が発生

先にまとめ

とあるETLツールのデータソースを古いpostgreSQLから新たにAuroraPGに変更したところ、The authentication type 10 is not supported.とエラーが発生しました

調べたところ、postgreにログインするユーザのパスワードのハッシュが関係していて、新しいDBの方にハッシュ設定を変えたユーザを作り直すことで対応できました

今回の対応は下記のページに記載されている事象/対応方法に従うことで解決できました
Aurora PostgreSQL接続時の「The authentication type 10 is not supported.」エラーに対応する

困ったこと

使用していたETLツールの接続先を変更して、稼働させると下記のエラーが発生しました

...
Error occurred while trying to connect to the database
Error connecting to database: (using class org.postgresql.Driver)
The authentication type 10 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.
...

本来はdriverのversionをupdateして解消したいところですが、諸事情によりそれはできず、、

原因

新Aurora PostgreSQLのユーザに設定されているpasswordのハッシュ関数がscram-sha-256でハッシュ化されており、ETLツール側のdriverではmd5しか対応していない

下記でAuroraPGの方でpasswordのハッシュタイプを確認できる

-- rds_toolsを作らないと確認できないため下記を実行
-- CREATE EXTENSION rds_tools;
-- そしてrds_toolsの中身を覗く
SELECT * FROM rds_tools.role_password_encryption_type();

こんな感じ

対処

「md5でpasswordをハッシュしたユーザを作って、そのユーザでアクセスする」が対処法

ユーザ作成用script

-- 現在の値がscram-sha-256になっていることを確認
show password_encryption; 

-- md5に変わったことを確認
SET password_encryption=md5;
show password_encryption;
create user pg_user_xxxx PASSWORD 'xxxxxxx';
GRANT USAGE ON SCHEMA test_schema TO pg_user_xxxx;
...

SET password_encryption=scram-sha-256;
-- scram-sha-256に戻ったことを確認
show password_encryption; 

このユーザを使用することで、無事にDBへアクセスできました!

感想

libraryをアップデートできないシステムはお世話が大変…