Добавление ключей в Spring Boot vault

#spring-boot #hashicorp-vault #spring-vault #spring-cloud-vault-config

#spring-загрузка #hashicorp-хранилище #spring-vault #spring-cloud-vault-config

Вопрос:

Я внедряю Spring Boot vault. Всякий раз, когда я пытаюсь добавить более одного ключа, сохраняется только последний. Например, на этой странице https://www.javainuse.com/spring/cloud-vault , у них есть такой пример

введите описание изображения здесь

Но когда я затем запрашиваю хранилище, я вижу

 c:vault>vault kv get secret/javainuseapp
======= Data =======
Key           Value
---           -----
dbpassword    root

 

Если я установлю оба ключа одновременно, это, похоже, сработает

 c:vault>vault kv put secret/javainuseapp dbusername=root dbpassword=root
Success! Data written to: secret/javainuseapp

c:vault>vault kv get secret/javainuseapp
======= Data =======
Key           Value
---           -----
dbpassword    root
dbusername    root
 

Как добавить дополнительные ключи?

Ответ №1:

Это стандартное использование для API Vault, а следовательно, и для CLI, который является оболочкой вокруг привязок Golang вокруг REST API. Если вы хотите перезаписать пару ключ-значение с помощью командной строки Vault и сохранить прежние пары ключ-значение, вы должны дополнительно указать их, как вы делали в последнем примере:

 kv put secret/javainuseapp dbusername=root dbpassword=root
 

Все пары ключ-значение, указанные во время команды для определенного пути, будут сохранены в этой секретной версии (версии, соответствующей целому числу, равному количеству записей по этому пути, если предыдущие версии не будут удалены). Все пары ключ-значение по-прежнему сохраняются, но в предыдущей секретной версии. При выполнении команды vault kv get secret/javainuseapp вы извлекаете секрет в текущей версии, соответствующей самой последней записи.

Однако обратите внимание, что если политика или политики хранилища поддерживают patch операции с секретным путем для связанной роли / пользователя / и т. Д., То вы также можете выполнить patch подкоманду, чтобы обновить только одну пару ключ-значение, сохранив остальные в новейшей версии секретного пути.:

 vault kv patch secret/javainuseapp dbusername=root
 

и в этой ситуации dbpassword ключ будет сохранен в новейшей секретной версии.

Комментарии:

1. Спасибо. Вы хотите сказать, что если я put добавлю дополнительное значение, другие значения все равно будут сохранены, но get они не отображаются? Я пытался сделать a patch , но, видимо, мой kv находится на версии 1, и мне нужна версия 2. Как я могу включить поддержку patch ? Можете ли вы указать на какие-либо ресурсы, где это задокументировано более подробно?

2. Как написано выше в ответе, запись секрета по указанному пути содержит только указанные пары ключ-значение в новейшей версии, а чтение с kv get неявным извлечением только последней версии. Если вы извлекли несколько версий, это, вероятно, вызовет у вас проблемы.

3. Версия KV 1 устарела уже несколько лет, поэтому настоятельно рекомендуется обновить ее как можно скорее. Как описано в ответе, вы можете включить patch возможности в политике для секрета по этому пути. Я предположил, основываясь на вопросе, что вы разработали политики, но на всякий случай вот документация для получения дополнительной информации: vaultproject.io/docs/concepts/policies