如何使用hvac库列出HashiCorp Vault指定路径下的文件夹
问题排查及解决方法
核心错误原因汇总
- 未显式指定KV引擎的挂载路径,hvac默认会查找
secret挂载点下的路径 - KV引擎版本和调用的接口版本不匹配
- list操作的路径末尾没有加斜杠,Vault会识别为读取单条secret而非列举路径内容
- 所用Token没有对应路径的list权限
对应场景代码示例
场景1:customerkeys是单独挂载的KV v1引擎
vault_token = <token> vault_url = <url> client = hvac.Client(url=vault_url, token=vault_token) # 显式指定mount_point为引擎挂载路径,path填空代表列举引擎根路径 secrets_list = client.secrets.kv.v1.list_secrets( path = '', mount_point = 'customerkeys' ) print("secrets list: ", secrets_list)
场景2:customerkeys是单独挂载的KV v2引擎
secrets_list = client.secrets.kv.v2.list_secrets( path = '', mount_point = 'customerkeys' ) print("secrets list: ", secrets_list)
场景3:customerkeys是默认secret挂载点下的子文件夹
# KV v1版本,path末尾必须加斜杠 secrets_list = client.secrets.kv.v1.list_secrets( path = 'customerkeys/' )
通用client.list方法的正确写法
如果用通用list接口,KV v2版本需要额外加上metadata路径层:
# KV v1场景 list_folders = client.list('customerkeys/') # KV v2场景,必须补全metadata路径 list_folders = client.list('customerkeys/metadata/') print('List of folders: ', list_folders)
内容的提问来源于stack exchange,提问作者puffypanda10
相关产品推荐
相关产品推荐

