2016-10-04 149 views
1

我不清楚厨师如何以可靠和可预见的方式最好地管理秘诀。厨师管理秘密

我试过的是把所有的秘密逻辑放在一个单独的食谱,然后取决于所有的食谱,它是管理的秘密。

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

这个秘密食谱是从加密的数据包中提取秘密并使用它来设置密码/秘密属性。为了防止秘密上传到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_root_password']在秘密和检索它从加密的数据包价值的最佳方式是什么?我不想更改食谱,也不想将密码上传到服务器。

更新

我觉得问题在blacklist_node_attrs错误的结果,导致列入黑名单的属性是厨师运行期间不可用。

但是,整体属性方法与秘密相结合在厨师看来很大程度上还未开发。这太神奇了。

目前的状态是,如果你想管理的秘密,你将不得不改变现有的食谱。如果您尝试使用属性文件和配方文件中的食谱属性,则会发现结果是随机的。在某些情况下,它会起作用,而在其他情况下则不会。

回答

2

把秘密放在节点属性中,我们应该说是非常不明智的。正如您所指出的那样,他们会以清晰的方式保存到Chef Server。如果你不想结束一个非常脆弱的解决方案,那么这本烹饪书将不得不更新。没有通用的解决方案,尽管我正在研究一个可能在一两个月内发布的解决方案。我在coderanger.net上有很多关于这个的话,我猜你已经跑过去了(因为这个问题的标题也是我博客文章的标题)。在Slack或IRC上Ping我(我在UTC + 11中再玩几天,然后又回到UTC-7),我可以尝试给你一些更适合你的用例的东西。总的来说,简短的版本是,这是非常可怕的,目前没有好的答案。

+0

这是我认为https://coderanger.net/chef-secrets/的帖子。这是对我的问题的彻底回答。 – onknows

+0

同时查看链接的链接,这些链接更多地更新了几年,并且更深入地讨论了这些选项。我还有一篇关于将hashicorp vault与厨师合用的更近期文章,但现在它只是一个提议。敬请关注? – coderanger

1

经过对加密数据包的研究/实验后,不可避免地得出的结论是,厨师目前并没有真正的管理秘密的解决方案。

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

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