配置策略允许Userpass认证用户修改自身密码
Vault用户无法修改自身密码的问题修复
你的策略存在两处关键问题,导致用户无法修改自己的密码,以下是修复方案:
问题分析
- 认证路径不匹配:你写的
auth/example-user-secret/users/{{identity.entity.name}}路径,大概率不符合实际使用的认证引擎标准路径格式。比如常用的userpass认证引擎,用户密码修改的路径是auth/userpass/users/<用户名>,如果你的认证挂载点不是userpass,需要先确认挂载点名称。 - 身份变量可能不匹配:
{{identity.entity.name}}是实体名称,若未配置实体别名和用户名的映射,这个值可能和用户登录的用户名不一致,导致路径匹配失败。
修正后的策略示例
假设你使用的是userpass认证引擎,且用户实体名称和用户名一致,修正后的策略如下:
path "example-user-secret/*" { capabilities = ["list"] } path "auth/userpass/users/{{identity.entity.name}}" { capabilities = ["update"] allowed_parameters = { "password" = [] } }
额外注意事项
- 若你的认证挂载点是
example-user-secret(比如通过vault auth enable -path=example-user-secret userpass启用),将上述策略中的userpass替换为example-user-secret即可。 - 若
identity.entity.name和用户名不一致,需要改用实体别名的用户名变量:先通过vault auth list -format=json获取认证挂载点的accessor值,然后将路径改为auth/example-user-secret/users/{{identity.entity.aliases.<accessor值>.name}}。 - 策略修改后,执行
vault policy write <你的用户策略名> <策略文件路径>重新加载策略,让用户重新登录后尝试修改密码。
内容的提问来源于stack exchange,提问作者Henri Nzatse
相关产品推荐
相关产品推荐

