将密钥添加到 Spring Boot vault

Adding keys to Spring Boot vault

我正在实施 Spring 启动库。每当我尝试添加多个键时,只会保存最后一个。例如,在这个页面,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

如何添加额外的密钥?

这是 Vault API 的标准用法,因此也是 CLI 的标准用法,它是围绕 REST API 的 Golang 绑定的包装器。如果你想用 Vault CLI 覆盖一个键值对并保留以前的键值对,那么你必须像在最后一个例子中那样额外指定它们:

kv put secret/javainuseapp dbusername=root dbpassword=root

在特定路径的命令期间指定的所有键值对都将存储在该秘密版本(该版本对应于等于该路径写入次数的整数,除非删除以前的版本)。所有键值对仍然存储,但在以前的秘密版本。当您执行命令 vault kv get secret/javainuseapp 时,您正在检索与最近写入对应的当前版本的秘密。

但是,请注意,如果 Vault 策略或多个策略支持对关联 role/user/etc 的秘密路径进行 patch 操作,那么您也可以执行 patch 子命令以仅在最新版本的秘密中更新一个键值对,同时保留其他键值对:

vault kv patch secret/javainuseapp dbusername=root

在这种情况下,dbpassword 密钥将保留在最新的秘密版本中。