先にまとめ
とある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をアップデートできないシステムはお世話が大変…