如何通过更改AWS密钥来更新RDS主密码

问题描述 投票:0回答:2

因此,我使用 CloudFormation 生成 RDS 数据库实例和 AWS Secrets Manager Secret,并将它们绑定在一起,如下面的 CloudFormation 配置所示:

"MyDBInstance": {
  "Type": "AWS::RDS::DBInstance",
  "Properties": {
    "AllocatedStorage": 20,
    "DBInstanceClass": "db.t2.micro",
    "Engine": "mysql",
    "DBSubnetGroupName": {
      "Ref": "MyDBSubnetGroup"
    },
    "MasterUsername": rdsadmin,
    "MasterUserPassword": {
      "Fn::Sub": "{{resolve:secretsmanager:${MYRDSPASSWORD}:SecretString}}"
    }
  }
}

我希望能够手动在一个位置(最好是 AWS Secrets Manager)设置新密码,然后将其自动同步到另一个位置(最好使用新密码修改 RDS 实例)。如果您想设置轮换计划,下面的文档非常有用,但这不是我们想要实现的目标。如果这不能“同步”,那么也许我可以编写一个 CLI 调用脚本来模仿该行为?

https://docs.aws.amazon.com/secretsmanager/latest/userguide/cfn-example_RDSsecret.html

amazon-web-services amazon-rds aws-secrets-manager
2个回答
1
投票

您将设置 AWS EventBridge 规则捕获 SecretsManager 秘密更改事件。然后,您可以配置 EventBridge 以在发生这种情况时调用 AWS Lambda 函数。您可以将代码放入读取事件的 Lambda 函数中,从 SecretsManager 中提取密码值,最后使用新密码和/或您想要更新的任何其他服务更新 RDS 服务器。

请注意,这与此处记录的相同流程非常相似,不同之处在于该流程按计划自动运行,而不是响应手动更改秘密值。


-1
投票

AWS CloudFormation 并非旨在执行此操作,所以不能。

如果您正在寻找旨在管理基础设施的 AWS 服务,请查看 AWS Systems Manager。

话虽这么说。在我多年来的旅行中,尽管在 AWS 的任何地方,我都没有看到任何专门执行此操作的东西。但我也从未寻找过这个具体要求。

IMO,听起来您正在尝试寻找技术解决方案来解决根本上的流程挑战。也许实施过于复杂。如果您确实想为此考虑某种自动化,您可能可以使用 Lambda 和 AWS SDK 拼凑出一些复杂的设置,但这不是我的处理方式。大锤可以敲碎坚果等等。

© www.soinside.com 2019 - 2024. All rights reserved.