【问题标题】:Encrypted chef data bag json file, how to decrypt and show contents?加密的厨师数据包json文件,如何解密并显示内容?
【发布时间】:2015-12-13 00:28:52
【问题描述】:

json 文件中有加密的数据包,我需要更改一些值。我需要运行类似...

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

但是这个命令给出了错误:在当前目录或“data_bags/show/ewe-jenkins”中找不到或打开文件“DATABAGNAME”。所以显然这个命令不太正确。我需要帮助弄清楚语法...

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

【问题讨论】:

  • 我开始意识到我们有一个不寻常的设置,我们在 github 中处理文件,而不是直接使用 Chef 服务器。然后通过更改触发的 jenkins 作业将 github 中的文件拉入 chef-server。

标签: encryption chef-infra databags


【解决方案1】:

由于您在谈论 local json 文件,我假设您使用的是 chef-zero / local-mode。 json文件确实可以加密,内容可以用knife解密。

完整示例:

创建密钥和数据包项:

$ 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

【讨论】:

  • 有一种方法可以避免编辑步骤:使用$ mkdir -p data_bags/mydatabag/ && knife data bag from file my_data_bag /path/to/unencryptet_data_bag_item.json -z --secret-file /path/to/encrypted_data_bag_secret => 将创建项目到data_bags/mydatabag/secretstuff.json
【解决方案2】:

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

【讨论】:

  • 目的是查看本地json data_bag的解密内容。你能指出我正确的方向吗?
  • 本地内容总是已经解密。加密包仅在 Chef 服务器上加密,而不是在本地加密。您可以使用knife data bag show--secret 或朋友显示来自服务器的解密内容。
  • “总是已经解密” 我应该补充一点,那就是当您使用标准工作流程时。如果您使用 knife -z 进行了一些时髦的业务,您将需要使用执行本地加密操作但 Chef 不附带的各种刀插件之一。 knife data bag show -z --secret 可能是你想要的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2013-01-30
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多