2016-10-04 85 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

經過對加密數據包的研究/實驗後,不可避免地得出的結論是,廚師目前並沒有真正的管理祕密的解決方案。

當然有加密的數據包,保險庫等,但這些做法與不改變社區/現有/第三方食譜的做法相沖突,只是爲了以安全的方式管理機密。

問題是加密的數據包等需要我們對食譜進行更改。如果烹飪書是你自己的,那麼不是問題,但如果你使用社區烹飪書,不建議改變它們。

相關問題