Hashicorp Vault KV V2策略通配符权限控制失效问题咨询
问题原因及解决方案
你遇到的问题核心是Vault的路径匹配规则:* 仅匹配单个路径段,无法覆盖多层子目录的路径。
你的策略里写的secretstuff/data/*只能匹配类似secretstuff/data/key这种单层子路径,但你要限制的secretstuff/some/sub/dirs/key对应的API路径是secretstuff/data/some/sub/dirs/key,包含多个子路径段,这个路径无法被secretstuff/data/*匹配到。此时Vault会匹配最长的有效路径——也就是*,而这个路径赋予了所有操作权限,所以你能正常读取密钥。
修复方案
把策略中的路径从secretstuff/data/*改成secretstuff/data/**,**会匹配任意数量的子路径段,覆盖所有层级的密钥路径:
policies = { ops = { "*" = { capabilities = ["create", "read", "update", "delete", "patch", "list", "sudo"] } "secretstuff/data/**" = { capabilities = ["deny"] } } }
更新策略后,再执行vault kv get secretstuff/some/sub/dirs/key就会返回预期的403权限错误。
补充说明Vault路径匹配规则
*:匹配单个路径段(例如a/*匹配a/b,但不匹配a/b/c)**:匹配任意数量的路径段(包括多层嵌套的子目录)- 策略匹配遵循最长路径优先原则,越具体的路径规则越先生效
内容的提问来源于stack exchange,提问作者nopcorn
相关产品推荐
相关产品推荐

