Redshift-Postgres RDS联邦查询报authentication method 10错误
问题根因
这个报错和你本地JDBC驱动、KMS密钥配置没有任何关系。
错误里的authentication method 10对应PostgreSQL的SCRAM-SHA-256认证协议,Redshift查询外部PostgreSQL schema时,是集群内部自带的PostgreSQL客户端发起跨库连接,这个内置客户端版本较旧,不支持SCRAM-SHA-256认证,只能识别MD5方式加密的密码认证。你之前确认解密环节正常,刚好说明问题出在Secrets Manager解密完凭证、Redshift拿凭证去连Postgres的认证阶段,和密钥本身没关系。更新本地JDBC驱动没用,是因为驱动只管你本地客户端和Redshift之间的连接,管不到Redshift自己去连Postgres的内部逻辑。
解决方法
选下面任意一种都能解决问题:
- 最快生效方案:修改RDS PostgreSQL的全局认证配置
- 进入RDS控制台找到目标Postgres实例,打开它绑定的参数组
- 把
password_encryption参数的值从scram-sha-256改成md5,保存参数修改 - 重启RDS实例让参数生效
- 重置联邦查询使用的数据库账号密码——这步不能漏,之前的密码是按SCRAM规则存储的,改完参数不重置密码还是会走SCRAM认证流程
- 把Secrets Manager里存储的对应账号密码更新为新重置的值,再查询外部schema的表即可正常访问
- 不想全局修改RDS认证规则的话,可以单独给联邦查询账号开MD5认证:在RDS参数组里配置
rds.pg_hba规则,指定Redshift集群所属的VPC网段、对应联邦查询账号的认证方式为md5,只重置这个账号的密码就行,其他业务账号还是可以正常用SCRAM-SHA-256认证,不受影响。 - 不推荐方案:等AWS官方更新Redshift内置的PostgreSQL客户端支持SCRAM-SHA-256,这个兼容性问题AWS已经登记在已知问题列表,但没有给出明确的上线时间,生产环境不建议等待。
验证方法
改完配置直接跑个简单测试查询即可:
SELECT * FROM schema_ext.<你的目标表名> LIMIT 1;
能正常返回数据就说明配置生效。
内容的提问来源于stack exchange,提问作者Yauheni Khvainitski
相关产品推荐
相关产品推荐

