2015-12-12 1 views
2

В файлах json есть зашифрованные пакеты данных с некоторыми значениями, которые мне нужно изменить. Мне нужно, чтобы запустить что-то вроде ...Зашифрованный файл json-файла для шеф-повара, как расшифровать и показать содержимое?

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

Но эта команда выдает ошибку: Не удалось найти или открыть файл «DATABAGNAME» в текущем каталоге или в "data_bags/шоу/овце-Дженкинса. Очевидно, что команда не совсем правильная. Мне нужна помощь в определении синтаксиса ...

Мне нужна команда, которую можно запустить из каталога chef-repo или data_bags, что позволит мне увидеть незашифрованные значения json-файла data_bags. В конечном счете, я хочу изменить некоторые значения, но получение незашифрованных значений было бы хорошим местом для начала :) спасибо!

+0

Я пришел к выводу, что у нас есть необычные установки, где мы работаем с файлами в GitHub, а не напрямую с сервером повара. Файлы в github затем втягиваются в chef-сервер через задание jenkins, которое запускается при изменениях. – Johnny5

ответ

3

Поскольку вы говорите о local json files Предположим, вы используете режим chef-zero/local-mode. Json-файл может быть действительно зашифрован, а содержимое может быть расшифровано ножом.

Полный пример:

Создать ключ и databag предмет:

$ 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 
+0

есть способ избежать шага редактора: используйте '$ mkdir -p data_bags/mydatabag/&& мешок данных ножа из файла my_data_bag /path/to/unencryptet_data_bag_item.json -z --secret-file/path/to/encrypted_data_bag_secret' => создаст элемент в 'data_bags/mydatabag/secretstuff.json' – ehaselwanter

1

Я думаю, вы сбиваете с толку команды и knife data bag from file. Первая предназначена для отображения данных с сервера, последняя предназначена для ее загрузки. У вас есть оба в командной строке.

+0

Целью является просмотр расшифрованного содержимого локального json data_bag. Можете ли вы указать мне в правильном направлении? – Johnny5

+0

Локальное содержимое всегда расшифровывается. Зашифрованные сумки зашифрованы на сервере шеф-повара, а не локально. Вы можете отображать расшифрованное содержимое с сервера, используя «show bag bag show» с '--secret' или друзьями. – coderanger

+0

«всегда уже расшифрованы». Я должен добавить, что это когда вы используете стандартный рабочий процесс. Если вы сделали какой-то фанковый бизнес с «knife -z», вам нужно будет использовать один из различных плагинов для ножей, который выполняет локальные криптографические операции, но не с шеф-поваром. «Мешок с данными для ножей -z -secret» может быть тем, что вы хотите? – coderanger

Смежные вопросы