You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定Vault中的指定路径,如何查询有权访问的主体及对应权限

Vault 给定路径反向查询权限关联主体操作指南

CLI 实现方案

步骤1:筛选所有包含目标路径的Policy

Vault 原生没有直接反向查询路径对应Policy的内置命令,可通过遍历所有Policy规则匹配目标路径实现:

  • 首先拉取全量Policy列表:policies=$(vault policy list)
  • 执行遍历匹配,替换下方TARGET_PATH为你需要查询的实际路径即可:
# 替换为目标查询路径,支持通配匹配
TARGET_PATH="secret/data/app/prod/"
for policy in $policies; do
  # 匹配路径同时输出对应Policy的权限规则
  policy_content=$(vault policy read $policy)
  if echo "$policy_content" | grep -q "$TARGET_PATH"; then
    echo -e "\n匹配到Policy:$policy"
    echo "对应路径权限规则:"
    echo "$policy_content" | grep -A5 -B2 "$TARGET_PATH"
  fi
done

执行后会直接输出所有包含目标路径的Policy名称,以及对应路径的权限配置(比如允许的操作能力)。

步骤2:查询绑定目标Policy的主体

Vault的Policy绑定和认证方法、身份实体/组关联,不同场景查询方式如下:

  • 查询直接绑定Policy的Token:
    先拉取全量Token访问器:accessors=$(vault list -format=json auth/token/accessors | jq -r '.[]')
    遍历查询绑定的Policy:
    TARGET_POLICY="你的目标Policy名称"
    for acc in $accessors; do
      vault token lookup -accessor $acc | grep -q $TARGET_POLICY && echo "匹配Token访问器:$acc"
    done
    
  • 查询Userpass认证绑定目标Policy的用户:
    TARGET_POLICY="你的目标Policy名称"
    users=$(vault list -format=json auth/userpass/users | jq -r '.[]')
    for user in $users; do
      vault read auth/userpass/users/$user | grep -q $TARGET_POLICY && echo "匹配用户:$user"
    done
    
  • 查询身份实体绑定的目标Policy:
    TARGET_POLICY="你的目标Policy名称"
    entities=$(vault list -format=json identity/entity/id | jq -r '.[]')
    for et in $entities; do
      vault read identity/entity/id/$et | grep -q $TARGET_POLICY && echo "匹配实体ID:$et"
    done
    
  • 查询身份组绑定的目标Policy:
    TARGET_POLICY="你的目标Policy名称"
    groups=$(vault list -format=json identity/group/id | jq -r '.[]')
    for gp in $groups; do
      vault read identity/group/id/$gp | grep -q $TARGET_POLICY && echo "匹配组ID:$gp"
    done
    

注意:其他认证方法(比如LDAP、Kubernetes、OIDC等)的查询逻辑和上方一致,只需要替换对应认证方法的路径前缀即可。

UI 实现方案

  1. 登录Vault UI后,点击顶部导航栏的Policies标签,查看当前所有ACL Policy列表。
  2. 逐个点击Policy名称查看详情,匹配你要查询的目标路径,记录所有匹配成功的Policy名称,同时可以直接看到该Policy对目标路径开放的操作权限。
  3. 回到顶部导航栏点击Access标签,查询绑定目标Policy的主体:
    • 若要查询普通认证用户:在「Auth Methods」区域选择你使用的认证方式(比如Userpass、LDAP等),逐个查看用户的配置详情,匹配绑定的Policy列表即可。
    • 若要查询身份实体/组:点击左侧菜单栏的「Identities」,分别切换「Entities」和「Groups」标签,逐个查看条目绑定的Policy列表完成匹配。

注意事项

  • 匹配路径时需要遵循Vault的ACL匹配规则,比如Policy中配置的secret/*会匹配所有secret/开头的路径,即使你查询的是子路径,这类规则也需要计入结果。
  • 如果Policy中使用了ACL模板变量(比如{{identity.entity.id}}、{{identity.groups.names}}等),匹配时需要对变量部分做通配处理,避免漏匹配。

内容的提问来源于stack exchange,提问作者dzieciou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:06:06