密钥轮换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. 手动更改用户的密码
1 Antwort
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
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen