在 Hashicorp 保险库中,如何从我在某个路径上定义的一组 KV 中获取特定的 KV 对?
例如,如果我在 /mysecrets 下定义多个键值对,我必须这样做:
http://localhost:8200/v1/kv/data/mysecrets
...并获取所有对。
如果我尝试:
http://localhost:8200/v1/kv/data/mysecrets/key1
我明白了
{
"errors": []
}
在 Hashicorp 保险库中,如何从我在某个路径上定义的一组 KV 中获取特定的 KV 对?
例如,如果我在 /mysecrets 下定义多个键值对,我必须这样做:
http://localhost:8200/v1/kv/data/mysecrets
...并获取所有对。
如果我尝试:
http://localhost:8200/v1/kv/data/mysecrets/key1
我明白了
{
"errors": []
}
当您使用 HashiCorp Vault 的 KV 版本 2 机密引擎时,从路径中获取特定密钥
/mysecrets
不是通过将密钥名称附加到路径来完成的。整个机密(即,该路径下的所有密钥值对)是使用 API 一次性获取的:GET /v1/kv/data/mysecrets
这将返回如下结构:
data.data.object
因此,如果您只想要 key1,则需要获取整个密钥并通过编程提取 key1为什么下面的不起作用?
/mysecrets/key1
该路径仅当您将机密直接存储在以下位置时才有效:那么你可以这样做
并收到
API 文档已确认,这些端点和参数仅支持检索特定版本和引擎挂载路径的 KV2 密钥。如果您只想返回密钥中的单个键值对,则必须解析 HTTP 响应。例如,
jq
如果正在执行命令,则可以使用此方法执行此任务,因为响应将是 JSON 格式的字符串并输出到标准输出。例如,带有密钥的curl
密钥可以像下面这样输出到标准输出:my_secret
foo
如果您喜欢这种方式,也可以使用各种 Vault SDK 来解析机密中仅单个键值对的响应。