使用 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 想知道如何执行以下操作:
- 在机密管理器中存储和轮换主密码。
- 通过自动化创建额外的数据库、用户等(没有任何内容会被点击)。
- 利用 IAM 身份验证,这样用户就不必 created/auth 了。
我已经研究了很多不同的方法来做到这一点,但由于我对此还很陌生,所以似乎没有什么是“最佳解决方案”。谁能给我简要说明他们是如何完成类似任务的?您是否使用 lambda 函数存储和轮换密码,或者是否将主用户分配给 IAM 角色?您是使用 TF postgres 提供程序创建角色还是编写自己的代码来实现自动化?
非常感谢任何指导。
谢谢堆
所描述的问题相当笼统,但在我看来,您几乎可以将所有内容都置于 terraform 的直接控制之下。
- 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 的链接文档中一样。
- Create additional dbs, users etc via automation (nothing is to be clickops'd).
正如您已经指出的那样,TF PostgreSQL Provider 将是首先要考虑的事情。
- 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 引入这些资源。
我的工作任务是使用 Terraform 创建一个 RDS 集群模块,允许消费者启动他们自己的 clusters/dbs 等。这一切都相当简单,但这是第二批让我拔头发的要求。 DBA 想知道如何执行以下操作:
- 在机密管理器中存储和轮换主密码。
- 通过自动化创建额外的数据库、用户等(没有任何内容会被点击)。
- 利用 IAM 身份验证,这样用户就不必 created/auth 了。
我已经研究了很多不同的方法来做到这一点,但由于我对此还很陌生,所以似乎没有什么是“最佳解决方案”。谁能给我简要说明他们是如何完成类似任务的?您是否使用 lambda 函数存储和轮换密码,或者是否将主用户分配给 IAM 角色?您是使用 TF postgres 提供程序创建角色还是编写自己的代码来实现自动化?
非常感谢任何指导。 谢谢堆
所描述的问题相当笼统,但在我看来,您几乎可以将所有内容都置于 terraform 的直接控制之下。
- 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 的链接文档中一样。
- Create additional dbs, users etc via automation (nothing is to be clickops'd).
正如您已经指出的那样,TF PostgreSQL Provider 将是首先要考虑的事情。
- 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 引入这些资源。