为什么我的 Secrets Manager 轮换函数无法使用 scram-sha-256 连接到 Aurora PostgreSQL 数据库?

1 分钟阅读
0

我的 AWS Secrets Manger 轮换函数无法使用 scram-sha-256 算法连接到 Amazon Aurora PostgreSQL 数据库。

简短描述

如果您的数据库是 Aurora PostgreSQL 版本 13 或更高版本,在以下情况下,轮换函数可能无法连接到数据库:

  • 该数据库使用 scram-sha-256 对密码进行加密。
  • 轮换函数使用基于 libpq 的客户端版本 9 或更早版本。

**重要事项:**如果在 2021 年 12 月 30 日之前设置了自动密钥轮换,则您的轮换函数捆绑了不支持 scram-sha-256 的旧版本 libpq。

解决方法

请按照以下步骤检查数据库用户中是否有 **scram-sha-256 ** 加密和轮换函数 libpq 版本。

确定哪些数据库用户使用 scram-sha-256 加密

要检查是否有 scram-sha-256 加密密码的用户,请参阅 AWS 博客 Amazon Relational Database Service for PostgreSQL 13 中的 SCRAM 身份验证

确定您的轮换函数使用的 libpq 版本

1.    打开 Lambda 控制台

2.    在导航窗格中,选择 Functions(函数),然后选择轮换失败的 Lambda 函数名称。

3.    选择 Code(代码)选项卡。

4.    选择 Actions(操作),选择 Export function(导出函数),然后选择 Download deployment package(下载部署包)。

5.    将 zip 文件解压缩到工作目录中。

6.    在工作目录中运行以下 Linux 命令:

readelf -a libpq.so.5 | grep RUNPATH

如果看到字符串 PostgreSQL-9.4.x,或者任何小于 10 的主要版本,则轮换函数不支持 scram-sha-256

不支持 scram-sha-256 的轮换函数输出示例:

0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-9.4.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]
    * Example output for a rotation function that supports scram-sha-256:

支持 scram-sha-256 的轮换函数输出示例:

0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-10.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]

如果您的数据库使用 scram-sha-256 并且示例输出表明轮换函数不支持 scram-sha-256,则必须重新创建轮换函数

相关信息

解决 AWS Secrets Manager 轮换问题

AWS 官方
AWS 官方已更新 1 年前