有没有办法在 Hashicorp Vault 中搜索值?我正在尝试编写 Golang 代码来搜索并列出值出现在保险库中的所有位置。它类似于 golang 在目录上的 walk 函数。有没有人有一个好的方法?我正在考虑使用并发来搜索保险库中的值。谢谢下面是我想出的代码示例。我正在研究如何通过使用并发来加快速度。有没有办法同时遍历一个目录?func walkDir(client *api.Client, path string) { var value *api.Secret var err error if path != "" { value, err = client.Logical().List(path) } else { path = vault_path value, err = client.Logical().List(path) } if err != nil { fmt.Println(err) } var datamap map[string]interface{} datamap = value.Data data := datamap["keys"].([]interface{}) for _, item := range data { itemString := item.(string) if strings.HasSuffix(itemString, "/") { walkDir(client, path+itemString) } else { //its a secret data := read(client, path+itemString) if *searchKey!="" && searchForKey(data,*searchKey){ fmt.Println(path + itemString) } if *searchValue!="" && searchForValue(data,*searchValue){ fmt.Println(path + itemString) } } }}func read(client *api.Client, path string) map[string]interface{} { value, err := client.Logical().Read(path) if err != nil { fmt.Println(err) } values := value.Data return values}func searchForValue(mapp map[string]interface{}, searchValue string) bool { for _, value := range mapp { if searchValue == value { return true } } return false}func searchForKey(mapp map[string]interface{}, searchKey string) bool { for key := range mapp { if searchKey == key { return true } } return false}
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
您可以LIST
在 Vault 中“目录”(我假设您只是在查看kv
引擎)。所以把它当作一个普通的文件系统来对待:从根开始,列出条目,检查每个条目的内容是否有那个值,然后遍历每个条目,列出它的内容,等等。
https://www.vaultproject.io/api-docs/secret/kv/kv-v1#list-secrets
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消