HASHICORP VAULT:如何从文件中读取多个项目并将它们写入 Vault

HASHICORP VAULT: How to read multiple items from a file and write them to Vault

我可以将值从 json 文件写入 Vault :

# 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

是否可以从一个文件中读取多个值并通过 vault 写入不同的密钥?

我的要求是通过从文件中读取来为多个键添加值:

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

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

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

使用保险库 1.1.3 和秘密引擎,我可以从文件中写入秘密:

cat secrets.json | vault write secret/yoursecrets -

这也有效:

vault write secret/yoursecrets @secrets.json

请注意,如果 secrets.json 是使用 vault read 生成的,您的秘密位于 JSON 响应的 data 字段中,例如{ "data": {"username":"Mario", "password": "It's-a me, Mario!"} }.

如果您通过文件将数据从一个键复制到另一个键,这种方法对我有用:

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

注意 jq 的使用首先将 "data" sub-element 带到顶层。