我在Chef中使用加密数据包,秘密文件目前存在于源代码中。
private PlayerPoints playerPoints;
/**
* Validate that we have access to PlayerPoints
*
* @return True if we have PlayerPoints, else false.
*/
private boolean hookPlayerPoints() {
final Plugin plugin = this.getServer().getPluginManager().getPlugin("PlayerPoints");
playerPoints = PlayerPoints.class.cast(plugin);
return playerPoints != null;
}
/**
* Accessor for other parts of your plugin to retrieve PlayerPoints.
*
* @return PlayerPoints plugin instance
*/
public PlayerPoints getPlayerPoints() {
return playerPoints;
}
在上面的代码中,秘密文件是从厨师仓库的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)
位置加载的。
但是,将秘密文件放在源代码中是一个安全问题。
所以,如果可以将Chef files/default
来源存储在加密数据包或其他地方而不是厨师仓库中,请告诉我。
答案 0 :(得分:1)
knife[:secret_file]
以指向该机密文件。knife bootstrap
,automatically copies the secret file到自举节点。使用此工作流程,您不必将密钥签入VCS。
备选方案包括chef-vault,它使用Chef Server的PKI。
答案 1 :(得分:1)
如果你把数据包放在Chef的生态系统(cookbook,Chef Server,无论什么)里面的秘密,它就会使你已经获得的已经非常荒谬的安全性无效。加密数据包的想法是在Chef做其事之前要求进行带外密钥交换。只要该带外交换是安全且可信的,Chef就可以利用它来扩展信任链以包含加密的包项。如果你将两半(密钥和加密的blob)放在同一个地方或通过相同的方式访问,你就会使整个想法短路。