HashiCorp Vault 1.7.0如何限制用户可在UI中分配/删除的策略范围
HashiCorp Vault 可分配策略范围限制配置方案
可以实现限制用户仅能分配指定范围的策略,你之前配置未生效的核心原因是denied_parameters默认仅匹配参数的精确等值,当提交的policies数组同时包含合法策略和高权限策略时无法触发拦截,同时缺少对policies参数的正向白名单校验。
核心配置调整
1. 替换用户组路径的权限规则
使用allowed_parameters做正向白名单限制,仅允许policies数组中出现指定的合法策略,同时保留用户组实体成员调整的权限:
path "/identity/group/id/2c97485a-754f-657a-5a8b-62b08a3ce8cb" { capabilities = ["sudo", "read", "update", "create", "list"] allowed_parameters = { # 两层中括号表示policies数组的所有元素都必须属于白名单列表,允许任意合法组合 "policies" = [["it_team_leader", "it_user", "ui_settings", "personal_storage"]] # 允许调整用户组成员、组名、元数据等其他常规字段,空数组表示允许任意值 "member_entity_ids" = [] "name" = [] "metadata" = [] "type" = [] } # 可选:拦截所有未在上方允许列表中的参数,避免权限漏配 denied_parameters = { "*" = [] } }
2. 调整策略读取权限
仅开放合法策略的读取权限供UI下拉列表加载,隐藏所有高权限策略,从前端层面避免误选:
# 开放指定策略的只读权限,供UI展示可选列表 path "/sys/policies/acl/it_team_leader" { capabilities = ["read", "list"] } path "/sys/policies/acl/it_user" { capabilities = ["read", "list"] } path "/sys/policies/acl/ui_settings" { capabilities = ["read", "list"] } path "/sys/policies/acl/personal_storage" { capabilities = ["read", "list"] } # 拦截所有其他策略的读取权限,高权限策略不会出现在UI可选列表中 # 精确路径优先级高于通配符路径,不会覆盖上方的合法策略权限 path "/sys/policies/acl/*" { capabilities = ["deny"] }
注意事项
- 该配置兼容Vault 1.7.0免费版,无需升级或使用企业版功能
- 配置更新后需要重新生成对应用户的token,已有token不会自动同步新权限
- 规则生效后,即使用户通过API手动提交包含高权限策略的请求,也会被Vault直接返回403拒绝,不仅限制UI操作,API层面也会生效
- 后续新增可分配策略时,只需同步更新
allowed_parameters的policies白名单、添加对应策略的读取权限即可。
内容的提问来源于stack exchange,提问作者Vdoo
相关产品推荐
相关产品推荐

