pro*_*ath 4 postgresql amazon-web-services amazon-rds terraform infrastructure-as-code
我正在尝试正确设置我的基础设施,没有密码或密钥。AWS RDS 可以选择这样做,让用户(应用程序)能够使用生成的令牌进行身份验证。
但是,在文档中,其中一个步骤(这一步)需要在 Postgres 数据库中运行查询以创建用户并授予他特定的权限:
CREATE USER test_rds WITH LOGIN;
GRANT rds_iam TO test_rds;
Run Code Online (Sandbox Code Playgroud)
我想使用 Terraform 配置整个堆栈。在 RDS 实例化之后,我查找了一些“技巧”来运行查询(这里),使用以下任一方法:
resource "null_resource" "db_setup" {
depends_on = ["aws_db_instance.your_database_instance", "aws_security_group.sg_allowing_external_access"]
provisioner "local-exec" {
// run shell commands to manually psql into the db
Run Code Online (Sandbox Code Playgroud)
或者:
resource "aws_instance" "web" {
provisioner "remote-exec" {
inline = [
// run shell commands to manually psql into the db
Run Code Online (Sandbox Code Playgroud)
但是它们都需要创建主密码并以某种方式将其传递到“脚本”中。
是否可以使用 Terraform 干净利落地做到这一点,而不会传递硬编码密码?
我希望配置数据库并仅启用具有正确访问权限的特定 EC2/ECS 实例,而我的 git 存储库中没有任何密码。
为 RDS 数据库启用 IAM 身份验证后,您将无法再对该用户/角色使用基于密码的身份验证。
这意味着您可以使用安全性较低的密码,甚至只生成一个随机密码(使用random_id资源),用于设置主密码并首先用于身份验证,以便您可以向rds_iam主用户和任何其他用户授予权限你创造。
虽然此密码最终会出现在状态文件中(即使是随机生成的),但如前所述,一旦rds_iam应用授权,您将无法使用此密码登录到您的数据库。
| 归档时间: |
|
| 查看次数: |
2792 次 |
| 最近记录: |