加密的厨师数据包json文件,如何解密和显示内容?

时间:2015-12-12 00:16:41

标签: encryption chef databags

json文件中有加密数据包,我需要更改一些值。我需要运行像...这样的东西。

$ knife data bag from file show --secret-file path/to/secret DATABAGNAME --config path/to/knife.rb

但是此命令会出错:无法找到或打开文件' DATABAGNAME'在当前目录或' data_bags / show / ewe-jenkins'中。显然这个命令并不完全正确。我需要帮助搞清楚语法...

我需要一个可以从chef-repo或data_bags目录运行的命令,它允许我查看json文件data_bags的未加密值。最终我想改变一些值,但获得未加密的值将是一个很好的起点:)谢谢!

2 个答案:

答案 0 :(得分:4)

由于你在谈论本地 json文件,我假设你正在使用chef-zero / local-mode。 json文件可以确实加密,内容可以用刀解密。

完整示例:

创建密钥和数据库项目:

$ 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"
}

json文件确实已加密:

# cat data_bags/mydatabag/secretstuff.json 
{
  "id": "secretstuff",
  "firstsecret": {
    "encrypted_data": "VafoT8Jc0lp7o4erCxz0WBrJYXjK6j+sJ+WGKJftX4BVF391rA1zWyHpToF0\nqvhn\n",
    "iv": "MhG09xFcwFAqX/IA3BusMg==\n",
    "version": 1,
    "cipher": "aes-256-cbc"
  },
  "secondsecret": {
    "encrypted_data": "Epj+2DuMOsf5MbDCOHEep7S12F6Z0kZ5yMuPv4a3Cr8dcQWCk/pd58OPGQgI\nUJ2J\n",
    "iv": "66AcYpoF4xw/rnYfPegPLw==\n",
    "version": 1,
    "cipher": "aes-256-cbc"
  }
}

用刀显示解密的内容:

# knife data bag show mydatabag secretstuff -z --secret-file /tmp/encrypted_data_bag_secret
Encrypted data bag detected, decrypting with provided secret.
firstsecret:  must remain secret
id:           secretstuff
secondsecret: also very secret

答案 1 :(得分:1)

我认为你混淆了knife data bag showknife data bag from file命令。前者用于显示来自服务器的数据,后者用于上传数据。你在命令行上都有。