【问题标题】:Chef-vault with Users cookbook (users_manage resource)带有用户食谱的 Chef-vault(users_manage 资源)
【发布时间】:2017-07-07 00:59:55
【问题描述】:

我打算用chef-vault 加密“用户”数据包,并与厨师提供的“用户”cookbook 一起使用。 “users”食谱提供的“users_manage”资源接受属性之一作为“databag”(具有用户名、group_id 和 search_group 属性)。 据我所知,chef-vault 允许您一次解密一个项目

vault = chef_vault_item(:mydatabbag, ‘item1’)

理想情况下,我希望 chef-vault 提供类似的功能来解密整个保险库(加密的数据包),我可以将其传递给“uses_manage”资源:

decrypted_data_bag = chef_vault(:mydatabbag) #Something similar

users_manage "#{search_group}" do
  group_id search_group
  action [ :remove, :create ]
  data_bag "#{decrypted_data_bag}"
end

由于 chef-vault 不提供解密整个数据包的能力,我是否只有在循环中调用“users_manage”并传递每个项目(作为哈希)的唯一解决方案?

mydatabag.each do |myuser|
  decrypted_user = vault = chef_vault_item(:mydatabbag, "#{myuser}")
  users_manage "#{search_group}" do
    group_id search_group
    action [ :remove, :create ]
    data_bag "#{decrypted_user}"
  end
end

有没有更好的解决方案?

【问题讨论】:

    标签: chef-infra chef-recipe chef-vault


    【解决方案1】:

    data_bag 属性是数据包的名称,而不是数据包本身。您不能将 users_manage 与 chef-vault 一起使用,您必须自己编写类似的内容。

    也就是说,用户对象中的任何内容首先都不需要是私有的,除非您尝试设置密码或其他东西(不要那样做),所以这可能不需要。

    【讨论】:

    • 感谢@coderanger。我需要在用户对象中存储 ssh 密钥和密码,因此需要加密。
    • 不要使用 Chef 分发用户密码,为此查看 LDAP 之类的东西,Chef 应该为大多数用户设置的唯一密钥应该是公钥,即 @987654324 的东西@,不需要保密。
    • +1 在我们使用 LDAP 之前,这只是一个临时解决方案。 PS:似乎已经有相同的公关开放:github.com/chef-cookbooks/users/pull/91
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多