Vagrant 厨师:如何设置用户';来自加密数据包的密码

Vagrant 厨师:如何设置用户';来自加密数据包的密码,vagrant,chef-infra,test-kitchen,databags,Vagrant,Chef Infra,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.loa

我正在使用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
未加密的数据包是我在clear中配置密码的地方。然后我用命令对数据包进行加密

这是可行的,但这似乎是解决设置密码问题的一种非常肮脏的方法。我必须这样做,因为用户块的密码指令只接受影子密码,而影子密码只能通过使用openssl命令生成


有没有一种更干净的方法来获取影子密码,而不必使用生成密码的openssl命令?

您根本不应该存储密码,只需事先对密码进行散列,然后首先将散列放入数据包中。同样,使用像这样的加密数据包是非常不安全的,请花一些时间熟悉Chef's加密工具的威胁模型,不是这样。

你根本不应该存储密码,只需事先对密码进行散列,然后将散列放在数据包中。同样,使用这样的加密数据包是非常不安全的,请花一些时间熟悉Chef's加密工具的威胁模型,不是这样。

至少预先计算密码散列并将其放入数据包中


请参阅以获取灵感。

至少预先计算密码散列并将其放入数据包中


请参阅以获取灵感。

禁用SSH密码访问、禁用root访问以及仅使用SSH密钥是最安全的解决方案。对于那些在使用密钥后需要在系统上输入密码的用户,手动生成并输入密码是最合理的解决方案。此外,唯一可以使用密码的地方是sudo,但我并不建议这样做,因为安全性的改进是最小的。Sudo正是我首先需要密码的原因。只需使用NOPASSWD。如果有人能够访问SSH密钥,那么使用sudo密码是非常容易的。这么简单,我就不用麻烦了。禁用SSH密码访问,禁用根访问,并且只使用SSH密钥是最安全的解决方案。对于那些在使用密钥后需要在系统上输入密码的用户,手动生成并输入密码是最合理的解决方案。此外,唯一可以使用密码的地方是sudo,但我并不建议这样做,因为安全性的改进是最小的。Sudo正是我首先需要密码的原因。只需使用NOPASSWD。如果有人能够访问SSH密钥,那么使用sudo密码是非常容易的。这么简单,我就不用麻烦了。