密钥轮换Lambda:轮换密钥后无法登录。

0

【以下的问题经过翻译处理】 问题

我们拥有一个Aurora PostgreSQL 14.5 RDS集群,有一个存放用户凭据的SecretsManager。当我们想要轮换密码时,Lambda在执行“setSecret”步骤时卡住,并出现“无法使用先前、当前或未决的秘密登录数据库”的错误。我们已经确定这与集群参数组中的“password_encryption”选项有关。如果我们将其设置为“md5”(默认值I相信是“scram-sha-256”),则在手动更新后轮换将再次起作用。然后我们可以将其旋转多次。

问题

如何在使用Aurora PostgreSQL集群的默认集群参数组时使秘密轮换起作用?

复现步骤

  1. 拥有一个按期望格式排列的秘密(https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_secret_json_structure.html#reference_secret_json_structure_rds-postgres)。
  2. 运行由AWS提供的Python代码的Lambda(https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/blob/master/SecretsManagerRDSPostgreSQLRotationSingleUser/lambda_function.py)。
  3. 拥有使用“default.aurora-postgresql14”集群参数组的14.5 Aurora PostgreSQL集群。
  4. 单击控制台中的“立即轮换秘密”按钮
  5. 在Lambda日志中,查看错误“setSecret:无法使用先前、当前或未决​​的秘密登​​录数据库的secret arn arn:aws:secretsmanager:....”

恢复方式

  1. 创建一个与“default.aurora-postgresql14”相同的新集群参数组副本。
  2. 将“password_encryption”更改为“md5”。
  3. 将此新参数组应用于集群。
  4. 取消秘密轮换:“aws secretsmanager cancel-rotate-secret --secret-id ....”
  5. 手动更改用户的密码
profile picture
专家
已提问 8 个月前92 查看次数
1 回答
0

【以下的回答经过翻译处理】 我已经找到问题了!我们正在使用 aws python lambda docker image。我必须从源代码编译pg工具。在这个容器上安装的yum可安装的pg工具仅安装了9主要版本的工具,不兼容带有scram密码加密的样式。

运行yum install -y wget gcc tar make libpqxx-devel gzip && \
    yum install -y https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-7-x86_64/postgresql14-libs-14.5-1PGDG.rhel7.x86_64.rpm && \
    wget https://ftp.postgresql.org/pub/source/v14.5/postgresql-14.5.tar.gz && \
	tar -xf  postgresql-14.5.tar.gz && \
	cd postgresql-14.5 && \
	./configure --with-python --without-readline --without-zlib && \
	make && \
	make install && \
	export PATH="/usr/local/pgsql/bin:$PATH" && \
    python3 -m pip install --upgrade pip setuptools wheel boto3 pygresql
profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则