【问题标题】:Chef: How to set a user's password from an encrypted data bagChef:如何从加密的数据包中设置用户密码
【发布时间】:2016-07-31 18:32:18
【问题描述】:

我正在使用带有厨房 (1.5.0) 和 vagrant (1.8.1) 的 Chef 来通过新服务器一致地管理用户。我的用户配方如下所示:

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 命令加密了数据包。

这可行,但这似乎是解决设置密码问题的一种非常肮脏的方法。我必须这样做,因为 user 块的 password 指令只需要影子密码,并且只能通过使用 openssl强>命令。

有没有更简洁的方法来获取影子密码,而无需使用生成密码的 openssl 命令?

【问题讨论】:

    标签: vagrant chef-infra test-kitchen databags


    【解决方案1】:

    您根本不应该存储密码,只需事先对其进行哈希处理并将哈希值放入数据包中即可。像这样使用加密数据包也是可怕的不安全,请花点时间熟悉一下Chef的加密工具的威胁模型,不是这样。

    【讨论】:

    • 禁用 SSH 密码访问,禁用 root 访问,并且只使用 SSH 密钥是最安全的解决方案。对于那些在使用密钥进行 SSH-ing 后需要在系统上输入密码的人来说,手动生成和 schlepping 密码是最合理的解决方案。
    • 此外,唯一可以再使用密码的地方是 sudo,但我实际上并不建议这样做,因为安全性改进很少。
    • Sudo 正是我首先需要密码的原因。
    • 只需使用 NOPASSWD。如果有人可以访问 SSH 密钥,MitMing 一个 sudo 密码是非常容易的。太容易了,我不会打扰它。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2012-11-30
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      相关资源
      最近更新 更多