Chef infra 与厨师一起管理秘密

Chef infra 与厨师一起管理秘密,chef-infra,Chef Infra,我不清楚如何才能以可靠和可预测的方式与Chef最好地管理秘密 我所尝试的是将所有机密逻辑放在一个单独的食谱中,然后依赖于它管理机密的所有食谱 这样——我想——秘密可以在一个地方以一致的方式处理。另一个好处是我不必改变现有的食谱 这个秘密食谱是从加密的数据包中获取秘密,并用它来设置密码/秘密属性。为了防止秘密被上传到Chef服务器,我将所有我不想上传的属性列入黑名单 对于一些烹饪书来说,这达到了预期的效果,但对于另一些书来说,结果却变得难以预测。到目前为止,我确信这不是解决问题的办法。推荐的方法是

我不清楚如何才能以可靠和可预测的方式与Chef最好地管理秘密

我所尝试的是将所有机密逻辑放在一个单独的食谱中,然后依赖于它管理机密的所有食谱

这样——我想——秘密可以在一个地方以一致的方式处理。另一个好处是我不必改变现有的食谱

这个秘密食谱是从加密的数据包中获取秘密,并用它来设置密码/秘密属性。为了防止秘密被上传到Chef服务器,我将所有我不想上传的属性列入黑名单

对于一些烹饪书来说,这达到了预期的效果,但对于另一些书来说,结果却变得难以预测。到目前为止,我确信这不是解决问题的办法。推荐的方法是什么?我不想改变现有的食谱

比如说,如果有一本烹饪书

execute 'change first install root password' do
  # Add sensitive true when foodcritic #233 fixed
  command '/usr/bin/mysqladmin -u root password \'' + \
    node['mariadb']['server_root_password'] + '\''
  action :nothing
  not_if { node['mariadb']['server_root_password_2'].empty? }
end
将属性
['mariadb']['server\u root\u password']
秘密化并从加密数据包中检索其值的最佳方法是什么?我不想改变食谱,也不想把密码上传到服务器上

更新

我认为这些问题是由于
blacklist\u node\u attrs
中的错误导致黑名单属性在Chef运行期间不可用

但是,整体属性方法与秘密相结合,在Chef看来,在很大程度上还没有得到发展。这太神奇了


目前的情况是,如果你想管理秘密,你必须改变现有的食谱。如果你在属性文件和配方文件中尝试烹饪书属性,你会发现结果是随机的。在某些情况下它会工作,在另一些情况下它不会工作。

我们可以说,在节点属性中放置秘密是非常不明智的。正如您所注意到的,它们会被保存回clear中的Chef服务器。如果你不想最终得到一个非常脆弱的解决方案,那就必须更新这本食谱。没有通用的解决方案,尽管我正在研究一个可能在一两个月后发布的解决方案。我在coderanger.net上有很多关于这个问题的话,我猜你可能会遇到(因为这个问题的标题也是我一篇博客文章的标题)。在Slack或IRC上给我打电话(我在UTC+11再呆几天,然后会回到UTC-7),我可以尝试为您提供更适合您的用例的东西。总的来说,简短的说法是,这一切都很糟糕,目前还没有好的答案。

在对加密数据包进行调查/实验后,不可避免地得出结论,Chef目前没有真正的解决方案来管理机密

当然有加密的数据包、保险库等,但这些做法与不改变社区/现有/第三方食谱的做法相冲突,只是为了以安全的方式管理机密


关键是,加密数据包等要求我们对食谱进行更改。如果烹饪书是你自己的,这不是问题,但如果你使用社区烹饪书,则不建议更改它们。

我认为这是一篇文章。这是对我的问题的一个明确而彻底的回答。另外,请查看链接在那里的谈话,它在几年后会更加及时,并且对选项的了解会更加深入。我最近有另一篇关于和chef一起使用hashicorp vault的帖子,但现在这只是一个建议。敬请期待?