我试图避免在 Terraform 状态下拥有秘密。
是否有更好的方法从 Secrets Manager 中的密钥设置 RDS 密码来执行此操作?
resource "null_resource" "master_password" {
triggers = {
db_host = module.myrdsdatabase.cluster_id
}
provisioner "local-exec" {
command = <<TOF
password=$(aws secretsmanager get-secret-value --secret-id myrdscreds | jq '.SecretString | fromjson | .password' | tr -d '"')
aws rds modify-db-cluster --db-cluster-identifier ${module.myrdsdatabase.cluster_id} --master-user-password $password --apply-immediately
TOF
interpreter = ["bash", "-c"]
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*cin 16
这个问题没有具体的解决方案。关于在 TF 中处理机密的问题,在TF github 问题上已有近 7 年的历史,但仍然很活跃。
在你的问题中,你已经避免了aws_secretsmanager_secret_version这是一个好的做法。aws_secretsmanager_secret_version 不会保护您的秘密以纯文本形式保存在 TF 状态文件中!
一般来说,人们会做两件事来保守秘密:
local-exec,其他方法可以通过使用远程 lambda aws_lambda_invocation。其他方法也是可能的,例如通过 CloudFormation (CFN) 从 TF 创建 RDS 数据库。CFN 有一种通过动态引用安全地访问秘密管理器的正确方法。
| 归档时间: |
|
| 查看次数: |
11991 次 |
| 最近记录: |