Проект HashiCorp Vault - напишите дополнительную пару ключ / значение, не перезаписывая существующие

Когда я помещаю первую пару ключ / значение в хранилище:

vault write secret/item/33 item_name='item_name' 

Это хорошо работает, и я получаю:

vault read secret/item/33

Key                     Value
---                     -----
refresh_interval        768h0m0s
item_name               item_name

Но если я хочу поставить дополнительное поле item_type:

vault write secret/item/33 item_type='item_type' 

Он перезаписывает существующий:

vault read secret/item/33

Key                     Value
---                     -----
refresh_interval        768h0m0s
item_type               item_type

Как записать в Vault дополнительную пару поле - ключ / значение без замены существующих?

6 ответов

Решение

Вы можете хранить только одно значение для каждого ключа. ( Подтверждено разработчиком Vault) Либо вы думаете о подходящей структуре данных и пишите длинную строку для этого ключа, либо вы используете один ключ для каждого значения, которое может выглядеть следующим образом:

vault write secret/item/33/name item_name='item_name'
vault write secret/item/33/type item_type='item_type'

Vault с KV v2 добавил эту способность.

'секретный патч vault kv /item newkey=newvalue'

Vault позволяет добавлять несколько пар ключ=значение; так:

      vault kv put -mount=kv demo/keys \
  GOODGUY="ClintEastwood" \
  BADGUY="LeeVanCleef" \
  UGLYGUY="EliWallach"

Хранилище не позволяет вам добавить существующий секрет. Это на самом деле очень раздражает. Сначала вы должны прочитать предыдущие ключ / значения, а затем записать их обратно одновременно с записью в новом ключе / значениях.

Вот сообщение в блоге, которое я нашел, где кто-то говорит об этом процессе: https://www.fritz.ninja/extending-vault-cli-with-some-ruby-love/

По сути, он написал свой собственный инструмент командной строки, который автоматически добавляет данные для вас. Он говорит, что создал инструмент для своей работы, поэтому он не может делиться кодом, но он запустил на Github версию с открытым исходным кодом под названием Vaulty: https://github.com/playpasshq/vaulty

vault kv put secret/hello foo=world возбуждено = да, даже с ключом / значением v1 вы должны иметь возможность установить несколько, если вы укажете оба в одной команде put.

Опоздал на ОП. В любом случае, я создаю файл JSON с уровнями и подуровнями данных (вложенные объекты, функция недоступна только при вводе простых входных данных KEY=VALUE), а затем загружаю файл в KV Engine через оператор @, например $ vault kv put -mount=secret foo @data.json, и, конечно же, правильно обрабатывать права доступа к файлам и права собственности. Всякий раз, когда мне нужно повернуть значения, просто измените файл JSON, а затем повторно загрузите его.

ИМО, это даже лучше, чем просто вводить значения после команды, потому что таким образом они остаются в истории bash.

Другие вопросы по тегам