HASHICORP VAULT: Как прочитать несколько элементов из файла и записать их в Vault

Я могу записать значения в Vault из файла JSON:

# cat secrets.json 
{ "value": "bGktzwatc" }
{ "value": "AGktzwatB" }

При попытке создать новое значение путем чтения из файла json Vault читает только первое значение из файла:

# ./vault write secret/passwd1 @secrets.json
Success! Data written to: secret/passwd1
# ./vault read secret/passwd1
Key                 Value
---                 -----
refresh_interval    768h0m0s
value               bGktzwatc

Можно ли прочитать несколько значений из файла и записать в разные ключи через хранилище?

Мое требование - добавление значений к нескольким ключам путем чтения из файла:

Key                 Value
---                 -----
refresh_interval    768h0m0s
value               bGktzwatc

Key                 Value
---                 -----
refresh_interval    768h0m0s
value               AGktzwatB

1 ответ

Решение

AFAIK, ты не можешь так это, как vault write команда ожидает key быть указанным как часть команды.

При попытке > vault write @data.json похоже, что не имеет значения, что файл вообще содержит, так как вместо wrong file format Вид ошибки - общий вывод о доступных параметрах для команды.


Может быть, это будет полезно: вы можете указать более одного значения для конкретного ключа:

# cat secrets.json 
{ "value1": "bGktzwatc", "value2": "AGktzwatB" }

тогда ключ будет содержать

Key                 Value
---                 -----
refresh_interval    768h0m0s
value1              bGktzwatc
value2              AGktzwatB

Если вы копируете данные с одного ключа на другой через файл, мне подходит этот подход:

vault read -format=json secret/mykey1 > file.json
cat file.json | jq '.data' | vault write secret/mykey2 -

Обратите внимание на использование jq принести "data" сначала подэлемент на верхний уровень.

Используя хранилище 1.1.3 и секретный движок, я могу записывать секреты из файла:

cat secrets.json | vault write secret/yoursecrets -

Это тоже работает:

vault write secret/yoursecrets @secrets.json

Обратите внимание, что если secrets.json был создан с использованием vault read, твои секреты в data поле ответа JSON, например { "data": {"username":"Mario", "password": "It's-a me, Mario!"} }.

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