HashiCorp Vault ACL策略配置:仅允许访问指定KV2子树并隐藏其他
解决HashiCorp Vault 1.12.2 KV2引擎仅显示指定子树的ACL策略配置
核心思路
KV2密钥引擎的权限控制依赖**元数据路径(root/metadata/)和数据路径(root/data/)**的分离。要隐藏不需要的子树,必须精准控制元数据路径的list权限:拒绝根元数据路径的list,同时单独允许目标子树(apps)的元数据路径list和读写权限,直接拒绝其他子树的所有权限。
具体ACL策略配置
创建如下HCL格式的策略(假设策略名为apps-only):
# 拒绝根元数据路径的list权限,防止看到所有子树 path "root/metadata/" { capabilities = ["deny"] } # 允许apps子树的元数据list和read,确保能看到并访问apps下的密钥结构 path "root/metadata/apps/*" { capabilities = ["list", "read"] } # 允许apps子树的数据读取(如果需要写入可添加"write") path "root/data/apps/*" { capabilities = ["read"] } # 额外允许apps子树本身的list权限,确保UI/CLI能显示apps目录 path "root/metadata/apps" { capabilities = ["list"] }
配置验证
- 将策略绑定到目标用户/角色:
vault policy write apps-only apps-only.hcl # 假设用户名为app-user,绑定策略 vault write auth/userpass/users/app-user policies=apps-only password=xxx - 用该用户登录后测试:
- 执行
vault kv list root/会返回权限拒绝,看不到ops和test - 执行
vault kv list root/apps/可以正常列出apps下的密钥 - Vault UI中只会显示
apps子树,ops和test完全不可见
- 执行
关键说明
- 不要给
root/或root/metadata/全局list权限,否则会暴露所有子树 - 必须单独授权
root/metadata/apps的list权限,否则UI/CLI无法识别apps子树的存在 - 拒绝规则优先于允许规则,所以根路径的
deny会覆盖其他可能的宽泛权限
内容的提问来源于stack exchange,提问作者Probius
相关产品推荐
相关产品推荐

