【问题标题】:Chef Decryption of Data Bags and Retrieval of Key主厨解密数据包并检索密钥
【发布时间】:2015-12-03 16:07:58
【问题描述】:

我正在使用加密数据包加密 ssh 密钥并通过 Chef 解密。数据包的 id 为 pwind_ssh_rsa_pub_cred,但我真正想要的是 ssh 密钥的未加密数据。然后我想获取密钥并将其附加到文件中,但是我目前拥有的代码遇到了一些问题。使用静态值,下面的代码可以工作。此外,我对“decrypted_ssh”的类型非常困惑。

ruby_block "obtainCredentials" do
    block do
        hadoop_key = Chef::EncryptedDataBagItem.load_secret("/home/ec2-user/project_data_bag_key")
        decrypted_ssh = Chef::EncryptedDataBagItem.load("pwind_keys", "pwind_ssh_rsa_pub_credentials", hadoop_key)
        Chef::Resource::RubyBlock.send(:include, Chef::Mixin::ShellOut)
        command = "su - 'root' -c 'cd /home/ec2-user; cd .ssh; echo #{decrypted_ssh} >> .authorized_keys'"
        shell(command)
    end
end

应该做哪些修改才能使这个 ssh 密钥解密并从加密的数据包中取出?任何建议将不胜感激!

【问题讨论】:

    标签: encryption chef-infra chef-recipe


    【解决方案1】:

    您需要从解密的数据包项中选择一个元素。

    完整示例:

    创建密钥和数据包项:

    $ openssl rand -base64 512 | tr -d '\r\n' > /tmp/encrypted_data_bag_secret
    
    $ knife data bag create mydatabag secretstuff --secret-file /tmp/encrypted_data_bag_secret -z
    

    内容:

    {
      "id": "secretstuff",
      "firstsecret": "must remain secret",
      "secondsecret": "also very secret"
    }
    

    验证:

    $ knife data bag show mydatabag secretstuff -z
    WARNING: Encrypted data bag detected, but no secret provided for decoding.  Displaying encrypted data.
    firstsecret:
      cipher:         aes-256-cbc
      encrypted_data: VafoT8Jc0lp7o4erCxz0WBrJYXjK6j+sJ+WGKJftX4BVF391rA1zWyHpToF0
      qvhn
    
      iv:             MhG09xFcwFAqX/IA3BusMg==
    
      version:        1
    id:           secretstuff
    secondsecret:
      cipher:         aes-256-cbc
      encrypted_data: Epj+2DuMOsf5MbDCOHEep7S12F6Z0kZ5yMuPv4a3Cr8dcQWCk/pd58OPGQgI
      UJ2J
    
      iv:             66AcYpoF4xw/rnYfPegPLw==
    
      version:        1
    

    cookbooks/test/recipes/test.rb

    decrypted = data_bag_item('mydatabag', 'secretstuff', IO.read('/tmp/encrypted_data_bag_secret'))
    log "firstsecret: #{decrypted['firstsecret']}"
    log "secondsecret: #{decrypted['secondsecret']}"
    

    执行配方

    # chef-client -z -o 'recipe[test::test]'
    ...
    Recipe: test::test
      * log[firstsecret: must remain secret] action write
    
      * log[secondsecret: also very secret] action write
    

    【讨论】:

    • recipe 在节点上运行时如何确定数据包的位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多