首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能保守秘密吗?

问有可能保守秘密吗?
EN

Stack Overflow用户
提问于 2019-08-31 18:31:38
回答 2查看 102关注 0票数 0

例如,可以将密码引用为环境变量吗?即使我这样做了,它也会被储存在州里,对吗?

代码语言:javascript
复制
# Configure the MySQL provider
provider "mysql" {
  endpoint = "my-database.example.com:3306"
  username = "app-user"
  password = "app-password"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-03 17:52:33

状态快照只包含resource、data和output块的结果,以便Terraform可以在创建计划时将它们与配置进行比较。

provider块中的参数不会保存在状态快照中,因为Terraform只需要提供程序配置的当前参数,并且从不需要与前面的参数进行比较。

即使提供程序参数不包含在状态中,最好将特定的凭据排除在配置之外。提供者倾向于为凭据提供论据,作为特殊情况下的最后手段,但也应提供其他提供凭据的方法。对于某些提供程序,有一些现有的标准方法来传递凭据,例如使用与AWS相同的凭据机制的AWS提供程序。其他提供程序定义自己的机制,例如环境变量。

特别是对于MySQL提供程序,我们应该在配置中设置endpoint,因为这说明了Terraform正在管理什么,但是我们应该使用环境变量来指定谁在运行Terraform。我们可以使用MYSQL_USERNAME和MYSQL_PASSWORD环境变量为运行Terraform的个人或系统指定凭据。

这方面的一个特殊例外是Terraform本身负责管理凭据。在这种情况下,提供凭据的资源将其数据(包括密码)存储在状态中。没有办法避免这种情况,因为否则就不可能在配置的其他地方使用密码。

对于管理凭据(而不仅仅是使用凭据)的Terraform配置,理想情况下,它们应该与其他Terraform配置分离,并将它们的状态快照存储在一个位置,在该位置可以对它们进行加密,并且只能对针对这些配置运行Terraform的个人或系统进行访问。在这种情况下,将状态快照本身视为一个秘密。

票数 1
EN

Stack Overflow用户

发布于 2019-09-02 01:28:19

不,这不可能。最好的选择是使用安全和加密的远程后端(如S3 + Dynamodb )来保存状态文件。我也读过一些关于使用git-crypt的人的文章,但我从未尝试过。

也就是说,您可以使用环境变量作为输入来隐藏源代码中的秘密。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57740689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档