Terraform回购中有很多关于这个问题的Git问题,有很多有趣的评论,但截至目前我还没有找到解决这个问题的方法.
Terraform在tfstate文件中存储纯文本值,包括密码.
大多数用户需要远程存储它们,以便团队可以在同一个基础架构上同时工作,其中大多数用户在S3中存储状态文件.
那你怎么隐藏你的密码?
这里有没有人使用Terraform进行生产?你用明文保存密码吗?您是否有特殊的工作流程来删除或隐藏它们?你跑的时候会发生什么terraform apply?
我考虑过以下选项:
- 将它们存放在领事中 - 我不使用领事
- 将它们从状态文件中删除 - 这需要每次执行另一个进程,我不知道Terraform将如何使用空/不可读/不可用的密码处理资源
- 存储随后更改的默认密码(因此Terraform将在tfstate文件中具有无效密码) - 与上面相同
- 使用Vault资源 - 听起来它还不是一个完整的工作流程
- 使用git-repo-crypt将它们存储在Git中 - Git也不是一个选项
- 全局加密S3存储桶 - 这不会阻止人们看到纯文本密码,如果他们可以访问AWS作为"经理"级别,但它似乎是迄今为止的最佳选择
从我的角度来看,这是我想看到的:
- 状态文件不包含密码
- 状态文件已加密
- 状态文件中的密码是指向其他资源的"指针",例如"vault:backend-type:/ path/to/password"
- 每个Terraform运行都会从指定的提供程序收集所需的密码
这只是一个愿望.
但回到这个问题 - 你如何在生产中使用Terraform?