使用Chef-Vault實現機密信息管理

jopen 8年前發布 | 6K 次閱讀 Chef

Chef-vault 是一款以 加密數據包 為基礎構建的 Chef 工具,可以減少解密密鑰在所有用戶和基礎設施節點之間共享的需求。

在Chef基礎結構中,加密數據包項是一種常用的機密信息(如密碼或API密鑰)存儲方式。問題是,由于數據包是對稱加密的,所以加密密鑰(共享機密信息)需要分發給所有需要使用加密數據包的各方。

Chef-vault解決了這個問題,它使用每個需要訪問加密數據包的用戶和節點的公共密鑰加密共享機密信息。由Chef服務器管理的每個節點及用戶賬戶都有一個RSA密鑰對。Chef服務器存儲著公共密鑰。Chef節點和用戶工作站存儲著私有密鑰。

Chef-vault管理保險庫。每個保險庫有一個管理員(Chef用戶)和客戶端(Chef節點)的列表。只有這些管理員和客戶端可以看到保險庫的內容。一個保險庫是一個數據包,包含兩個數據包項。一個存儲包含共享機密信息(比如數據庫密碼)的加密項。另一個存儲管理員和客戶端列表以及每個管理員和客戶端的非對稱加密共享機密信息。

每當chef-vault創建一個新的加密數據包,它首先會使用 SecureRandom.random_bytes 生成一個長為32個字節的隨機字符串作為共享機密信息。然后,它會檢索每個管理員和客戶端的公共密鑰,用它加密共享機密信息。這個過程減少了分發共享機密信息的需求,提供了一種更簡單的方法控制對指定加密數據包項的訪問。Chef-vault還提供了一個rotate_keys操作,顧名思義,它會新建一份共享機密信息,并使用所有管理員和客戶端的公共密鑰加密它。

使用Chef-Vault實現機密信息管理

Chef-vault有一些局限。至少這一次,它還不能很好地處理自動擴展,還需要人為增加或刪除客戶端(比如節點),或者像Peter Burkholder在一篇有關chef-vault的 文章 中所描述的那樣,借助于“可以訪問國王之鑰的特權節點”。另外,無法替換已提供的密鑰機制,不過, chef-vault 3.x.x 將會使用一個插件架構來解決這個問題。

機密信息管理是分布式可擴展環境的一個難題。Chef-vault是一款特定于Chef的工具,有好處也有不足。還有其他一些機密信息管理方案,有些是開源的,如Hashicorp的Vault或Square的 Keywhiz ,有些是商業的,如Amazon KMS或 Conjur

Nordstrom 是Chef-vault最初的開發者。該項目已于2015年11月轉移到Chef項目之下,因此,有足夠的資源維繼它的開發。

查看英文原文: Secrets Management with Chef-Vault

來自: http://www.infoq.com/cn/news/2016/02/chef-vault

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!