terraform 在状态文件中存储敏感数据

terraform storing sensitive data in state file

我正在使用敏感度为 true 的变量,尽管状态文件存储了 ID 和密码。有什么办法避免吗?

variable "rs_master_pass" {
  type = string
  sensitive = true
}

在状态文件中,

 "master_password": 'password'

即使手动从状态中取出,每次应用都会返回。

没有“简单”的方法可以避免这种情况。您必须 而不是硬编码 TF 文件中的值。如您所见,设置 sensitive = true 并不能防止以纯文本形式存在秘密。

在 TF 中正确处理机密的一般方法是:

  • 使用专门的外部保险库,例如 Terraform Vault、AWS Parameter Store 或 AWS Secret Manger。必须单独设置它们,以免它们的秘密在 TF 状态文件中可用。
  • 使用 local-exec 在 TF 之外设置 秘密。您在 local-exec 中所做的任何事情都不会存储在 TF 状态文件中。这通常是为了将 TF 代码中可能需要的虚拟机密(例如 RDS 密码)更改为 TF 知识之外的实际值。
  • 如果无法访问上述解决方案,那么您必须保护您的状态文件(无论如何这是一个好习惯)。这通常是通过在严格的访问策略下将其远程存储在 S3 中来完成的。