2016-07-06 22 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

相關問題