使用 Vault 加密存储在 Consul 中的远程 Terraform 状态

Using Vault to encrypt remote Terraform state stored in Consul

截至目前,管理云提供商访问密钥和 ID 等秘密是 Terraform 项目中的一个未解决问题(参见 github issue)。无论何时,我们 运行 terraform planterraform apply,这些秘密都以纯文本形式存储在 terraform 状态文件中。有很多第三方编辑和加密脚本,例如 terrahelp。

我的问题:Consul 是用于存储远程 terraform 状态的本机后端。 是否可以使用 Vault 来加密存储在 Consul 中的状态文件?我已经尝试搜索 Terraform 后端文档,但找不到任何允许 Consul 使用 Vault 的配置标志加密状态文件。

虽然我很喜欢这个功能,但遗憾的是我认为目前还不可能。如果你想加密整个状态文件,那么你需要选择另一个开箱即用的后端,比如启用了存储桶加密的 s3。

如果有一种官方方法可以连接到状态文件 read/store 程序以自行合并保管库加密(或任何其他自定义要求),那也很好,但据我所知,这也是不可能的。

小型站点注意事项:terraform plan 不向状态文件写入任何内容。这是一个只读操作,否则不能认为它可以安全使用。