HashiCorp Vault 项目 - 编写额外的 key/value 对而不覆盖现有的

HashiCorp Vault project - write additional key/value pair without overwritting existing ones

当我将第一个 key/value 对放入 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

如何在不替换现有字段的情况下写入附加字段 - key/value 对 Vault?

每个键只能存储一个值。 (Confirmed by Vault developer) 您要么考虑合适的数据结构并向该键写入一个长字符串,要么为每个值使用一个键,如下所示:

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

Vault 不允许您附加到现有机密。这真的很烦人。您首先必须阅读之前的 key/values,然后在写入新的 key/values.

的同时将它们写回

这是一篇博客 post 我发现有人在谈论这个过程:https://www.fritz.ninja/extending-vault-cli-with-some-ruby-love/

本质上,他编写了自己的命令行工具,可以自动为您添加。他说他为自己的工作创建了这个工具,所以他不能分享代码,但他在 Github 上启动了一个名为 Vaulty 的开源版本:https://github.com/playpasshq/vaulty

带有 kv v2 引擎的 Vault 添加了此功能。

vault kv patch secret/item newkey=newvalue

vault kv put secret/hello foo=world excited=yes 即使使用 Key/value v1,您也应该能够设置多个,只要您在同一个 put 命令中指定两者即可。