#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
они не отображаются? Я пытался сделать apatch
, но, видимо, мой kv находится на версии 1, и мне нужна версия 2. Как я могу включить поддержкуpatch
? Можете ли вы указать на какие-либо ресурсы, где это задокументировано более подробно?2. Как написано выше в ответе, запись секрета по указанному пути содержит только указанные пары ключ-значение в новейшей версии, а чтение с
kv get
неявным извлечением только последней версии. Если вы извлекли несколько версий, это, вероятно, вызовет у вас проблемы.3. Версия KV 1 устарела уже несколько лет, поэтому настоятельно рекомендуется обновить ее как можно скорее. Как описано в ответе, вы можете включить
patch
возможности в политике для секрета по этому пути. Я предположил, основываясь на вопросе, что вы разработали политики, но на всякий случай вот документация для получения дополнительной информации: vaultproject.io/docs/concepts/policies