Chef:如何从加密数据包中设置用户密码

时间:2016-04-13 19:00:58

标签: vagrant chef test-kitchen databags

我正在使用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 命令?

2 个答案:

答案 0 :(得分:2)

您根本不应该存储密码,只需先预先填写密码并将哈希放在数据包中。同样使用这样的加密数据包是可怕级别的不安全,请花一些时间熟悉Chef的加密工具的威胁模型,这不是它。

答案 1 :(得分:2)

至少预先计算密码哈希并将其放入数据包。

请参阅https://github.com/chef-cookbooks/users获取灵感。