尽管状态文件存储了 ID 和密码,但我正在使用敏感度为 true 的变量。有什么办法可以避免吗?
variable "rs_master_pass" {
type = string
sensitive = true
}
在状态文件中,
"master_password": 'password'
尽管如此,手动从状态中取出,每次应用都会返回。
最佳答案
没有“简单”的方法可以避免这种情况。您必须不硬编码 TF 文件中的值。正如您所注意到的,设置 sensitive = true
并不能防止以纯文本形式提供 secret 。
TF中正确处理 secret 的一般方法是:
- 使用专用的外部保管库,例如 Terraform Vault、AWS Parameter Store 或 AWS Secret Manger。它们必须单独设置,以免 TF 状态文件中没有可用的 secret 。
- 使用
local-exec
设置TF之外的 secret 。无论您在local-exec
中执行什么操作,都不会存储在 TF 状态文件中。这样做通常是为了将 TF 代码中可能需要的虚拟 secret (例如 RDS 密码)更改为 TF 知识之外的实际值。 - 如果上述解决方案无法访问,那么您必须保护您的状态文件(无论如何,这是一个很好的做法)。这通常是通过在严格的访问策略下将其远程存储在 S3 中来完成的。
关于amazon-web-services - terraform 将敏感数据存储在状态文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69671396/