2017-07-06 4 views
0

私は "ユーザー"データバンクをchef-vaultで暗号化し、シェフが "ユーザー" cookbookを提供するのと同じものを使用したいと考えています。 "users" cookbookによって提供される "users_manage"リソースは、属性の1つを "databag"(username、group_idおよびsearch_groupプロパティを持つ)として受け入れます。私の知る限りシェフ-Vaultに は、一度にChef-vault with users cookbook(users_manage resource)

vault = chef_vault_item(:mydatabbag, ‘item1’) 

を一つのアイテムを復号化することを可能にする理想的に私は、全体の保管庫(暗号化されたdatabag)を復号化するために同様の機能を提供するために、シェフ・ボールトを期待し、私は "同じにする渡すことができます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 

シェフ・ボールトは全体databagを復号化する機能を提供していないので、私がコールする唯一の解決策が残っています 『ループで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 

もっと良い解決策はありますか?

答えて

0

data_bagプロパティは、データバッグの名前であり、バッグ自体ではありません。 chef-vaultにusers_manageを使用することはできません。同様のものをあなた自身で書く必要があります。

これは、ユーザーオブジェクト内の何もパスワードや何かを設定しようとしていない限り、最初は非公開でなければならないということです。

+0

ありがとうございます。私はsshキーとパスワードをユーザオブジェクトに格納する必要があります。したがって、暗号化が必要です。 –

+0

シェフがシェフを使ってパスワードを配布するのではなく、LDAPのようなものを調べてください。シェフが大部分のユーザーのために置くべき唯一の鍵は、公開鍵、すなわち 'authorized_keys'のものでなければなりません秘密にする。 – coderanger

+0

+1これはLDAPに到達するまでの暫定的な解決策です。 PS:既に公開されているようです。https://github.com/chef-cookbooks/users/pull/91 –