我能够从 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
如果您通过文件将数据从一个密钥复制到另一个密钥,这种方法对我有用:
vault read -format=json secret/mykey1 > file.json
cat file.json | jq '.data' | vault write secret/mykey2 -
请注意使用
jq
首先将 "data"
子元素带到顶层。
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
使用Vault 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!"} }
。