我正在使用Chef with kitchen(1.5.0)和vagrant(1.8.1)来管理用户与新服务器的一致性。我的用户配方如下所示:
include_recipe "users"
group 'sudo'
password_secret = Chef::EncryptedDataBagItem.load_secret(node['enterprise_sp']['secret_file'])
jays_password = Chef::EncryptedDataBagItem.load('user_secrets','jgodse', password_secret)['password']
shadow_password = `openssl passwd -1 -salt xyz #{jays_password}`.strip
user 'jgodse' do
action :create
group 'sudo'
system true
shell '/bin/bash'
home '/home/jgodse'
manage_home true
password shadow_password #added to /etc/shadow when chef runs
end
未加密的数据包是我在明文中配置密码的地方。然后我用 knife 命令加密数据包。
这样可行,但这似乎是设置密码问题的一种非常肮脏的方法。我必须这样做是因为用户块的密码指令只接受了影子密码,并且只能通过外包到 openssl 命令。
是否有更简洁的方法来获取影子密码而不会出现生成密码的 openssl 命令?
答案 0 :(得分:2)
您根本不应该存储密码,只需先预先填写密码并将哈希放在数据包中。同样使用这样的加密数据包是可怕级别的不安全,请花一些时间熟悉Chef的加密工具的威胁模型,这不是它。
答案 1 :(得分:2)
至少预先计算密码哈希并将其放入数据包。