2016-07-06 21 views
1

我在Chef中使用加密数据包,秘密文件当前存在于源代码中。是否可以将Chef cookbook_file源存储在加密的数据包中?

secret = cookbook_file "/etc/chef/#{env_encrypted_data_bag_secret" do 
    source "env_encrypted_data_bag_secret" 
    mode 0755 
    owner "root" 
    group "root" 
end 
secret.run_action(:create) 

在上面的代码中,秘密文件从厨师回购的files/default位置加载。

但是,将秘密文件放在源代码中是一个安全问题。 因此,请让我知道是否可以将厨师cookbook_file来源存储在加密数据包或其他地方,而不是厨师仓库。在贵公司的密码存储

+0

您想将加密数据包中包含您的密钥的加密数据包的秘密存储在加密数据包中的秘密数据包中的秘密是什么?我知道加密数据包秘密没有被检入到版本控制(出于很好的理由)的工作流程,但是在工作站之间手动复制并在自动增强('bootstrap'自动复制文件IIRC)期间提供给节点。 – StephenKing

+0

请参阅[默认引导程序模板](https://github.com/chef/chef/blob/a1e923cae62ea09c41bec46adc0b81a46d1ce27e/lib/chef/knife/bootstrap/templates/chef-full.erb#L198-L203)。 – StephenKing

回答

1
  • Store中的数据包的秘密(文件)(或手动通过它,你和你的同事之间。
  • 在工作站的knife config指定knife[:secret_file]指向那个秘密文件。
  • 使用knife bootstrap,这automatically copies the secret file到自举节点。

使用这个工作流程,你不会有在秘密签入到VCS。

替代品包括chef-vault,它使用Chef Server的PKI。

+0

我试图引导节点,但它不复制秘密文件。请让我知道可能会丢失什么 – meallhour

+0

您是否指定了自定义引导程序模板?你有'knife [:secret_file]'正确指定了吗? – StephenKing

+0

我有'knife [:secret_file]'正确指定。我目前使用我团队中其他人设计的'validatorlessBootstrap.sh'脚本。但是,你能建议我应该使用什么样的bootstrap模板/命令来复制秘密文件吗? – meallhour

1

斯蒂芬给了更正确的答案,你应该去接受他,但进一步明确了“为什么”:

如果你把数据包的秘密地方厨师的生态系统(食谱,厨师服务器,等等)里面取消了你已经很可笑的最小安全性。加密数据包的想法是在Chef做它的事情之前需要进行带外密钥交换。只要这种带外交换是安全可靠的,Chef就可以利用这种扩展信任链来包含加密的行李物品。如果你把两个部分(密钥和加密的blob)放在同一个地方或者通过相同的方式访问,你就会将整个想法短路。

+0

谢谢你的回答..我一直在试图在我的数据包配方运行之前传输加密密钥,并且它保持失败。现在我意识到这可能是一件好事,它不起作用。 – Schylar

相关问题