如何查询HashiCorp Vault指定token可访问的所有路径及对应权限
HashiCorp Vault 普通token查询自身所有可访问路径说明
首先明确设计规则:
- Vault 原生没有提供单条命令可以直接输出指定token所有具备read、write、update等权限的可访问路径。这是因为Vault的权限校验采用deny优先、路径前缀匹配的规则,无法直接枚举所有有效路径。
- 普通token默认无法读取绑定的策略内容,这个是Vault的默认权限隔离设计,避免普通用户获取到整个Vault的路径配置、权限规则等敏感信息。你之前配置了对应策略的read权限仍报错,大概率是规则配置有误(比如路径拼写错误、存在更高优先级的deny规则覆盖),并非只有root用户能读取策略,只要管理员在策略中显式配置了对应路径的read权限,普通token就可以读取。
可落地的解决方法
- 管理员侧查询:直接使用具备管理员权限的token读取该token绑定的所有策略,解析HCL配置中的path规则,即可汇总出所有授权路径,操作命令如下:
# 先查询token绑定的策略 vault token lookup <目标token> | grep policies # 读取对应策略内容 vault policy read <策略名> - 普通用户侧查询:用已有的
vault token capabilities命令批量校验路径,你可以基于所在企业Vault的常用路径前缀编写遍历脚本,逐一路径查询权限,筛选出符合要求的路径,参考实现如下:# 示例:遍历kv存储根路径下的所有子路径,查询当前token的权限 for path in $(vault list -format=json kv/ | jq -r '.[]'); do caps=$(vault token capabilities kv/$path) echo "kv/$path: $caps" done - 普通用户自助读取策略:如果需要让普通用户可以直接查看自身绑定的策略内容,需要管理员在对应的策略中添加如下规则:
配置生效后,普通token就可以正常执行path "sys/policies/acl/[你的策略名]" { capabilities = ["read"] }vault policy read [你的策略名]命令获取策略内容,自行整理授权路径。
内容的提问来源于stack exchange,提问作者JPNagarajan
相关产品推荐
相关产品推荐

