我使用敏感性为true的变量,尽管状态文件存储id和密码。有什么办法避免吗?
variable "rs_master_pass" {
type = string
sensitive = true
}
In状态文件,
"master_password": 'password'
即使手动从状态中取出,也会在每次应用中返回。
没有" easy ";这是避免的方法。您必须简单地而不是硬编码您的TF文件中的值。正如你注意到的那样,设置sensitive = true
不能防止以明文形式保存秘密。
在TF中正确处理秘密的一般方法是:
- 使用专用的外部保险库,例如Terraform Vault、AWS Parameter Store或AWS Secret manager。它们必须单独设置,以免在TF状态文件中无法获得它们的秘密。
- 使用
local-exec
在TF外设置秘密. 无论你在local-exec
中做什么,都不会存储在TF状态文件中。这通常是为了将TF代码中可能需要的虚拟秘密(例如RDS密码)更改为TF知识之外的实际值。 - 如果上述解决方案无法访问,那么您必须保护您的状态文件(无论如何,这是很好的练习)。这通常是通过在严格的访问策略下将其远程存储在S3中来完成的。