使用 Terraform 创建具有功能(IAM 身份验证、旋转主密码)的 RDS (Amazon Aurora PostgreSQL)

Using Terraform to create RDS (Amazon Aurora PostgreSQL) with features (IAM auth, rotating master pw)

我的工作任务是使用 Terraform 创建一个 RDS 集群模块,允许消费者启动他们自己的 clusters/dbs 等。这一切都相当简单,但这是第二批让我拔头发的要求。 DBA 想知道如何执行以下操作:

  1. 在机密管理器中存储和轮换主密码。
  2. 通过自动化创建额外的数据库、用户等(没有任何内容会被点击)。
  3. 利用 IAM 身份验证,这样用户就不必 created/auth 了。

我已经研究了很多不同的方法来做到这一点,但由于我对此还很陌生,所以似乎没有什么是“最佳解决方案”。谁能给我简要说明他们是如何完成类似任务的?您是否使用 lambda 函数存储和轮换密码,或者是否将主用户分配给 IAM 角色?您是使用 TF postgres 提供程序创建角色还是编写自己的代码来实现自动化?

非常感谢任何指导。 谢谢堆

所描述的问题相当笼统,但在我看来,您几乎可以将所有内容都置于 terraform 的直接控制之下。

  1. Store and rotate the master password in secrets manager.

秘密经理是必经之路。但是,密码轮换将是一个问题。当您在 AWS 控制台中启用轮换时,AWS 会神奇地为您提供一个 lambda。如果您不使用控制台,请在 terraform 中使用 command line steps are a bit more involving as they require the use of aws serverless repo (SAR). Sadly, official support for SAR is not yet avaiable。因此,您必须使用 local-exec provisioner 到 运行 aws cli 来创建旋转 lambda,就像在使用 SAR 的链接文档中一样。

  1. Create additional dbs, users etc via automation (nothing is to be clickops'd).

正如您已经指出的那样,TF PostgreSQL Provider 将是首先要考虑的事情。

  1. Utilize IAM authentication so that users do not have to be created/auth'd.

这可以在使用 IAM 身份验证时使用 iam_database_authentication_enabled. But you should know that there are some limitations 启用。最值得注意的是,仅支持 PostgreSQL 版本 9.6.9 和 10.4 或更高版本,你的每秒连接数我会很痛苦。

针对第 1 点的跟进,供将来想要做类似事情的任何人使用。

我最终使用 cloudformation_stack terraform 资源来创建秘密附件和秘密轮换 - 从我的 terraform 资源向它们传递参数值。

完美运行,轻松切换when/if terraform 引入这些资源。