如何在Hashicorp Vault中从指定路径获取特定KV键值对
在Hashicorp Vault中获取KV路径下的特定键值对
你之前的请求方式不对,因为Hashicorp Vault的KV v2引擎(你用的kv/data/路径说明是v2版本)里,kv/data/mysecrets对应的是一个包含多键的秘密条目,直接加路径后缀/key1会被识别成查找名为mysecrets/key1的独立秘密条目,而你并没有创建这个条目,所以返回空错误。
正确的获取方式有两种:
1. 使用HTTP API的fields查询参数
直接在原请求URL后追加?fields=要获取的键名,比如获取key1的请求应为:
http://localhost:8200/v1/kv/data/mysecrets?fields=key1
示例响应结构:
{ "request_id": "xxx", "lease_id": "", "renewable": false, "lease_duration": 0, "data": { "data": { "key1": "你的key1对应值" }, "metadata": { "created_time": "xxx", "custom_metadata": null, "deletion_time": "", "destroyed": false, "version": 1 } }, "wrap_info": null, "warnings": null, "auth": null }
如果要同时获取多个键,用逗号分隔键名:
http://localhost:8200/v1/kv/data/mysecrets?fields=key1,key2
2. 使用Vault CLI命令
如果用Vault命令行工具,直接指定-field参数即可:
vault kv get -field=key1 kv/mysecrets
执行后会直接输出key1对应的取值,无需手动解析JSON。
补充:KV v1引擎的差异
如果你用的是KV v1引擎(路径不带/data/),每个键是独立的存储路径,比如存储key1时需存到kv/mysecrets/key1,获取时直接请求:
http://localhost:8200/v1/kv/mysecrets/key1
但从你的请求路径判断,你用的是KV v2,所以优先按上面的方法操作。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

